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
66
67
68
69
70
71
72
|
#!/usr/bin/env python
from __future__ import print_function
from argparse import ArgumentParser
import logging
import os.path
import sys
from deploy_stack import (
BootstrapManager,
tear_down,
)
from jujupy import (
client_from_config,
)
from utility import (
configure_logging,
LoggedException,
scoped_environ,
temp_dir,
)
log = logging.getLogger("assess_bootstrap")
def assess_bootstrap(juju, env, debug, region, temp_env_name):
with scoped_environ():
juju_bin = os.path.dirname(os.path.abspath(juju))
os.environ['PATH'] = '{}:{}'.format(juju_bin, os.environ['PATH'])
client = client_from_config(env, juju, debug)
jes_enabled = client.is_jes_enabled()
if temp_env_name is None:
temp_env_name = client.env.environment
with temp_dir() as log_dir:
bs_manager = BootstrapManager(
temp_env_name, client, client, region=region,
permanent=jes_enabled, jes_enabled=jes_enabled, log_dir=log_dir,
bootstrap_host=None, machines=[], series=None, agent_url=None,
agent_stream=None, keep_env=False)
with bs_manager.top_context() as machines:
with bs_manager.bootstrap_context(machines):
tear_down(client, jes_enabled)
client.bootstrap()
with bs_manager.runtime_context(machines):
client.get_status(1)
log.info('Environment successfully bootstrapped.')
def parse_args(argv=None):
parser = ArgumentParser()
parser.add_argument('juju', help="The Juju client to use.")
parser.add_argument('env', help="The environment to test with.")
parser.add_argument('temp_env_name', nargs='?',
help="Temporary environment name to use.")
parser.add_argument('--debug', action="store_true", default=False,
help='Use --debug juju logging.')
parser.add_argument('--region', help='Override environment region.')
return parser.parse_args(argv)
def main():
args = parse_args()
configure_logging(logging.INFO)
try:
assess_bootstrap(**args.__dict__)
except LoggedException:
sys.exit(1)
if __name__ == '__main__':
main()
|