26
23
from utility import (
27
24
add_basic_testing_arguments,
33
29
def make_hosted_env_client(client, suffix):
34
30
env_name = '{}-{}'.format(client.env.environment, suffix)
35
hosted_environment = SimpleEnvironment(env_name, dict(client.env.config),
37
hosted_env_client = client.clone(hosted_environment)
31
hosted_environment = SimpleEnvironment(env_name, dict(client.env.config))
32
hosted_env_client = EnvJujuClient.by_version(
33
hosted_environment, client.full_path, client.debug,
35
hosted_env_client.juju_home = client.juju_home
36
hosted_env_client.enable_jes()
38
37
return hosted_env_client
41
def test_jes_deploy(client, charm_series, log_dir, base_env):
40
def test_jes_deploy(client, charm_prefix, base_env):
42
41
"""Deploy the dummy stack in two hosted environments."""
43
42
# deploy into system env
44
deploy_dummy_stack(client, charm_series)
43
deploy_dummy_stack(client, charm_prefix)
46
45
# deploy into hosted envs
47
with hosted_environment(client, log_dir, 'env1') as env1_client:
48
deploy_dummy_stack(env1_client, charm_series)
49
with hosted_environment(client, log_dir, 'env2') as env2_client:
50
deploy_dummy_stack(env2_client, charm_series)
46
with hosted_environment(client, 'env1') as env1_client:
47
deploy_dummy_stack(env1_client, charm_prefix)
48
with hosted_environment(client, 'env2') as env2_client:
49
deploy_dummy_stack(env2_client, charm_prefix)
51
50
# check all the services can talk
52
51
check_services(client)
53
52
check_services(env1_client)
67
66
series = args.series
69
charm_prefix = 'local:{}/'.format(series)
71
70
client = EnvJujuClient.by_version(
72
71
SimpleEnvironment.from_config(base_env), args.juju_bin, args.debug,
74
if not client.is_jes_enabled():
77
75
args.temp_env_name,
84
82
args.logs, args.keep_env,
88
yield client, charm_series, base_env
86
if args.machine is not None:
87
client.add_ssh_machines(args.machine)
88
yield client, charm_prefix, base_env
91
91
def env_token(env_name):
96
def hosted_environment(system_client, log_dir, suffix):
96
def hosted_environment(system_client, suffix):
97
97
client = make_hosted_env_client(system_client, suffix)
99
99
with NamedTemporaryFile() as config_file:
100
100
config = make_safe_config(client)
101
101
yaml.dump(config, config_file)
102
102
config_file.flush()
103
client.create_environment(system_client, config_file.name)
104
"system create-environment", (
105
'-s', system_client.env.environment,
106
client.env.environment, '--config', config_file.name),
106
110
logging.exception(
108
112
client.env.environment))
111
safe_print_status(client)
112
hosted_log_dir = os.path.join(log_dir, suffix)
113
ensure_dir(hosted_log_dir)
114
dump_env_logs(client, None, hosted_log_dir)
115
client.destroy_model()
115
# TODO(gz): May want to gather logs from hosted env here.
116
client.destroy_environment(force=False)
118
119
def check_services(client):
119
120
token = env_token(client.env.environment)
120
client.set_config('dummy-source', {'token': token})
121
client.juju('set', ('dummy-source', 'token=%s' % token))
121
122
print_now("checking services in " + client.env.environment)
122
123
check_token(client, token)
126
127
parser = ArgumentParser()
127
128
add_basic_testing_arguments(parser, using_jes=True)
128
129
args = parser.parse_args()
129
with jes_setup(args) as (client, charm_series, base_env):
130
test_jes_deploy(client, charm_series, args.logs, base_env)
130
with jes_setup(args) as (client, charm_prefix, base_env):
131
test_jes_deploy(client, charm_prefix, base_env)
133
134
if __name__ == '__main__':