예제 #1
0
 def find_addons(self):
     self._addon_module_services = []
     dbus = DBus.get_dbus_proxy()
     names = dbus.ListActivatableNames()
     for name in names:
         if name.startswith(DBUS_ADDON_NAMESPACE):
             self._addon_module_services.append(name)
예제 #2
0
    def add_addon_modules(self):
        """Add the addon modules."""
        dbus = DBus.get_dbus_proxy()
        names = dbus.ListActivatableNames()

        for name in names:
            if name.startswith(DBUS_ADDON_NAMESPACE):
                self.add_module(name, auto_object_path(name))
예제 #3
0
    def add_addon_modules(self):
        """Add the addon modules."""
        dbus = DBus.get_dbus_proxy()
        names = dbus.ListActivatableNames()
        prefix = get_dbus_name(*ADDONS_NAMESPACE)

        for service_name in names:
            if service_name.startswith(prefix):
                self.add_module(service_name)
예제 #4
0
    def connect(self):
        """Connect to the service immediately.

        :raise DBusObserverError: if service is not available
        """
        bus_proxy = DBus.get_dbus_proxy()

        if not bus_proxy.NameHasOwner(self.service_name):
            raise DBusObserverError("Service {} is not available.".format(
                self._service_name))

        self._enable_service()
        self._watch()
예제 #5
0
def run_boss(kickstart_modules=None, addons_enabled=True):
    """Start Boss service on DBus.

    :param kickstart_modules: a list of service identifiers
    :param addons_enabled: should we start the addons?
    """
    if kickstart_modules is None:
        kickstart_modules = ALL_KICKSTART_MODULES

    bus_proxy = DBus.get_dbus_proxy()
    bus_proxy.StartServiceByName(BOSS.service_name, DBUS_FLAG_NONE)

    boss_proxy = BOSS.get_proxy()
    boss_proxy.StartModules([m.service_name for m in kickstart_modules], addons_enabled)
예제 #6
0
    def add_addon_modules(self):
        """Add the addon modules."""
        dbus = DBus.get_dbus_proxy()
        names = dbus.ListActivatableNames()
        prefix = get_dbus_name(*ADDONS_NAMESPACE)

        for service_name in names:
            if service_name.startswith(prefix):
                # Get the object path.
                namespace = get_namespace_from_name(service_name)
                object_path = get_dbus_path(*namespace)

                # Add the observer.
                observer = DBus.get_observer(service_name, object_path)
                self._module_observers.append(observer)
예제 #7
0
    def start_modules(self):
        """Start anaconda modules (including addons)."""
        log.debug("Start modules.")
        dbus = DBus.get_dbus_proxy()

        for observer in self.module_observers:
            log.debug("Starting %s", observer)
            dbus.StartServiceByName(observer.service_name,
                                    DBUS_FLAG_NONE,
                                    callback=self._start_modules_callback,
                                    callback_args=(observer,))

            # Watch the module.
            observer.service_available.connect(self._process_module_is_available)
            observer.service_unavailable.connect(self._process_module_is_unavailable)
            observer.connect_once_available()
예제 #8
0
    def start_modules(self):
        """Starts anaconda modules (including addons)."""
        log.debug("starting modules")
        self.check_no_modules_are_running()

        dbus = DBus.get_dbus_proxy()
        for service in self.expected_module_services:
            log.debug("Starting %s", service)
            try:
                dbus.StartServiceByName(service,
                                        0,
                                        callback=self._finish_start_service_cb,
                                        callback_args=(service, ))
            except Exception:  # pylint: disable=broad-except
                self._failed_module_services.append(service)
                log.exception("module startup failed")

        log.debug("started all modules")
예제 #9
0
 def check_no_modules_are_running(self):
     dbus = DBus.get_dbus_proxy()
     for service in self.expected_module_services:
         if dbus.NameHasOwner(service):
             log.error("service %s has unexpected owner", service)
예제 #10
0
def run_boss():
    """Start Boss service on DBus."""
    bus_proxy = DBus.get_dbus_proxy()
    bus_proxy.StartServiceByName(BOSS.service_name, DBUS_FLAG_NONE)
예제 #11
0
 def _start_boss(self):
     """Start the boss."""
     bus_proxy = DBus.get_dbus_proxy()
     bus_proxy.StartServiceByName(BOSS.service_name, DBUS_FLAG_NONE)