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)
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)
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)
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()
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()