~andrewjbeach/juju-ci-tools/make-local-patcher

« back to all changes in this revision

Viewing changes to assess_bootstrap.py

  • Committer: Aaron Bentley
  • Date: 2015-09-02 17:46:47 UTC
  • mto: This revision was merged to the branch mainline in revision 1082.
  • Revision ID: aaron.bentley@canonical.com-20150902174647-06vmnsooo6yzd46t
Stop supplying env to subprocess calls.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
from __future__ import print_function
3
3
 
4
4
from argparse import ArgumentParser
5
 
import logging
6
5
import os.path
7
 
import sys
8
6
 
9
 
from deploy_stack import (
10
 
    BootstrapManager,
11
 
    tear_down,
12
 
    )
13
7
from jujupy import (
14
8
    EnvJujuClient,
15
9
    SimpleEnvironment,
 
10
    until_timeout,
16
11
    )
17
 
from utility import (
18
 
    configure_logging,
19
 
    LoggedException,
20
 
    scoped_environ,
21
 
    temp_dir,
22
 
)
23
 
 
24
 
 
25
 
log = logging.getLogger("assess_bootstrap")
26
 
 
27
 
 
28
 
def assess_bootstrap(juju, env, debug, region, temp_env_name):
 
12
from utility import scoped_environ
 
13
 
 
14
 
 
15
def assess_bootstrap(juju, env, debug):
29
16
    with scoped_environ():
30
17
        juju_bin = os.path.dirname(os.path.abspath(juju))
31
18
        os.environ['PATH'] = '{}:{}'.format(juju_bin, os.environ['PATH'])
32
19
        client = EnvJujuClient.by_version(SimpleEnvironment.from_config(env),
33
20
                                          juju, debug)
34
 
    jes_enabled = client.is_jes_enabled()
35
 
    if temp_env_name is None:
36
 
        temp_env_name = client.env.environment
37
 
    with temp_dir() as log_dir:
38
 
        bs_manager = BootstrapManager(
39
 
            temp_env_name, client, client, region=region,
40
 
            permanent=jes_enabled, jes_enabled=jes_enabled, log_dir=log_dir,
41
 
            bootstrap_host=None, machines=[], series=None, agent_url=None,
42
 
            agent_stream=None, keep_env=False)
43
 
        with bs_manager.top_context() as machines:
44
 
            with bs_manager.bootstrap_context(machines):
45
 
                tear_down(client, jes_enabled)
46
 
                client.bootstrap()
47
 
            with bs_manager.runtime_context(machines):
48
 
                client.get_status(1)
49
 
                log.info('Environment successfully bootstrapped.')
 
21
    client.destroy_environment()
 
22
    try:
 
23
        client.bootstrap()
 
24
        for ignored in until_timeout(30):
 
25
            client.get_status(1)
 
26
        print('Environment successfully bootstrapped.')
 
27
    finally:
 
28
        client.destroy_environment()
50
29
 
51
30
 
52
31
def parse_args(argv=None):
53
32
    parser = ArgumentParser()
54
33
    parser.add_argument('juju', help="The Juju client to use.")
55
34
    parser.add_argument('env', help="The environment to test with.")
56
 
    parser.add_argument('temp_env_name', nargs='?',
57
 
                        help="Temporary environment name to use.")
58
35
    parser.add_argument('--debug', action="store_true", default=False,
59
36
                        help='Use --debug juju logging.')
60
 
    parser.add_argument('--region', help='Override environment region.')
61
37
    return parser.parse_args(argv)
62
38
 
63
39
 
64
40
def main():
65
41
    args = parse_args()
66
 
    configure_logging(logging.INFO)
67
 
    try:
68
 
        assess_bootstrap(**args.__dict__)
69
 
    except LoggedException:
70
 
        sys.exit(1)
 
42
    assess_bootstrap(**args.__dict__)
71
43
 
72
44
 
73
45
if __name__ == '__main__':