2
2
from __future__ import print_function
4
4
from argparse import ArgumentParser
9
from deploy_stack import (
13
7
from jujupy import (
25
log = logging.getLogger("assess_bootstrap")
28
def assess_bootstrap(juju, env, debug, region, temp_env_name):
12
from utility import scoped_environ
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),
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)
47
with bs_manager.runtime_context(machines):
49
log.info('Environment successfully bootstrapped.')
21
client.destroy_environment()
24
for ignored in until_timeout(30):
26
print('Environment successfully bootstrapped.')
28
client.destroy_environment()
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)
65
41
args = parse_args()
66
configure_logging(logging.INFO)
68
assess_bootstrap(**args.__dict__)
69
except LoggedException:
42
assess_bootstrap(**args.__dict__)
73
45
if __name__ == '__main__':