コード例 #1
0
ファイル: status.py プロジェクト: anbangr/trusted-juju
    def _process_subordinates(self):
        """Properly nest subordinate units under their principal service's
        unit nodes. Services and units are generated in one pass, then
        iterated by this method to structure the output data to reflect
        actual unit containment.

        Subordinate units will include the follow::
           subordinate: true
            subordinate-to:
            - <principal service names>

        Principal services that have subordinates will include::

            subordinates:
              <subordinate unit name>:
                agent-state: <agent state>
        """
        service_data = self.service_data

        for unit_name, u in self.unit_data.iteritems():
            container = u.get("container")
            if container:
                d = self.unit_data[container].setdefault("subordinates", {})
                d[unit_name] = u

                # remove keys that don't appear in output or come from container
                for key in ("container", "machine", "public-address"):
                    u.pop(key, None)
            else:
                service_name = parse_service_name(unit_name)
                service_data[service_name]["units"][unit_name] = u

        for sub_service, principal_services in self.subordinates.iteritems():
            service_data[sub_service]["subordinate-to"] = sorted(principal_services)
            service_data[sub_service].pop("units", None)
コード例 #2
0
 def get_local_service(self):
     """Return ServiceState for the local service."""
     if self._service is None:
         service_state_manager = ServiceStateManager(self._client)
         self._service = yield (service_state_manager.get_service_state(
             parse_service_name(self._unit_name)))
     returnValue(self._service)
コード例 #3
0
ファイル: hook.py プロジェクト: mcclurmc/juju
 def get_local_service(self):
     """Return ServiceState for the local service."""
     if self._service is None:
         service_state_manager = ServiceStateManager(self._client)
         self._service = yield(
             service_state_manager.get_service_state(
                 parse_service_name(self._unit_name)))
     returnValue(self._service)
コード例 #4
0
ファイル: remove_unit.py プロジェクト: mcclurmc/juju
def remove_unit(config, environment, verbose, log, unit_names):
    provider = environment.get_machine_provider()
    client = yield provider.connect()
    try:
        service_manager = ServiceStateManager(client)
        for unit_name in unit_names:
            service_name = parse_service_name(unit_name)
            service_state = yield service_manager.get_service_state(
                service_name)
            unit_state = yield service_state.get_unit_state(unit_name)
            yield service_state.remove_unit_state(unit_state)
            log.info("Unit %r removed from service %r", unit_state.unit_name,
                     service_state.service_name)
    finally:
        yield client.close()
コード例 #5
0
ファイル: remove_unit.py プロジェクト: mcclurmc/juju
def remove_unit(config, environment, verbose, log, unit_names):
    provider = environment.get_machine_provider()
    client = yield provider.connect()
    try:
        service_manager = ServiceStateManager(client)
        for unit_name in unit_names:
            service_name = parse_service_name(unit_name)
            service_state = yield service_manager.get_service_state(
                service_name)
            unit_state = yield service_state.get_unit_state(unit_name)
            yield service_state.remove_unit_state(unit_state)
            log.info("Unit %r removed from service %r",
                     unit_state.unit_name, service_state.service_name)
    finally:
        yield client.close()
コード例 #6
0
ファイル: remove_unit.py プロジェクト: anbangr/trusted-juju
def remove_unit(config, environment, verbose, log, unit_names):
    provider = environment.get_machine_provider()
    client = yield provider.connect()
    try:
        service_manager = ServiceStateManager(client)
        for unit_name in unit_names:
            service_name = parse_service_name(unit_name)
            service_state = yield service_manager.get_service_state(
                service_name)
            unit_state = yield service_state.get_unit_state(unit_name)
            if (yield service_state.is_subordinate()):
                container = yield unit_state.get_container()
                raise UnsupportedSubordinateServiceRemoval(
                    unit_state.unit_name,
                    container.unit_name)

            yield service_state.remove_unit_state(unit_state)
            log.info("Unit %r removed from service %r",
                     unit_state.unit_name, service_state.service_name)
    finally:
        yield client.close()