def __init__(self, role_name, instance_name, pretty): """ :param role_name: The name of the type of role :param instance_name: A unique name for this instance :param pretty: The pretty name of the role for the description """ self._role_name = role_name self._instance_name = instance_name self._desc = "%s Role - %s" % (pretty, instance_name) self._requirements = [] self._unitname = get_target_unit_name(role_name, instance_name)
def __init__(self, parent, name, type_name, directory, settings, *args, **kwargs): """The DBUS_INTERFACE_ROLE_INSTANCE implementation. :param parent: The DBusRole Object this is attached to :param name: Instance name :param type_name: Role name :param directory: FIXME: unused??? :param settings: RoleSettings for the role :param path: (Implicit in *args) FIXME: unused??? """ super(RoleBase, self).__init__(*args, **kwargs) self.busname = args[0] self.path = args[1] self._bus = slip.dbus.SystemBus() self._parent = parent self._name = name self._escaped_name = dbus_label_escape(name) self._type = type_name self._escaped_type = dbus_label_escape(type_name) self._log_prefix = "role.%s.%s" % (self._escaped_type, self._escaped_name) self._directory = directory self._settings = settings self._settings.connect("changed", self._emit_property_changed) # TODO: place target_unit in settings self.target_unit = get_target_unit_name(self.get_type(), self.get_name()) # No loaded self._settings, set state to NASCENT if not "state" in self._settings: self._settings["state"] = NASCENT elif self._settings["state"] == SYSTEMD: # We need to get the current state from systemd try: self._settings["state"] = target_unit_state(self.target_unit) except: # If we couldn't get the target state, we need to assume that # it is ERROR self._settings["state"] = ERROR self.timeout_restart() return # Then we need to set up a signal monitor to update this state # if it changes in systemd self.monitor_unit() self.timeout_restart()
def stop_services_async(self): """stop_services_async""" log.debug1("%s.stop_services_async()", self._log_prefix) with SystemdJobHandler() as job_handler: target_unit = get_target_unit_name(self.get_type(), self.get_name()) log.debug9("Stopping %s" % target_unit) job_path = job_handler.manager.StopUnit(target_unit, "replace") job_handler.register_job(job_path) job_results = yield job_handler.all_jobs_done_future() if any([x for x in job_results.values() if x not in ("skipped", "done")]): details = ", ".join(["%s: %s" % item for item in job_results.items()]) raise RolekitError(COMMAND_FAILED, "Stopping services failed: %s" % details) log.debug9("Disabling %s" % target_unit) disable_units([target_unit])
def stop_services_async(self): """stop_services_async""" log.debug1("%s.stop_services_async()", self._log_prefix) with SystemdJobHandler() as job_handler: target_unit = get_target_unit_name(self.get_type(), self.get_name()) log.debug9("Disabling %s" % target_unit) disable_units([target_unit]) log.debug9("Stopping %s" % target_unit) job_path = job_handler.manager.StopUnit(target_unit, "replace") job_handler.register_job(job_path) job_results = yield job_handler.all_jobs_done_future() if any( [x for x in job_results.values() if x not in ("skipped", "done")]): details = ", ".join( ["%s: %s" % item for item in job_results.items()]) raise RolekitError(COMMAND_FAILED, "Stopping services failed: %s" % details)