~andrewjbeach/juju-ci-tools/get-juju-dict

« back to all changes in this revision

Viewing changes to get_ami.py

  • Committer: Curtis Hovey
  • Date: 2016-04-10 15:23:18 UTC
  • Revision ID: curtis@canonical.com-20160410152318-ntfymsv9eiw63vt2
Addedd daily streams to get_amy.py get_ami.py tests/test_get_ami.py

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
 
10
10
 
11
11
STREAM_INDEX = "http://cloud-images.ubuntu.com/releases/streams/v1/index.json"
 
12
DAILY_INDEX = "http://cloud-images.ubuntu.com/daily/streams/v1/index.json"
12
13
ENDPOINT_TEMPLATE = "endpoint~ec2.{region}.amazonaws.com"
13
14
 
14
15
DEFAULT_PARAMS = {
18
19
}
19
20
 
20
21
 
21
 
def query_ami(series, arch, region=None, **kwargs):
 
22
def query_ami(series, arch, region=None, stream='released', **kwargs):
22
23
    """Lookup newest ami for given series and arch, plus optional params."""
23
24
    if region is None:
24
25
        region = "us-east-1"
 
26
    if stream == 'daily':
 
27
        index = DAILY_INDEX
 
28
    else:
 
29
        index = STREAM_INDEX
25
30
    sstream_params = ["arch=" + arch, "release=" + series]
26
31
    for k in sorted(DEFAULT_PARAMS):
27
32
        v = kwargs.pop(k, DEFAULT_PARAMS[k])
32
37
    if kwargs:
33
38
        raise ValueError("Unknown kwargs: {}".format(", ".join(kwargs)))
34
39
    endpoint_info = ENDPOINT_TEMPLATE.format(region=region)
35
 
    cmdline = ["sstream-query", STREAM_INDEX, endpoint_info]
 
40
    cmdline = ["sstream-query", index, endpoint_info]
36
41
    cmdline.extend(sstream_params)
37
42
    cmdline.extend(["--output-format", "%(id)s"])
38
43
    try:
52
57
    parser = ArgumentParser('Get an up to date ami.')
53
58
    parser.add_argument('series', help='Ubuntu series for image')
54
59
    parser.add_argument('arch', help='Architecture for image')
 
60
    parser.add_argument('--stream', choices=['released', 'daily'],
 
61
                        default='released',
 
62
                        help='The stream to select the image from')
55
63
    parser.add_argument('--region', help='Region to retrieve image for')
56
64
    parser.add_argument('--label')
57
65
    parser.add_argument('--root-store')
62
70
def main():
63
71
    args = parse_args()
64
72
    try:
65
 
        print(query_ami(args.series, args.arch, args.region, label=args.label,
 
73
        print(query_ami(args.series, args.arch, region=args.region,
 
74
                        stream=args.stream, label=args.label,
66
75
                        root_store=args.root_store, virt=args.virt))
67
76
    except ValueError as err:
68
77
        print(err, file=sys.stderr)