Merge lp:~mskalka/juju-ci-tools/maas-manager-fix into lp:juju-ci-tools

Proposed by Michael Skalka
Status: Merged
Merged at revision: 1945
Proposed branch: lp:~mskalka/juju-ci-tools/maas-manager-fix
Merge into: lp:juju-ci-tools
Diff against target: 97 lines (+38/-24)
1 file modified
assess_network_health.py (+38/-24)
To merge this branch: bzr merge lp:~mskalka/juju-ci-tools/maas-manager-fix
Reviewer Review Type Date Requested Status
Curtis Hovey (community) code Approve
Review via email: mp+320704@code.launchpad.net

Description of the change

Fixes https://bugs.launchpad.net/juju-ci-tools/+bug/1674425 and restructures main() to ensure MaaS spaces error is captured and proper cleanup is performed.

To post a comment you must log in.
Revision history for this message
Curtis Hovey (sinzui) wrote :

Thank you.

review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'assess_network_health.py'
2--- assess_network_health.py 2017-03-21 20:36:23 +0000
3+++ assess_network_health.py 2017-03-22 18:23:40 +0000
4@@ -250,12 +250,15 @@
5 default_route = re.search(r'(default via )+([\d\.]+)\s+',
6 json.dumps(routes[0]))
7 if default_route:
8+ ip = default_route.group(2)
9+ log.info('Default route for unit {}: {}'.format(unit[0], ip))
10 rc = client.run(
11- ['ping -c1 -q {}'.format(default_route.group(2))],
12+ ['ping -c1 -q {}'.format(ip)],
13 machines=[unit[0]])
14 sucess = re.search(r'(1 received)', json.dumps(rc[0]))
15 if not sucess:
16- log.error('{} unable to ping default route'.format(unit))
17+ log.error(
18+ '{} unable to ping default route'.format(unit[0]))
19 continue
20 else:
21 log.error("Default route not found")
22@@ -554,9 +557,9 @@
23 def setup_spaces(maas, bundle=None):
24 """Setup MaaS spaces to test charm bindings.
25
26- Reads from the bundle
27- file and pulls out the required spaces, then adds those spaces to
28- the MaaS cluster using our MaaS controller wrapper.
29+ Reads from the bundle file and pulls out the required spaces,
30+ then adds those spaces to the MaaS cluster using our MaaS
31+ controller wrapper.
32
33 :param maas: MaaS manager object
34 :param bundle: Bundle supplied in test
35@@ -608,34 +611,45 @@
36 return parser.parse_args(argv)
37
38
39+def start_test(client, args, maas):
40+ test = AssessNetworkHealth(args)
41+ try:
42+ test.assess_network_health(client, args.bundle, args.model,
43+ args.reboot, args.series, maas)
44+ finally:
45+ if args.model:
46+ test.cleanup(client)
47+ log.info('Cleanup complete.')
48+
49+
50+def start_maas_test(client, args):
51+ try:
52+ with maas_account_from_boot_config(client.env) as manager:
53+ start_test(client, args, manager)
54+ except subprocess.CalledProcessError as e:
55+ log.warning(
56+ 'Could not connect to MaaS controller due to error:\n{}'.format(e))
57+ log.warning('Attempting test without ensuring MaaS spaces.')
58+ start_test(client, args, None)
59+
60+
61 def main(argv=None):
62 args = parse_args(argv)
63 configure_logging(args.verbose)
64- test = AssessNetworkHealth(args)
65- if args.model is None:
66+ if args.model:
67+ client = client_for_existing(args.juju_bin,
68+ os.environ['JUJU_HOME'])
69+ start_test(client, args, None)
70+ else:
71 bs_manager = BootstrapManager.from_args(args)
72 if args.maas:
73- # Excluded_spaces breaks tests on oil maas
74 bs_manager.client.excluded_spaces = set()
75 bs_manager.client.reserved_spaces = set()
76 with bs_manager.booted_context(args.upload_tools):
77- manager = None
78 if args.maas:
79- manager = maas_account_from_boot_config(bs_manager.client.env)
80- test.assess_network_health(bs_manager.client, bundle=args.bundle,
81- series=args.series, reboot=args.reboot,
82- maas=manager)
83- else:
84- client = client_for_existing(args.juju_bin,
85- os.environ['JUJU_HOME'])
86- try:
87- test.assess_network_health(client, bundle=args.bundle,
88- target_model=args.model,
89- series=args.series,
90- reboot=args.reboot)
91- finally:
92- test.cleanup(client)
93- log.info('Cleanup complete.')
94+ start_maas_test(bs_manager.client, args)
95+ else:
96+ start_test(bs_manager.client, args, None)
97 return 0
98
99

Subscribers

People subscribed via source and target branches