715.1.1
by Aaron Bentley
Add write_industrial_test_metadata.py |
1 |
#!/usr/bin/env python
|
2 |
from argparse import ArgumentParser |
|
3 |
import json |
|
4 |
||
1836.4.5
by Aaron Bentley
Reduce jujupy imports. |
5 |
from jujupy.client import ( |
1699.1.3
by Aaron Bentley
Update describe_substrate to take env rather than raw config. |
6 |
describe_substrate, |
1850.1.8
by Aaron Bentley
Rename EnvJujuClient to ModelClient, provide a backwards-compatibility alias. |
7 |
ModelClient, |
716.1.4
by Aaron Bentley
Include environment info in metadata. |
8 |
SimpleEnvironment, |
9 |
)
|
|
715.1.1
by Aaron Bentley
Add write_industrial_test_metadata.py |
10 |
|
11 |
||
12 |
def parse_args(args=None): |
|
13 |
"""Parse commandline arguments into a Namespace."""
|
|
14 |
parser = ArgumentParser() |
|
715.1.2
by Aaron Bentley
Updates from review. |
15 |
parser.add_argument('buildvars', |
16 |
help="Path to the new client's buildvars.json.") |
|
716.1.4
by Aaron Bentley
Include environment info in metadata. |
17 |
parser.add_argument('env', help='The name of the environment.') |
715.1.2
by Aaron Bentley
Updates from review. |
18 |
parser.add_argument('output', help='Path of the file to write.') |
715.1.1
by Aaron Bentley
Add write_industrial_test_metadata.py |
19 |
return parser.parse_args(args) |
20 |
||
21 |
||
716.1.4
by Aaron Bentley
Include environment info in metadata. |
22 |
def make_metadata(buildvars_path, env_name): |
715.1.1
by Aaron Bentley
Add write_industrial_test_metadata.py |
23 |
"""Return metadata about the clients as json-compatible objects.
|
24 |
||
25 |
:param buildbars_path: Path to the buildvars.json file for the new client.
|
|
716.1.4
by Aaron Bentley
Include environment info in metadata. |
26 |
:param env_name: Name of the environment being used.
|
715.1.1
by Aaron Bentley
Add write_industrial_test_metadata.py |
27 |
"""
|
1850.1.8
by Aaron Bentley
Rename EnvJujuClient to ModelClient, provide a backwards-compatibility alias. |
28 |
old_version = ModelClient.get_version() |
716.1.4
by Aaron Bentley
Include environment info in metadata. |
29 |
env = SimpleEnvironment.from_config(env_name) |
715.1.1
by Aaron Bentley
Add write_industrial_test_metadata.py |
30 |
with open(buildvars_path) as buildvars_file: |
31 |
buildvars = json.load(buildvars_file) |
|
32 |
metadata = { |
|
33 |
'old_client': { |
|
34 |
'type': 'release', |
|
35 |
'version': old_version |
|
36 |
},
|
|
37 |
'new_client': { |
|
38 |
'type': 'build', |
|
39 |
'buildvars': buildvars, |
|
40 |
},
|
|
716.1.4
by Aaron Bentley
Include environment info in metadata. |
41 |
'environment': { |
42 |
'name': env_name, |
|
1699.1.3
by Aaron Bentley
Update describe_substrate to take env rather than raw config. |
43 |
'substrate': describe_substrate(env) |
716.1.4
by Aaron Bentley
Include environment info in metadata. |
44 |
},
|
715.1.1
by Aaron Bentley
Add write_industrial_test_metadata.py |
45 |
}
|
46 |
return metadata |
|
47 |
||
48 |
||
49 |
def main(argv=None): |
|
50 |
"""Generate the date and write it to disk."""
|
|
51 |
args = parse_args(argv) |
|
716.1.4
by Aaron Bentley
Include environment info in metadata. |
52 |
metadata = make_metadata(args.buildvars, args.env) |
715.1.1
by Aaron Bentley
Add write_industrial_test_metadata.py |
53 |
with open(args.output, 'w') as output_file: |
54 |
json.dump(metadata, output_file, indent=2, sort_keys=True) |
|
55 |
output_file.write('\n') |
|
56 |
||
57 |
||
58 |
if __name__ == '__main__': |
|
59 |
main() |