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

« back to all changes in this revision

Viewing changes to assess_jes_deploy.py

  • Committer: Aaron Bentley
  • Date: 2016-03-01 21:23:25 UTC
  • mto: This revision was merged to the branch mainline in revision 1305.
  • Revision ID: aaron.bentley@canonical.com-20160301212325-ogp6t6l979xvbxq6
Use revision-build for parallel streams.

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
from contextlib import contextmanager
5
5
import logging
6
6
import sys
 
7
from tempfile import NamedTemporaryFile
7
8
import os
8
9
 
 
10
import yaml
 
11
 
9
12
from deploy_stack import (
10
13
    boot_context,
11
14
    check_token,
16
19
    safe_print_status,
17
20
    )
18
21
from jujupy import (
19
 
    client_from_config,
 
22
    EnvJujuClient,
 
23
    make_safe_config,
 
24
    SimpleEnvironment,
20
25
    )
21
26
from utility import (
22
27
    add_basic_testing_arguments,
23
 
    ensure_dir,
24
28
    print_now,
25
29
)
26
30
 
27
31
 
28
 
def test_jes_deploy(client, charm_series, log_dir, base_env):
 
32
def make_hosted_env_client(client, suffix):
 
33
    env_name = '{}-{}'.format(client.env.environment, suffix)
 
34
    hosted_environment = SimpleEnvironment(env_name, dict(client.env.config),
 
35
                                           client.env.juju_home)
 
36
    hosted_env_client = client.clone(hosted_environment)
 
37
    return hosted_env_client
 
38
 
 
39
 
 
40
def test_jes_deploy(client, charm_prefix, log_dir, base_env):
29
41
    """Deploy the dummy stack in two hosted environments."""
30
42
    # deploy into system env
31
 
    deploy_dummy_stack(client, charm_series)
 
43
    deploy_dummy_stack(client, charm_prefix)
32
44
 
33
45
    # deploy into hosted envs
34
46
    with hosted_environment(client, log_dir, 'env1') as env1_client:
35
 
        deploy_dummy_stack(env1_client, charm_series)
 
47
        deploy_dummy_stack(env1_client, charm_prefix)
36
48
        with hosted_environment(client, log_dir, 'env2') as env2_client:
37
 
            deploy_dummy_stack(env2_client, charm_series)
 
49
            deploy_dummy_stack(env2_client, charm_prefix)
38
50
            # check all the services can talk
39
51
            check_services(client)
40
52
            check_services(env1_client)
54
66
    series = args.series
55
67
    if series is None:
56
68
        series = 'precise'
57
 
    charm_series = series
58
 
    client = client_from_config(base_env, args.juju_bin, args.debug,
59
 
                                soft_deadline=args.deadline)
 
69
    charm_prefix = 'local:{}/'.format(series)
 
70
    client = EnvJujuClient.by_version(
 
71
        SimpleEnvironment.from_config(base_env), args.juju_bin, args.debug,
 
72
    )
60
73
    if not client.is_jes_enabled():
61
74
        client.enable_jes()
62
75
    with boot_context(
71
84
            upload_tools=False,
72
85
            region=args.region,
73
86
            ):
74
 
        yield client, charm_series, base_env
 
87
        yield client, charm_prefix, base_env
75
88
 
76
89
 
77
90
def env_token(env_name):
80
93
 
81
94
@contextmanager
82
95
def hosted_environment(system_client, log_dir, suffix):
83
 
    env_name = '{}-{}'.format(system_client.env.environment, suffix)
84
 
    client = system_client.add_model(system_client.env.clone(env_name))
 
96
    client = make_hosted_env_client(system_client, suffix)
85
97
    try:
 
98
        with NamedTemporaryFile() as config_file:
 
99
            config = make_safe_config(client)
 
100
            yaml.dump(config, config_file)
 
101
            config_file.flush()
 
102
            client.create_environment(system_client, config_file.name)
86
103
        yield client
87
104
    except:
88
105
        logging.exception(
91
108
        sys.exit(1)
92
109
    finally:
93
110
        safe_print_status(client)
94
 
        hosted_log_dir = os.path.join(log_dir, suffix)
95
 
        ensure_dir(hosted_log_dir)
96
 
        dump_env_logs(client, None, hosted_log_dir)
 
111
        dump_env_logs(client, None, os.path.join(log_dir, suffix))
97
112
        client.destroy_model()
98
113
 
99
114
 
106
121
 
107
122
def main():
108
123
    parser = ArgumentParser()
109
 
    add_basic_testing_arguments(parser, using_jes=True, deadline=True)
 
124
    add_basic_testing_arguments(parser, using_jes=True)
110
125
    args = parser.parse_args()
111
 
    with jes_setup(args) as (client, charm_series, base_env):
112
 
        test_jes_deploy(client, charm_series, args.logs, base_env)
 
126
    with jes_setup(args) as (client, charm_prefix, base_env):
 
127
        test_jes_deploy(client, charm_prefix, args.logs, base_env)
113
128
 
114
129
 
115
130
if __name__ == '__main__':