OLD | NEW |
1 from base64 import b64encode | 1 from base64 import b64encode |
2 from subprocess import Popen, PIPE | 2 from subprocess import Popen, PIPE |
3 | 3 |
4 | 4 |
5 from juju.errors import CloudInitError | 5 from juju.errors import CloudInitError |
6 from juju.lib.upstart import UpstartService | 6 from juju.lib.upstart import UpstartService |
7 from juju.lib import serializer | 7 from juju.lib import serializer |
| 8 from juju.lib.zk import ( |
| 9 CLIENT_SESSION_TIMEOUT, TICK_TIME, MAX_SESSION_TIMEOUT) |
8 from juju.providers.common.utils import format_cloud_init | 10 from juju.providers.common.utils import format_cloud_init |
9 from juju.state.auth import make_identity | 11 from juju.state.auth import make_identity |
10 | 12 |
11 import juju | 13 import juju |
12 import os | 14 import os |
13 | 15 |
14 DISTRO = "distro" | 16 DISTRO = "distro" |
15 PPA = "ppa" | 17 PPA = "ppa" |
16 BRANCH = "branch" | 18 BRANCH = "branch" |
17 PROPOSED = "proposed" | 19 PROPOSED = "proposed" |
(...skipping 13 matching lines...) Expand all Loading... |
31 scripts.extend(_branch_install_scripts(origin_url)) | 33 scripts.extend(_branch_install_scripts(origin_url)) |
32 | 34 |
33 scripts.extend([ | 35 scripts.extend([ |
34 "sudo mkdir -p /var/lib/juju", | 36 "sudo mkdir -p /var/lib/juju", |
35 "sudo mkdir -p /var/log/juju"]) | 37 "sudo mkdir -p /var/log/juju"]) |
36 return scripts | 38 return scripts |
37 | 39 |
38 | 40 |
39 def _zookeeper_scripts(instance_id, secret, constraints, provider_type): | 41 def _zookeeper_scripts(instance_id, secret, constraints, provider_type): |
40 return [ | 42 return [ |
| 43 'sed -i -e s/tickTime=2000/tickTime=%d/g /etc/zookeeper/conf/zoo.cfg' %
( |
| 44 TICK_TIME), |
| 45 'echo "minSessionTimeout=%d" >> /etc/zookeeper/conf/zoo.cfg' % ( |
| 46 CLIENT_SESSION_TIMEOUT), |
| 47 'echo "maxSessionTimeout=%d" >> /etc/zookeeper/conf/zoo.cfg' % ( |
| 48 MAX_SESSION_TIMEOUT), |
41 "juju-admin initialize" | 49 "juju-admin initialize" |
42 " --instance-id=%s" | 50 " --instance-id=%s" |
43 " --admin-identity=%s" | 51 " --admin-identity=%s" |
44 " --constraints-data=%s" | 52 " --constraints-data=%s" |
45 " --provider-type=%s" | 53 " --provider-type=%s" |
46 % (instance_id, make_identity("admin:%s" % secret), | 54 % (instance_id, make_identity("admin:%s" % secret), |
47 b64encode(serializer.dump(constraints.data)), provider_type)] | 55 b64encode(serializer.dump(constraints.data)), provider_type)] |
48 | 56 |
49 | 57 |
50 def _machine_scripts(machine_id, zookeeper_hosts): | 58 def _machine_scripts(machine_id, zookeeper_hosts): |
51 service = UpstartService("juju-machine-agent") | 59 service = UpstartService("juju-machine-agent") |
52 service.set_description("Juju machine agent") | 60 service.set_description("Juju machine agent") |
53 service.set_environ( | 61 service.set_environ( |
54 {"JUJU_MACHINE_ID": machine_id, "JUJU_ZOOKEEPER": zookeeper_hosts}) | 62 {"JUJU_MACHINE_ID": machine_id, "JUJU_ZOOKEEPER": zookeeper_hosts}) |
55 service.set_command( | 63 service.set_command( |
56 "python -m juju.agents.machine --nodaemon " | 64 "python -m juju.agents.machine --nodaemon " |
57 "--logfile /var/log/juju/machine-agent.log " | 65 "--logfile /var/log/juju/machine-agent.log " |
58 "--session-file /var/run/juju/machine-agent.zksession") | 66 "--session-file /var/run/juju/machine-agent.zksession") |
59 return service.get_cloud_init_commands() | 67 return service.get_cloud_init_commands() |
60 | 68 |
61 | 69 |
62 def _unit_scripts(machine_id, unit_name, zookeeper_hosts, juju_home, env_id): | 70 def _unit_scripts(machine_id, unit_name, zookeeper_hosts, juju_home, env_id): |
63 unit_path_name = unit_name.replace('/', '-') | 71 unit_path_name = unit_name.replace('/', '-') |
64 service_name = "juju-%s" % unit_path_name | 72 service_name = "juju-%s" % unit_path_name |
65 service = UpstartService(service_name) | 73 service = UpstartService(service_name) |
66 service.set_description( | 74 service.set_description( |
67 "Juju unit agent for %s" % unit_name) | 75 "Juju unit agent for %s" % unit_name) |
68 service.set_environ( | 76 service.set_environ( |
69 {"JUJU_MACHINE_ID": str(machine_id), | 77 {"JUJU_MACHINE_ID": str(machine_id), |
70 "JUJU_UNIT_NAME": unit_name, | 78 "JUJU_UNIT_NAME": unit_name, |
71 "JUJU_HOME": juju_home, | 79 "JUJU_HOME": juju_home, |
72 "JUJU_ENV_UUID": env_id, | 80 "JUJU_ENV_UUID": env_id, |
73 "JUJU_ZOOKEEPER": zookeeper_hosts}) | 81 "JUJU_ZOOKEEPER": zookeeper_hosts}) |
74 service.set_output_path( | 82 service.set_output_path( |
75 "/var/log/juju/unit-%s-output.log" % unit_path_name) | 83 "/var/log/juju/unit-%s-output.log" % unit_path_name) |
76 service.set_command(" ".join( | 84 service.set_command(" ".join( |
77 ["/usr/bin/python", | 85 ["/usr/bin/python", |
78 "-m", "juju.agents.unit", | 86 "-m", "juju.agents.unit", |
79 "--nodaemon", | 87 "--nodaemon", |
80 "--logfile", "/var/log/juju/unit-%s.log" % unit_path_name, | 88 "--logfile", "/var/log/juju/unit-%s.log" % unit_path_name, |
81 "--session-file", | 89 "--session-file", |
82 "/var/run/juju/unit-%s-agent.zksession" % unit_path_name])) | 90 "/var/run/juju/unit-%s-agent.zksession" % unit_path_name])) |
83 return service.get_cloud_init_commands() | 91 return service.get_cloud_init_commands() |
84 | 92 |
85 | 93 |
86 def _provision_scripts(zookeeper_hosts): | 94 def _provision_scripts(zookeeper_hosts): |
87 service = UpstartService("juju-provision-agent") | 95 service = UpstartService("juju-provision-agent") |
88 service.set_description("Juju provisioning agent") | 96 service.set_description("Juju provisioning agent") |
89 env = {"JUJU_ZOOKEEPER": zookeeper_hosts} | 97 env = {"JUJU_ZOOKEEPER": zookeeper_hosts} |
90 if os.environ.get("JUJU_TESTING", "") == "fast": | 98 if os.environ.get("JUJU_TESTING", "") == "fast": |
91 env['JUJU_TESTING'] = os.environ['JUJU_TESTING'] | 99 env['JUJU_TESTING'] = os.environ['JUJU_TESTING'] |
92 service.set_environ(env) | 100 service.set_environ(env) |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 self._env_id)) | 424 self._env_id)) |
417 if self._provision: | 425 if self._provision: |
418 scripts.extend(_provision_scripts(self._join_zookeeper_hosts())) | 426 scripts.extend(_provision_scripts(self._join_zookeeper_hosts())) |
419 return scripts | 427 return scripts |
420 | 428 |
421 def _collect_machine_data(self): | 429 def _collect_machine_data(self): |
422 return { | 430 return { |
423 "machine-id": self._machine_id, | 431 "machine-id": self._machine_id, |
424 "juju-provider-type": self._provider_type, | 432 "juju-provider-type": self._provider_type, |
425 "juju-zookeeper-hosts": self._join_zookeeper_hosts()} | 433 "juju-zookeeper-hosts": self._join_zookeeper_hosts()} |
OLD | NEW |