Beispiel #1
0
    def load(self, container):

        initkeys = [
            VRouterSet.default_key(),
            DVRouterForwardSet.default_key(),
            DVRouterExternalAddressInfo.default_key()
        ]

        def init(keys, values):

            if values[0] is None:
                values[0] = VRouterSet()

            if values[1] is None:
                values[1] = DVRouterForwardSet()

            if values[2] is None:
                values[2] = DVRouterExternalAddressInfo()

            return keys, values

        for m in callAPI(container, "objectdb", "transact", {
                "keys": initkeys,
                "updater": init
        }):
            yield m

        for m in Module.load(self, container):
            yield m
Beispiel #2
0
 def load(self, container):
     for m in Module.load(self, container):
         yield m
     loadmodules = []
     for p in self.autoloadpackages:
         try:
             def onerror(name):
                 self._logger.warning("Autoload package %r on package %r failed", name, p)
             pkg = __import__(p, fromlist = ('dummy',))
             for _, name, ispkg in pkgutil.walk_packages(pkg.__path__, p + '.', onerror):
                 if not ispkg:
                     try:
                         pymod = __import__(name, fromlist = ('dummy',))
                         for m in vars(pymod).values():
                             if isinstance(m, type) and issubclass(m, Module) and getattr(m, '__module__', '') == name:
                                 loadmodules.append(m)
                     except Exception:
                         self._logger.warning('Autoload module %r failed', name, exc_info = True)
         except Exception:
             self._logger.warning('Autoload package %r failed', p, exc_info = True)
     if loadmodules:
         for m in container.executeAll([self.server.moduleloader.loadmodule(m) for m in loadmodules],
                                       self.server.moduleloader, ()):
             yield m
     for m in self.changestate(ModuleLoadStateChanged.LOADED, container):
         yield m
Beispiel #3
0
 def load(self, container):
     self.scheduler.queue.addSubQueue(
         1, TableAcquireDelayEvent.createMatcher(),
         'ofpmanager_tableacquiredelay')
     for m in container.waitForSend(TableAcquireUpdate(result=None)):
         yield m
     for m in Module.load(self, container):
         yield m
Beispiel #4
0
 def load(self, container):
     self.scheduler.queue.addSubQueue(\
             self.objectupdatepriority, dataobj.DataObjectUpdateEvent.createMatcher(), 'dataobjectupdate')
     for m in callAPI(container, 'updatenotifier', 'createnotifier'):
         yield m
     self._notifier = container.retvalue
     for m in Module.load(self, container):
         yield m
     self.routines.append(self._notifier)
Beispiel #5
0
 def load(self, container):
     self.scheduler.queue.addSubQueue(\
             self.objectupdatepriority, dataobj.DataObjectUpdateEvent.createMatcher(), 'dataobjectupdate')
     for m in callAPI(container, 'updatenotifier', 'createnotifier'):
         yield m
     self._notifier = container.retvalue
     for m in Module.load(self, container):
         yield m
     self.routines.append(self._notifier)
Beispiel #6
0
    def load(self, container):
        @updater
        def init_ipam(poolreserve):
            if poolreserve is None:
                return (IPAMPoolReserve(), )
            else:
                return ()

        for m in callAPI(container, 'objectdb', 'transact', {
                'keys': (IPAMPoolReserve.default_key(), ),
                'updater': init_ipam
        }):
            yield m
        for m in Module.load(self, container):
            yield m
Beispiel #7
0
    def load(self,container):

        initkeys = [VRouterSet.default_key()]

        def init(keys,values):
            
            if values[0] is None:
                values[0] = VRouterSet()
            
            return keys,values

        
        for m in callAPI(container,"objectdb","transact",
                         {"keys":initkeys,"updater":init}):
            yield m
        
        for m in Module.load(self,container):
            yield m
Beispiel #8
0
    def load(self, container):
        for m in Module.load(self, container):
            yield m
        loadmodules = []
        for p in self.autoloadpackages:
            try:

                def onerror(name):
                    self._logger.warning(
                        "Autoload package %r on package %r failed", name, p)

                pkg = __import__(p, fromlist=('dummy', ))
                for _, name, ispkg in pkgutil.walk_packages(
                        pkg.__path__, p + '.', onerror):
                    if not ispkg:
                        try:
                            pymod = __import__(name, fromlist=('dummy', ))
                            for m in vars(pymod).values():
                                if isinstance(m, type) and issubclass(
                                        m, Module) and getattr(
                                            m, '__module__', '') == name:
                                    loadmodules.append(m)
                        except Exception:
                            self._logger.warning('Autoload module %r failed',
                                                 name,
                                                 exc_info=True)
            except Exception:
                self._logger.warning('Autoload package %r failed',
                                     p,
                                     exc_info=True)
        if loadmodules:
            for m in container.executeAll(
                [self.server.moduleloader.loadmodule(m) for m in loadmodules],
                    self.server.moduleloader, ()):
                yield m
        for m in self.changestate(ModuleLoadStateChanged.SUCCEEDED, container):
            yield m
Beispiel #9
0
 def load(self, container):
     @updater
     def initialize(phynetset, lognetset, logportset, phyportset):
         if phynetset is None:
             phynetset = PhysicalNetworkSet()
             phynetset.set = DataObjectSet()
         if lognetset is None:
             lognetset = LogicalNetworkSet()
             lognetset.set = DataObjectSet()
         if logportset is None:
             logportset = LogicalPortSet()
             logportset.set = DataObjectSet()
         if phyportset is None:
             phyportset = PhysicalPortSet()
             phyportset.set = DataObjectSet()
         return [phynetset, lognetset, logportset, phyportset]
     for m in callAPI(container, 'objectdb', 'transact', {'keys':[PhysicalNetworkSet.default_key(),
                                                                LogicalNetworkSet.default_key(),
                                                                LogicalPortSet.default_key(),
                                                                PhysicalPortSet.default_key()],
                                                          'updater': initialize}):
         yield m
     for m in Module.load(self, container):
         yield m
Beispiel #10
0
 def load(self, container):
     self.scheduler.queue.addSubQueue(999, ModifyListen.createMatcher(), "redisnotifier_modifylisten")
     for m in Module.load(self, container):
         yield m
Beispiel #11
0
 def load(self, container):
     self.scheduler.queue.addSubQueue(999, ModifyListen.createMatcher(),
                                      "redisnotifier_modifylisten")
     for m in Module.load(self, container):
         yield m
Beispiel #12
0
 def load(self, container):
     self.scheduler.queue.addSubQueue(1, TableAcquireDelayEvent.createMatcher(), 'ofpmanager_tableacquiredelay')
     for m in container.waitForSend(TableAcquireUpdate(result = None)):
         yield m
     for m in Module.load(self, container):
         yield m