Statistics
| Branch: | Tag: | Revision:

root / ci / snf-ci @ dae06cfc

History | View | Annotate | Download (4.5 kB)

1 3fbbd85d Christos Stavrakakis
#!/usr/bin/env python
2 3fbbd85d Christos Stavrakakis
3 33ad9a0d Ilias Tsitsimpis
# Invalid name for type module. pylint: disable-msg=C0103
4 33ad9a0d Ilias Tsitsimpis
5 3fbbd85d Christos Stavrakakis
"""
6 33ad9a0d Ilias Tsitsimpis
Continuous Integration script for Synnefo.
7 3fbbd85d Christos Stavrakakis
"""
8 33ad9a0d Ilias Tsitsimpis
9 ee2419c5 Christos Stavrakakis
import os
10 3fbbd85d Christos Stavrakakis
from utils import SynnefoCI
11 3fbbd85d Christos Stavrakakis
from optparse import OptionParser
12 3fbbd85d Christos Stavrakakis
13 3fbbd85d Christos Stavrakakis
CREATE_SERVER_CMD = "create"
14 3fbbd85d Christos Stavrakakis
BUILD_SYNNEFO_CMD = "build"
15 124c300e Christos Stavrakakis
BUILD_DOCS_SYNNEFO_CMD = "docs"
16 3fbbd85d Christos Stavrakakis
DEPLOY_SYNNEFO_CMD = "deploy"
17 3fbbd85d Christos Stavrakakis
TEST_SYNNEFO_CMD = "test"
18 3fbbd85d Christos Stavrakakis
RUN_BURNIN_CMD = "burnin"
19 3fbbd85d Christos Stavrakakis
ALL_CMDS = "all"
20 3fbbd85d Christos Stavrakakis
21 3fbbd85d Christos Stavrakakis
AVAILABLE_COMMANDS = [
22 3fbbd85d Christos Stavrakakis
    CREATE_SERVER_CMD,
23 3fbbd85d Christos Stavrakakis
    BUILD_SYNNEFO_CMD,
24 124c300e Christos Stavrakakis
    BUILD_DOCS_SYNNEFO_CMD,
25 3fbbd85d Christos Stavrakakis
    DEPLOY_SYNNEFO_CMD,
26 3fbbd85d Christos Stavrakakis
    TEST_SYNNEFO_CMD,
27 3fbbd85d Christos Stavrakakis
    RUN_BURNIN_CMD,
28 3fbbd85d Christos Stavrakakis
]
29 3fbbd85d Christos Stavrakakis
30 3fbbd85d Christos Stavrakakis
CLEAN_CONFIG_CMDS = [CREATE_SERVER_CMD, ALL_CMDS]
31 3fbbd85d Christos Stavrakakis
32 3fbbd85d Christos Stavrakakis
USAGE = """usage: %%prog [options] command
33 3fbbd85d Christos Stavrakakis
34 3fbbd85d Christos Stavrakakis
command:
35 46a07468 Christos Stavrakakis
    * %s: Create the slave server
36 85bcc8da Christos Stavrakakis
    * %s: Create debian packages for Synnefo in the created server
37 124c300e Christos Stavrakakis
    * %s: Create documentation for Synnefo in the created server
38 3fbbd85d Christos Stavrakakis
    * %s: Deploy Synnefo in created server
39 3fbbd85d Christos Stavrakakis
    * %s: Run Synnefo unittests
40 3fbbd85d Christos Stavrakakis
    * %s: Run snf-burnin in the deployed Synnefo
41 3fbbd85d Christos Stavrakakis
42 3fbbd85d Christos Stavrakakis
    * %s: Run all the available commands
43 3fbbd85d Christos Stavrakakis
""" % tuple([CREATE_SERVER_CMD,
44 3fbbd85d Christos Stavrakakis
             BUILD_SYNNEFO_CMD,
45 124c300e Christos Stavrakakis
             BUILD_DOCS_SYNNEFO_CMD,
46 3fbbd85d Christos Stavrakakis
             DEPLOY_SYNNEFO_CMD,
47 3fbbd85d Christos Stavrakakis
             TEST_SYNNEFO_CMD,
48 3fbbd85d Christos Stavrakakis
             RUN_BURNIN_CMD,
49 3fbbd85d Christos Stavrakakis
             ALL_CMDS])
50 3fbbd85d Christos Stavrakakis
51 3fbbd85d Christos Stavrakakis
52 33ad9a0d Ilias Tsitsimpis
def main():  # Too many branches. pylint: disable-msg=R0912
53 33ad9a0d Ilias Tsitsimpis
    """Parse command line options and run the specified actions"""
54 3fbbd85d Christos Stavrakakis
    parser = OptionParser(usage=USAGE)
55 f195386e Ilias Tsitsimpis
    parser.add_option("-c", "--conf", dest="config_file", default=None,
56 33ad9a0d Ilias Tsitsimpis
                      help="Configuration file for SynnefoCI script")
57 f195386e Ilias Tsitsimpis
    parser.add_option("--cloud", dest="kamaki_cloud", default=None,
58 33ad9a0d Ilias Tsitsimpis
                      help="Use specified cloud, as is in .kamakirc")
59 3fbbd85d Christos Stavrakakis
    parser.add_option("-f", "--flavor", dest="flavor", default=None,
60 3fbbd85d Christos Stavrakakis
                      help="Name of flavor to use for the server.")
61 3fbbd85d Christos Stavrakakis
    parser.add_option("-i", "--image", dest="image", default=None,
62 3fbbd85d Christos Stavrakakis
                      help="UUID of image to use for the server.")
63 4c818bb2 Ilias Tsitsimpis
    parser.add_option("--ssh-keys", dest="ssh_keys", default=None,
64 4c818bb2 Ilias Tsitsimpis
                      help="Upload/Install the public ssh keys contained"
65 4c818bb2 Ilias Tsitsimpis
                           " in this file to the server")
