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
|
#!/usr/bin/env python
__metaclass__ = type
from argparse import ArgumentParser
import sys
from jujupy import (
check_wordpress,
Environment,
until_timeout,
)
def deploy_stack(environments, charm_prefix):
""""Deploy a Wordpress stack in the specified environment.
:param environment: The name of the desired environment.
"""
envs = [Environment.from_config(e) for e in environments]
for env in envs:
env.bootstrap()
for env in envs:
agent_version = env.get_matching_agent_version()
status = env.get_status()
for ignored in until_timeout(30):
agent_versions = env.get_status().get_agent_versions()
if 'unknown' not in agent_versions and len(agent_versions) == 1:
break
status = env.get_status()
if agent_versions.keys() != [agent_version]:
print "Current versions: %s" % ', '.join(agent_versions.keys())
env.juju('upgrade-juju', '--version', agent_version)
for env in envs:
env.wait_for_version(env.get_matching_agent_version())
env.juju('deploy', charm_prefix + 'wordpress')
env.juju('deploy', charm_prefix + 'mysql')
env.juju('add-relation', 'mysql', 'wordpress')
env.juju('expose', 'wordpress')
for env in envs:
status = env.wait_for_started().status
wp_unit_0 = status['services']['wordpress']['units']['wordpress/0']
check_wordpress(env.environment, wp_unit_0['public-address'])
def main():
parser = ArgumentParser('Deploy a WordPress stack')
parser.add_argument('--charm-prefix', help='A prefix for charm urls.',
default='')
parser.add_argument('env', nargs='*')
args = parser.parse_args()
try:
deploy_stack(args.env, args.charm_prefix)
except Exception as e:
print e
sys.exit(1)
if __name__ == '__main__':
main()
|