29
29
self.juju_directory = juju_directory
30
30
self.service_state_manager = ServiceStateManager(self.client)
31
31
self.charm_state_manager = CharmStateManager(self.client)
32
# Sanity check that machine_id has been stringified. Most of
33
# the code base treats machine_id as an int, but deployment
34
# uses a str. TODO remove need for this bandaid by suitable
36
assert isinstance(machine_id, str)
39
34
def charms_directory(self):
40
35
return os.path.join(self.juju_directory, "charms")
38
def start(self, provider_type=None):
44
39
"""Starts the unit deployer."""
40
# Find out what provided the machine, and how to deploy units.
41
if provider_type is None:
42
settings = GlobalSettingsStateManager(self.client)
43
provider_type = yield settings.get_provider_type()
44
self.deploy_factory = get_deploy_factory(provider_type)
45
46
if not os.path.exists(self.charms_directory):
46
47
os.makedirs(self.charms_directory)
48
# Find out what provided the machine, and how to deploy units.
49
settings = GlobalSettingsStateManager(self.client)
50
provider_type = yield settings.get_provider_type()
51
self.deploy_factory = get_deploy_factory(provider_type)
53
49
def download_charm(self, charm_state):
54
50
"""Retrieve a charm from the provider storage to the local machine.
84
80
deployment = self.deploy_factory(
85
81
service_unit_name, self.juju_directory)
83
log.debug("Using %r for %s in %s",
87
88
running = yield deployment.is_running()
89
90
log.debug("Starting service unit %s...", service_unit_name)