aboutsummaryrefslogtreecommitdiff
path: root/linaro-ami/linaro-ami
blob: 1faac90092d008e82785ab03700c089c5a74e068 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/env python
import sys
import logging
import os
import optparse
from ConfigParser import ConfigParser

from aws_controller import AwsController, InstanceRunFailedError
from remote_executor import RemoteExecutor, RemoteCommandFailedError

import linaro_ami

DEFAULT_AMI_TYPE = "build-slave"

if __name__ == "__main__":

    logging.basicConfig()
    logging.getLogger("linaro-ami").setLevel(logging.DEBUG)
    optparser = optparse.OptionParser("%prog (create|delete|list) <options>")
    optparser.add_option(
        "--config", default="linaro-ami.conf", help="Config file (%default)")
    optparser.add_option(
        "--type", default=DEFAULT_AMI_TYPE,
        help="List images of type (%default, use empty for any) [list]")
    optparser.add_option(
        "--descr",
        help="Extra AMI description [create]")
    optparser.add_option(
        "-K", "--private-key", metavar="FILE",
        help="Private key file (env:EC2_PRIVATE_KEY)")
    optparser.add_option(
        "-k", "--key", metavar="KEY",
        help="Name of EC2-registered key provided by --private-key")

    options, args = optparser.parse_args(sys.argv[1:])
    if len(args) < 1:
        optparser.error("Wrong number of arguments")

    if not options.private_key:
        options.private_key = os.environ.get("EC2_PRIVATE_KEY")

    configuration = ConfigParser()
    configuration.read(options.config)
    aws_controller = AwsController()
    remote_executor = RemoteExecutor()

    controller = linaro_ami.LinaroAMI(configuration, aws_controller,
                                      remote_executor,
                                      "ubuntu", options.private_key,
                                      options)
    if args[0] == "create":
        if len(args) != 2:
            optparser.error("Usage: %s create <AMI template name from config>"
                            % sys.argv[0])
        if not controller.has_ami(args[1]):
            optparser.error("AMI template '%s' not found" % args[1])
        ami_id = controller.command_create(args[1])
        print "Created AMI: %s" % ami_id
    elif args[0] == "delete":
        # TODO
        controller.command_delete()
    elif args[0] == "list":
        controller.command_list()
    else:
        optparser.error("Unknown command: " + args[0])