blob: 4a1cfa2daddffa0a2df8e6a49c38e99afee015bc [file] [log] [blame]
Hanna Arhipova71ecc272019-08-20 14:54:22 +03001import pytest
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +03002import sys
3import os
Hanna Arhipova71ecc272019-08-20 14:54:22 +03004
5from tcp_tests import logger
6from tcp_tests import settings
Hanna Arhipova71ecc272019-08-20 14:54:22 +03007
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +03008sys.path.append(os.getcwd())
9try:
10 from tcp_tests.fixtures import config_fixtures
11 from tcp_tests.managers import underlay_ssh_manager
12 from tcp_tests.managers import saltmanager as salt_manager
13except ImportError:
14 print("ImportError: Run the application from the tcp-qa directory or "
15 "set the PYTHONPATH environment variable to directory which contains"
16 " ./tcp_tests")
17 sys.exit(1)
Hanna Arhipova71ecc272019-08-20 14:54:22 +030018LOG = logger.logger
19
20
Hanna Arhipovad35a29b2019-09-04 13:24:06 +030021def has_only_similar(values_by_nodes):
22 """
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +030023 :param values_by_nodes: dict
Hanna Arhipovad35a29b2019-09-04 13:24:06 +030024 :return: bool, True if all items in the dict have similar values
25 """
26 values = list(values_by_nodes.values())
27 return all(value == values[0] for value in values)
28
29
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +030030def get_control_plane_targets():
31 config = config_fixtures.config()
32 underlay = underlay_ssh_manager.UnderlaySSHManager(config)
33 saltmanager = salt_manager.SaltManager(config, underlay)
Hanna Arhipovafbcea852019-10-03 13:24:53 +030034 targets = list()
35 try:
36 targets += saltmanager.run_state(
37 "I@keystone:server", 'test.ping')[0]['return'][0].keys()
38 targets += saltmanager.run_state(
39 "I@nginx:server and not I@salt:master",
40 "test.ping")[0]['return'][0].keys()
41 except BaseException as err:
42 LOG.warning("Can't retrieve data from Salt. \
43 Maybe cluster is not deployed completely.\
44 Err: {}".format(err))
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +030045
46 # TODO: add check for Manila existence
47 # # Commented to avoid fails during OpenStack updates.
48 # # Anyway we don't have deployments with Manila yet
49 # targets.append('share*')
50 # TODO: add check for Tenant Telemetry existence
51 targets.append('mdb*')
52 # TODO: add check for Barbican existence
53 targets.append('kmn*')
54 return targets
55
56
57@pytest.fixture
58def switch_to_proposed_pipelines(reclass_actions, salt_actions):
59 reclass_actions.add_key(
60 "parameters._param.jenkins_pipelines_branch",
61 "release/proposed/2019.2.0",
62 "cluster/*/infra/init.yml"
63 )
Hanna Arhipova7cfeb072019-10-11 15:04:10 +030064
65 proposed_branch = "http://mirror.mirantis.com/update/proposed/"
66 url_param = "parameters._param.linux_system_repo_update_url"
67 reclass_actions.add_key(url_param, proposed_branch,
68 "cluster/*/infra/init.yml")
69 reclass_actions.add_key(url_param, proposed_branch,
70 "cluster/*/openstack/init.yml")
71 reclass_actions.add_key(url_param, proposed_branch,
72 "cluster/*/stacklight/init.yml")
73 reclass_actions.add_key(url_param, proposed_branch,
74 "cluster/*/ceph/init.yml")
75
76 salt_actions.run_state("*", "saltutil.refresh_pillar")
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +030077 salt_actions.enforce_state("I@jenkins:client", "jenkins.client")
78
79
Hanna Arhipova71ecc272019-08-20 14:54:22 +030080class TestUpdateMcpCluster(object):
81 """
82 Following the steps in
Hanna Arhipova94a8abe2019-08-22 14:11:46 +030083 https://docs.mirantis.com/mcp/master/mcp-operations-guide/update-upgrade/minor-update.html#minor-update
Hanna Arhipova71ecc272019-08-20 14:54:22 +030084 """
85
86 @pytest.mark.grab_versions
87 @pytest.mark.parametrize("_", [settings.ENV_NAME])
88 @pytest.mark.run_mcp_update
Hanna Arhipova17b2c102019-09-06 16:44:17 +030089 def test_update_drivetrain(self, salt_actions, drivetrain_actions,
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +030090 show_step, _, switch_to_proposed_pipelines):
Hanna Arhipova71ecc272019-08-20 14:54:22 +030091 """Updating DriveTrain component to release/proposed/2019.2.0 version
92
93 Scenario:
Hanna Arhipova17b2c102019-09-06 16:44:17 +030094 1. Add workaround for PROD-32751
Hanna Arhipova71ecc272019-08-20 14:54:22 +030095 2. Run job git-mirror-downstream-mk-pipelines
96 3. Run job git-mirror-downstream-pipeline-library
97 4. If jobs are passed then start 'Deploy - upgrade MCP Drivetrain'
98
Hanna Arhipovad35a29b2019-09-04 13:24:06 +030099 Duration: ~70 min
Hanna Arhipova71ecc272019-08-20 14:54:22 +0300100 """
101 salt = salt_actions
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300102 dt = drivetrain_actions
Hanna Arhipova71ecc272019-08-20 14:54:22 +0300103
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300104 # #################### Add workaround for PROD-32751 #################
Hanna Arhipova71ecc272019-08-20 14:54:22 +0300105 show_step(1)
106
Hanna Arhipova71ecc272019-08-20 14:54:22 +0300107 # FIXME: workaround for PROD-32751
108 salt.cmd_run("cfg01*", "cd /srv/salt/reclass; git add -u && \
109 git commit --allow-empty -m 'Cluster model update'")
110
111 # ################### Downstream mk-pipelines #########################
112 show_step(2)
113 job_name = 'git-mirror-downstream-mk-pipelines'
114 job_parameters = {
115 'BRANCHES': 'release/proposed/2019.2.0'
116 }
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300117 update_pipelines = dt.start_job_on_cid_jenkins(
Hanna Arhipova71ecc272019-08-20 14:54:22 +0300118 job_name=job_name,
119 job_parameters=job_parameters)
120
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300121 assert update_pipelines == 'SUCCESS'
Hanna Arhipova71ecc272019-08-20 14:54:22 +0300122
123 # ################### Downstream pipeline-library ####################
124 show_step(3)
125 job_name = 'git-mirror-downstream-pipeline-library'
126 job_parameters = {
127 'BRANCHES': 'release/proposed/2019.2.0'
128 }
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300129 update_pipeline_library = dt.start_job_on_cid_jenkins(
Hanna Arhipova71ecc272019-08-20 14:54:22 +0300130 job_name=job_name,
131 job_parameters=job_parameters)
132
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300133 assert update_pipeline_library == 'SUCCESS'
Hanna Arhipova71ecc272019-08-20 14:54:22 +0300134
135 # ################### Start 'Deploy - upgrade MCP Drivetrain' job #####
136 show_step(4)
137
Hanna Arhipova71ecc272019-08-20 14:54:22 +0300138 job_name = 'upgrade-mcp-release'
139 job_parameters = {
Hanna Arhipovad35a29b2019-09-04 13:24:06 +0300140 'GIT_REFSPEC': 'release/proposed/2019.2.0',
Hanna Arhipova71ecc272019-08-20 14:54:22 +0300141 'MK_PIPELINES_REFSPEC': 'release/proposed/2019.2.0',
142 'TARGET_MCP_VERSION': '2019.2.0'
143 }
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300144 update_drivetrain = dt.start_job_on_cid_jenkins(
Hanna Arhipova71ecc272019-08-20 14:54:22 +0300145 job_name=job_name,
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300146 job_parameters=job_parameters,
Hanna Arhipovad35a29b2019-09-04 13:24:06 +0300147 build_timeout=90*60)
Hanna Arhipova71ecc272019-08-20 14:54:22 +0300148
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300149 assert update_drivetrain == 'SUCCESS'
Hanna Arhipova71ecc272019-08-20 14:54:22 +0300150
Hanna Arhipova94a8abe2019-08-22 14:11:46 +0300151 @pytest.mark.grab_versions
152 @pytest.mark.parametrize("_", [settings.ENV_NAME])
Hanna Arhipova71ecc272019-08-20 14:54:22 +0300153 @pytest.mark.run_mcp_update
Hanna Arhipovacc3759b2019-08-28 16:01:11 +0300154 def test_update_glusterfs(self, salt_actions, reclass_actions,
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300155 drivetrain_actions, show_step, _):
Hanna Arhipovacc3759b2019-08-28 16:01:11 +0300156 """ Upgrade GlusterFS
157 Scenario:
158 1. In infra/init.yml in Reclass, add the glusterfs_version parameter
159 2. Start linux.system.repo state
160 3. Start "update-glusterfs" job
161 4. Check version for GlusterFS servers
162 5. Check version for GlusterFS clients
163
164 """
165 salt = salt_actions
166 reclass = reclass_actions
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300167 dt = drivetrain_actions
Hanna Arhipovacc3759b2019-08-28 16:01:11 +0300168
Hanna Arhipovacc3759b2019-08-28 16:01:11 +0300169 # ############## Change reclass ######################################
170 show_step(1)
171 reclass.add_key(
172 "parameters._param.linux_system_repo_mcp_glusterfs_version_number",
173 "5",
174 "cluster/*/infra/init.yml"
175 )
176 # ################# Run linux.system state ###########################
177 show_step(2)
178 salt.enforce_state("*", "linux.system.repo")
179
180 # ############## Start deploy-upgrade-galera job #####################
181 show_step(3)
Hanna Arhipovacc3759b2019-08-28 16:01:11 +0300182 job_name = 'update-glusterfs'
183
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300184 update_glusterfs = dt.start_job_on_cid_jenkins(
Hanna Arhipovacc3759b2019-08-28 16:01:11 +0300185 job_name=job_name,
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300186 build_timeout=40 * 60)
Hanna Arhipovacc3759b2019-08-28 16:01:11 +0300187
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300188 assert update_glusterfs == 'SUCCESS'
Hanna Arhipovacc3759b2019-08-28 16:01:11 +0300189
190 # ################ Check GlusterFS version for servers ##############
191 show_step(4)
192 gluster_server_versions_by_nodes = salt.cmd_run(
193 "I@glusterfs:server",
194 "glusterd --version|head -n1")[0]
195
196 assert has_only_similar(gluster_server_versions_by_nodes),\
197 gluster_server_versions_by_nodes
198
199 # ################ Check GlusterFS version for clients ##############
200 show_step(5)
201 gluster_client_versions_by_nodes = salt.cmd_run(
202 "I@glusterfs:client",
203 "glusterfs --version|head -n1")[0]
204
205 assert has_only_similar(gluster_client_versions_by_nodes), \
206 gluster_client_versions_by_nodes
207
208 @pytest.mark.grab_versions
209 @pytest.mark.parametrize("_", [settings.ENV_NAME])
210 @pytest.mark.run_mcp_update
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300211 def test_update_galera(self, salt_actions, reclass_actions,
212 drivetrain_actions, show_step, _):
Hanna Arhipova94a8abe2019-08-22 14:11:46 +0300213 """ Upgrade Galera automatically
214
215 Scenario:
216 1. Include the Galera upgrade pipeline job to DriveTrain
217 2. Apply the jenkins.client state on the Jenkins nodes
218 3. set the openstack_upgrade_enabled parameter to true
219 4. Refresh pillars
220 5. Add repositories with new Galera packages
221 6. Start job from Jenkins
222 """
223 salt = salt_actions
224 reclass = reclass_actions
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300225 dt = drivetrain_actions
Hanna Arhipova94a8abe2019-08-22 14:11:46 +0300226 # ################### Enable pipeline #################################
227 show_step(1)
228 reclass.add_class(
229 "system.jenkins.client.job.deploy.update.upgrade_galera",
230 "cluster/*/cicd/control/leader.yml")
231 show_step(2)
232 salt.enforce_state("I@jenkins:client", "jenkins.client")
233
234 # ############### Enable automatic upgrade ############################
235 show_step(3)
236 reclass.add_bool_key("parameters._param.openstack_upgrade_enabled",
237 "True",
238 "cluster/*/infra/init.yml")
239
240 show_step(4)
Hanna Arhipova7cfeb072019-10-11 15:04:10 +0300241 salt.run_state("dbs*", "saltutil.refresh_pillar")
Hanna Arhipova94a8abe2019-08-22 14:11:46 +0300242
243 # ############# Add repositories with new Galera packages #######
244 show_step(5)
245 salt.enforce_state("dbs*", "linux.system.repo")
246 salt.enforce_state("cfg*", "salt.master")
247
Hanna Arhipova94a8abe2019-08-22 14:11:46 +0300248 # #################### Login Jenkins on cid01 node ###################
249 show_step(6)
250
Hanna Arhipova94a8abe2019-08-22 14:11:46 +0300251 job_name = 'deploy-upgrade-galera'
252 job_parameters = {
253 'INTERACTIVE': 'false'
254 }
255
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300256 update_galera = dt.start_job_on_cid_jenkins(
Hanna Arhipova94a8abe2019-08-22 14:11:46 +0300257 job_name=job_name,
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300258 job_parameters=job_parameters,
259 build_timeout=40 * 60)
Hanna Arhipova94a8abe2019-08-22 14:11:46 +0300260
Hanna Arhipova17b2c102019-09-06 16:44:17 +0300261 assert update_galera == 'SUCCESS'
Hanna Arhipova1fcaf442019-09-06 15:30:45 +0300262
263 @pytest.fixture
264 def disable_automatic_failover_neutron_for_test(self, salt_actions):
265 """
266 On each OpenStack controller node, modify the neutron.conf file
267 Restart the neutron-server service
268 """
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +0300269 def comment_line(node, file_name, word):
Hanna Arhipova1fcaf442019-09-06 15:30:45 +0300270 """
271 Adds '#' before the specific line in specific file
272
273 :param node: string, salt target of node where the file locates
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +0300274 :param file_name: string, full path to the file
Hanna Arhipova1fcaf442019-09-06 15:30:45 +0300275 :param word: string, the begin of line which should be commented
276 :return: None
277 """
278 salt_actions.cmd_run(node,
279 "sed -i 's/^{word}/#{word}/' {file}".
280 format(word=word,
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +0300281 file=file_name))
Hanna Arhipova1fcaf442019-09-06 15:30:45 +0300282
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +0300283 def add_line(node, file_name, line):
Hanna Arhipova1fcaf442019-09-06 15:30:45 +0300284 """
285 Appends line to the end of file
286
287 :param node: string, salt target of node where the file locates
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +0300288 :param file_name: string, full path to the file
Hanna Arhipova1fcaf442019-09-06 15:30:45 +0300289 :param line: string, line that should be added
290 :return: None
291 """
292 salt_actions.cmd_run(node, "echo {line} >> {file}".format(
293 line=line,
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +0300294 file=file_name))
Hanna Arhipova1fcaf442019-09-06 15:30:45 +0300295
296 neutron_conf = '/etc/neutron/neutron.conf'
297 neutron_server = "I@neutron:server"
298 # ######## Create backup for config file #######################
299 salt_actions.cmd_run(
300 neutron_server,
301 "cp -p {file} {file}.backup".format(file=neutron_conf))
302
303 # ## Change parameters in neutron.conf'
304 comment_line(neutron_server, neutron_conf,
305 "allow_automatic_l3agent_failover",)
306 comment_line(neutron_server, neutron_conf,
307 "allow_automatic_dhcp_failover")
308 add_line(neutron_server, neutron_conf,
309 "allow_automatic_dhcp_failover = false")
310 add_line(neutron_server, neutron_conf,
311 "allow_automatic_l3agent_failover = false")
312
313 # ## Apply changed config to the neutron-server service
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +0300314 result = salt_actions.cmd_run(neutron_server,
315 "service neutron-server restart")
Hanna Arhipova1fcaf442019-09-06 15:30:45 +0300316 # TODO: add check that neutron-server is up and running
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +0300317 yield result
Hanna Arhipova1fcaf442019-09-06 15:30:45 +0300318 # ## Revert file changes
319 salt_actions.cmd_run(
320 neutron_server,
321 "cp -p {file}.backup {file}".format(file=neutron_conf))
322 salt_actions.cmd_run(neutron_server,
323 "service neutron-server restart")
324
325 @pytest.fixture
326 def disable_neutron_agents_for_test(self, salt_actions):
327 """
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +0300328 Disable the neutron services before the test and
329 enable it after test
Hanna Arhipova1fcaf442019-09-06 15:30:45 +0300330 """
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +0300331 result = salt_actions.cmd_run("I@neutron:server", """
Hanna Arhipova1fcaf442019-09-06 15:30:45 +0300332 service neutron-dhcp-agent stop && \
333 service neutron-l3-agent stop && \
334 service neutron-metadata-agent stop && \
335 service neutron-openvswitch-agent stop
336 """)
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +0300337 yield result
338 #
Hanna Arhipova1fcaf442019-09-06 15:30:45 +0300339 salt_actions.cmd_run("I@neutron:server", """
340 service neutron-dhcp-agent start && \
341 service neutron-l3-agent start && \
342 service neutron-metadata-agent start && \
343 service neutron-openvswitch-agent start
344 """)
345 # TODO: add check that all services are UP and running
346
347 @pytest.mark.grab_versions
348 @pytest.mark.parametrize("_", [settings.ENV_NAME])
349 @pytest.mark.run_mcp_update
350 def test_update_rabbit(self, salt_actions, reclass_actions,
351 drivetrain_actions, show_step, _,
352 disable_automatic_failover_neutron_for_test,
353 disable_neutron_agents_for_test):
354 """ Updates RabbitMQ
355 Scenario:
356 1. Include the RabbitMQ upgrade pipeline job to DriveTrain
357 2. Add repositories with new RabbitMQ packages
358 3. Start Deploy - upgrade RabbitMQ pipeline
359
360 Updating RabbitMq should be completed before the OpenStack updating
361 process starts
362 """
363 salt = salt_actions
364 reclass = reclass_actions
365 dt = drivetrain_actions
366
367 # ####### Include the RabbitMQ upgrade pipeline job to DriveTrain ####
368 show_step(1)
369 reclass.add_class(
370 "system.jenkins.client.job.deploy.update.upgrade_rabbitmq",
371 "cluster/*/cicd/control/leader.yml")
372 salt.enforce_state("I@jenkins:client", "jenkins.client")
373
374 reclass.add_bool_key("parameters._param.openstack_upgrade_enabled",
375 "True",
376 "cluster/*/infra/init.yml")
377 salt.run_state("I@rabbitmq:server", "saltutil.refresh_pillar")
378
379 # ########### Add repositories with new RabbitMQ packages ############
380 show_step(2)
381 salt.enforce_state("I@rabbitmq:server", "linux.system.repo")
382
383 # ########### Start Deploy - upgrade RabbitMQ pipeline ############
384 show_step(3)
385 job_parameters = {
386 'INTERACTIVE': 'false'
387 }
388
389 update_rabbit = dt.start_job_on_cid_jenkins(
390 job_name='deploy-upgrade-rabbitmq',
391 job_parameters=job_parameters,
392 build_timeout=40 * 60
393 )
394 assert update_rabbit == 'SUCCESS'
Hanna Arhipovad35a29b2019-09-04 13:24:06 +0300395
396 @pytest.mark.grab_versions
397 @pytest.mark.parametrize("_", [settings.ENV_NAME])
398 @pytest.mark.run_mcp_update
399 def test_update_ceph(self, salt_actions, drivetrain_actions, show_step, _):
400 """ Updates Ceph to the latest minor version
401
402 Scenario:
403 1. Add workaround for unhealth Ceph
404 2. Start ceph-upgrade job with default parameters
405 3. Check Ceph version for all nodes
406
407 https://docs.mirantis.com/mcp/master/mcp-operations-guide/update-upgrade/minor-update/ceph-update.html
408 """
409 salt = salt_actions
410 dt = drivetrain_actions
411
412 # ###################### Add workaround for unhealth Ceph ############
413 show_step(1)
414 salt.cmd_run("I@ceph:radosgw",
415 "ceph config set 'mon pg warn max object skew' 20")
416 # ###################### Start ceph-upgrade pipeline #################
417 show_step(2)
418 job_parameters = {}
419
420 update_ceph = dt.start_job_on_cid_jenkins(
421 job_name='ceph-update',
422 job_parameters=job_parameters)
423
424 assert update_ceph == 'SUCCESS'
425
426 # ########## Verify Ceph version #####################################
427 show_step(3)
428
429 ceph_version_by_nodes = salt.cmd_run(
430 "I@ceph:* and not I@ceph:monitoring and not I@ceph:backup:server",
431 "ceph version")[0]
432
433 assert has_only_similar(ceph_version_by_nodes), ceph_version_by_nodes
Hanna Arhipovaeb3a2112019-09-13 18:45:21 +0300434
435
436class TestOpenstackUpdate(object):
437
438 @pytest.mark.grab_versions
439 @pytest.mark.run_mcp_update
440 def test__pre_update__enable_pipeline_job(self,
441 reclass_actions, salt_actions,
442 show_step):
443 """ Enable pipeline in the Drivetrain
444
445 Scenario:
446 1. Add deploy.update.* classes to the reclass
447 2. Start jenkins.client salt state
448
449 """
450 salt = salt_actions
451 reclass = reclass_actions
452 show_step(1)
453 reclass.add_class("system.jenkins.client.job.deploy.update.upgrade",
454 "cluster/*/cicd/control/leader.yml")
455
456 reclass.add_class(
457 "system.jenkins.client.job.deploy.update.upgrade_ovs_gateway",
458 "cluster/*/cicd/control/leader.yml")
459
460 reclass.add_class(
461 "system.jenkins.client.job.deploy.update.upgrade_compute",
462 "cluster/*/cicd/control/leader.yml")
463
464 show_step(2)
465 r, errors = salt.enforce_state("I@jenkins:client", "jenkins.client")
466 assert errors is None
467
468 @pytest.mark.grab_versions
469 @pytest.mark.parametrize('target', get_control_plane_targets())
470 @pytest.mark.run_mcp_update
471 def test__update__control_plane(self, drivetrain_actions,
472 switch_to_proposed_pipelines, target):
473 """Start 'Deploy - upgrade control VMs' for specific node
474 """
475 job_parameters = {
476 "TARGET_SERVERS": target,
477 "INTERACTIVE": False}
478 upgrade_control_pipeline = drivetrain_actions.start_job_on_cid_jenkins(
479 job_name="deploy-upgrade-control",
480 job_parameters=job_parameters)
481
482 assert upgrade_control_pipeline == 'SUCCESS'
483
484 @pytest.mark.grab_versions
485 @pytest.mark.run_mcp_update
486 def test__update__data_plane(self, drivetrain_actions):
487 """Start 'Deploy - upgrade OVS gateway'
488 """
489 job_parameters = {
490 "INTERACTIVE": False}
491 upgrade_data_pipeline = drivetrain_actions.start_job_on_cid_jenkins(
492 job_name="deploy-upgrade-ovs-gateway",
493 job_parameters=job_parameters)
494
495 assert upgrade_data_pipeline == 'SUCCESS'