Merge lp:~veebers/juju-ci-tools/remove_-c_from_migration into lp:juju-ci-tools

Proposed by Christopher Lee
Status: Merged
Merged at revision: 2013
Proposed branch: lp:~veebers/juju-ci-tools/remove_-c_from_migration
Merge into: lp:juju-ci-tools
Diff against target: 145 lines (+73/-15)
2 files modified
assess_model_migration.py (+59/-15)
tests/test_assess_model_migration.py (+14/-0)
To merge this branch: bzr merge lp:~veebers/juju-ci-tools/remove_-c_from_migration
Reviewer Review Type Date Requested Status
Burton Swan (community) Approve
Review via email: mp+323728@code.launchpad.net

Commit message

Remove the -c argument from migrate command due to changes in 2.2-beta4.

Description of the change

Remove the -c argument from migrate command due to changes in 2.2-beta4.

Retains it's backwards compatibility with version checks.

To post a comment you must log in.
Revision history for this message
Burton Swan (burton-swan) wrote :

Code looks good to me.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'assess_model_migration.py'
--- assess_model_migration.py 2017-03-21 22:35:12 +0000
+++ assess_model_migration.py 2017-05-07 20:29:33 +0000
@@ -5,6 +5,7 @@
55
6import argparse6import argparse
7from contextlib import contextmanager7from contextlib import contextmanager
8from distutils.version import LooseVersion
8import logging9import logging
9import os10import os
10from subprocess import CalledProcessError11from subprocess import CalledProcessError
@@ -91,6 +92,10 @@
91 return not isinstance(client, ModelClient2_0)92 return not isinstance(client, ModelClient2_0)
9293
9394
95def after_22beta4(client_version):
96 return LooseVersion(client_version) >= LooseVersion('2.2-beta4')
97
98
94def parse_args(argv):99def parse_args(argv):
95 """Parse all arguments."""100 """Parse all arguments."""
96 parser = argparse.ArgumentParser(101 parser = argparse.ArgumentParser(
@@ -337,9 +342,15 @@
337 attempt_client.env.environment,342 attempt_client.env.environment,
338 attempt_client.env.user_name)343 attempt_client.env.user_name)
339344
340 source_client.controller_juju(345 if after_22beta4(source_client.version):
341 'migrate',346 source_client.juju(
342 (user_qualified_model_name, dest_client.env.controller.name))347 'migrate',
348 (user_qualified_model_name, dest_client.env.controller.name),
349 include_e=False)
350 else:
351 source_client.controller_juju(
352 'migrate',
353 (user_qualified_model_name, dest_client.env.controller.name))
343354
344 migration_client = dest_client.clone(355 migration_client = dest_client.clone(
345 dest_client.env.clone(user_qualified_model_name))356 dest_client.env.clone(user_qualified_model_name))
@@ -394,12 +405,30 @@
394 source_client, dest_client, include_user_name=False):405 source_client, dest_client, include_user_name=False):
395 log.info('Initiating migration process')406 log.info('Initiating migration process')
396 if include_user_name:407 if include_user_name:
397 model_name = '{}/{}'.format(408 if after_22beta4(source_client.version):
398 source_client.env.user_name, source_client.env.environment)409 model_name = '{}:{}/{}'.format(
399 else:410 source_client.env.controller.name,
400 model_name = source_client.env.environment411 source_client.env.user_name,
401 source_client.controller_juju(412 source_client.env.environment)
402 'migrate', (model_name, dest_client.env.controller.name))413 else:
414 model_name = '{}/{}'.format(
415 source_client.env.user_name, source_client.env.environment)
416 else:
417 if after_22beta4(source_client.version):
418 model_name = '{}:{}'.format(
419 source_client.env.controller.name,
420 source_client.env.environment)
421 else:
422 model_name = source_client.env.environment
423
424 if after_22beta4(source_client.version):
425 source_client.juju(
426 'migrate',
427 (model_name, dest_client.env.controller.name),
428 include_e=False)
429 else:
430 source_client.controller_juju(
431 'migrate', (model_name, dest_client.env.controller.name))
403 migration_target_client = dest_client.clone(432 migration_target_client = dest_client.clone(
404 dest_client.env.clone(source_client.env.environment))433 dest_client.env.clone(source_client.env.environment))
405 wait_for_model(migration_target_client, source_client.env.environment)434 wait_for_model(migration_target_client, source_client.env.environment)
@@ -490,10 +519,15 @@
490 """519 """
491 test_model, application = deploy_simple_server_to_new_model(520 test_model, application = deploy_simple_server_to_new_model(
492 source_client, 'rollmeback')521 source_client, 'rollmeback')
493 test_model.controller_juju(522 if after_22beta4(source_client.version):
494 'migrate',523 test_model.juju(
495 (test_model.env.environment,524 'migrate',
496 dest_client.env.controller.name))525 (test_model.env.environment, dest_client.env.controller.name),
526 include_e=False)
527 else:
528 test_model.controller_juju(
529 'migrate',
530 (test_model.env.environment, dest_client.env.controller.name))
497 # Once migration has started interrupt it531 # Once migration has started interrupt it
498 wait_for_migrating(test_model)532 wait_for_migrating(test_model)
499 log.info('Disrupting target controller to force rollback')533 log.info('Disrupting target controller to force rollback')
@@ -599,9 +633,19 @@
599 appears in test logs.633 appears in test logs.
600 """634 """
601 try:635 try:
602 args = ['-c', source_client.env.controller.name,636 if after_22beta4(source_client.version):
637 args = [
638 '{}:{}'.format(
639 source_client.env.controller.name,
640 source_client.env.environment),
641 dest_client.env.controller.name
642 ]
643 else:
644 args = [
645 '-c', source_client.env.controller.name,
603 source_client.env.environment,646 source_client.env.environment,
604 dest_client.env.controller.name]647 dest_client.env.controller.name
648 ]
605 log_output = source_client.get_juju_output(649 log_output = source_client.get_juju_output(
606 'migrate', *args, merge_stderr=True, include_e=False)650 'migrate', *args, merge_stderr=True, include_e=False)
607 except CalledProcessError as e:651 except CalledProcessError as e:
608652
=== modified file 'tests/test_assess_model_migration.py'
--- tests/test_assess_model_migration.py 2017-02-25 06:09:40 +0000
+++ tests/test_assess_model_migration.py 2017-05-07 20:29:33 +0000
@@ -88,6 +88,20 @@
88 "Test model migration feature", fake_stdout.getvalue())88 "Test model migration feature", fake_stdout.getvalue())
8989
9090
91class TestAfter22Beta4(TestCase):
92
93 def test_returns_True_when_newer(self):
94 self.assertTrue(amm.after_22beta4('2.2-beta8-xenial-amd64'))
95 self.assertTrue(amm.after_22beta4('2.3-beta4-xenial-amd64'))
96
97 def test_returns_True_when_equal(self):
98 self.assertTrue(amm.after_22beta4('2.2-beta4-xenial-amd64'))
99
100 def test_returns_False_when_older(self):
101 self.assertFalse(amm.after_22beta4('2.1-beta8-xenial-amd64'))
102 self.assertFalse(amm.after_22beta4('2.2-beta2-xenial-amd64'))
103
104
91class TestDeploySimpleResourceServer(TestCase):105class TestDeploySimpleResourceServer(TestCase):
92106
93 def test_deploys_with_resource(self):107 def test_deploys_with_resource(self):

Subscribers

People subscribed via source and target branches