66 85bcc8da Christos Stavrakakis
    parser.add_option("--fetch-packages", dest="fetch_packages",
67 ee2419c5 Christos Stavrakakis
                      default=None,
68 85bcc8da Christos Stavrakakis
                      help="Download the debian packages that were created"
69 ee2419c5 Christos Stavrakakis
                           " during the '%s' step in this directory" %
70 ee2419c5 Christos Stavrakakis
                           BUILD_SYNNEFO_CMD)
71 124c300e Christos Stavrakakis
    parser.add_option("--fetch-docs", dest="fetch_docs",
72 124c300e Christos Stavrakakis
                      default=None,
73 124c300e Christos Stavrakakis
                      help="Download the documentation that was created"
74 124c300e Christos Stavrakakis
                           " during the '%s' step in this directory" %
75 124c300e Christos Stavrakakis
                           BUILD_DOCS_SYNNEFO_CMD)
76 46a07468 Christos Stavrakakis
    parser.add_option("--schema", dest="schema", default=None,
77 46a07468 Christos Stavrakakis
                      help="Schema for snf-deploy.")
78 3fbbd85d Christos Stavrakakis
79 3fbbd85d Christos Stavrakakis
    (options, args) = parser.parse_args()
80 3fbbd85d Christos Stavrakakis
81 3fbbd85d Christos Stavrakakis
    if len(args) != 1:
82 3fbbd85d Christos Stavrakakis
        msg = "ERROR: Command takes exactly one argument"
83 3fbbd85d Christos Stavrakakis
        parser.print_help()
84 3fbbd85d Christos Stavrakakis
        print
85 3fbbd85d Christos Stavrakakis
        print msg
86 3fbbd85d Christos Stavrakakis
        return
87 3fbbd85d Christos Stavrakakis
88 3fbbd85d Christos Stavrakakis
    command = args[0]
89 3fbbd85d Christos Stavrakakis
    if command == ALL_CMDS:
90 3fbbd85d Christos Stavrakakis
        for cmd in AVAILABLE_COMMANDS:
91 3fbbd85d Christos Stavrakakis
            setattr(options, cmd, True)
92 3fbbd85d Christos Stavrakakis
    elif command not in AVAILABLE_COMMANDS:
93 3fbbd85d Christos Stavrakakis
        msg = "ERROR: Unknown command: %s" % command
94 3fbbd85d Christos Stavrakakis
        parser.print_help()
95 3fbbd85d Christos Stavrakakis
        print
96 3fbbd85d Christos Stavrakakis
        print msg
97 3fbbd85d Christos Stavrakakis
        return
98 3fbbd85d Christos Stavrakakis
    else:
99 3fbbd85d Christos Stavrakakis
        setattr(options, command, True)
100 3fbbd85d Christos Stavrakakis
101 3fbbd85d Christos Stavrakakis
    cleanup_config = command in CLEAN_CONFIG_CMDS
102 e2db4a57 Christos Stavrakakis
    synnefo_ci = SynnefoCI(config_file=options.config_file,
103 e2db4a57 Christos Stavrakakis
                           cleanup_config=cleanup_config,
104 3fbbd85d Christos Stavrakakis
                           cloud=options.kamaki_cloud)
105 3fbbd85d Christos Stavrakakis
106 3fbbd85d Christos Stavrakakis
    if getattr(options, CREATE_SERVER_CMD, False):
107 dae06cfc Ilias Tsitsimpis
        synnefo_ci.create_server(flavor_name=options.flavor,
108 4c818bb2 Ilias Tsitsimpis
                                 image_id=options.image,
109 4c818bb2 Ilias Tsitsimpis
                                 ssh_keys=options.ssh_keys)
110 3fbbd85d Christos Stavrakakis
        synnefo_ci.clone_repo()
111 3fbbd85d Christos Stavrakakis
    if getattr(options, BUILD_SYNNEFO_CMD, False):
112 3fbbd85d Christos Stavrakakis
        synnefo_ci.build_synnefo()
113 124c300e Christos Stavrakakis
        if options.fetch_packages:
114 124c300e Christos Stavrakakis
            dest = os.path.abspath(options.fetch_packages)
115 124c300e Christos Stavrakakis
            synnefo_ci.fetch_packages(dest=dest)
116 124c300e Christos Stavrakakis
    if getattr(options, BUILD_DOCS_SYNNEFO_CMD, False):
117 124c300e Christos Stavrakakis
        synnefo_ci.build_documentation()
118 124c300e Christos Stavrakakis
        if options.fetch_docs:
119 124c300e Christos Stavrakakis
            dest = os.path.abspath(options.fetch_docs)
120 124c300e Christos Stavrakakis
            synnefo_ci.fetch_documentation(dest=dest)
121 3fbbd85d Christos Stavrakakis
    if getattr(options, DEPLOY_SYNNEFO_CMD, False):
122 46a07468 Christos Stavrakakis
        synnefo_ci.deploy_synnefo(schema=options.schema)
123 3fbbd85d Christos Stavrakakis
    if getattr(options, TEST_SYNNEFO_CMD, False):
124 3fbbd85d Christos Stavrakakis
        synnefo_ci.unit_test()
125 3fbbd85d Christos Stavrakakis
    if getattr(options, RUN_BURNIN_CMD, False):
126 3fbbd85d Christos Stavrakakis
        synnefo_ci.run_burnin()
127 3fbbd85d Christos Stavrakakis
128 3fbbd85d Christos Stavrakakis
129 3fbbd85d Christos Stavrakakis
if __name__ == "__main__":
130 3fbbd85d Christos Stavrakakis
    main()