示例#1
0
    def _load(plugin):
        """
        Import a module by file name.
        :param plugin: A plugin to load.
        :type plugin: Plugin
        :return: The loaded plugin.
        :rtype: Plugin
        """
        Remote.clear()
        Actions.clear()
        Plugin.add(plugin)
        try:
            path = plugin.descriptor.main.plugin
            if path:
                Plugin.add(plugin, path)
                plugin.impl = __import__(path, {}, {}, [path.split('.')[-1]])
            else:
                path = PluginLoader._find(plugin.name)
                plugin.impl = imp.load_source(plugin.name, path)

            log.info('plugin:%s loaded using: %s', plugin.name, path)

            for fn in Remote.find(plugin.impl.__name__):
                fn.gofer.plugin = plugin

            plugin.dispatcher += Remote.collated()
            plugin.actions = Actions.collated()
            plugin.delegate = Delegate()
            plugin.load()
            return plugin
        except Exception:
            log.exception('plugin:%s, import failed', plugin.name)
            Plugin.delete(plugin)
示例#2
0
    def _load(plugin):
        """
        Import a module by file name.
        :param plugin: A plugin to load.
        :type plugin: Plugin
        :return: The loaded plugin.
        :rtype: Plugin
        """
        Remote.clear()
        Actions.clear()
        Plugin.add(plugin)
        try:
            path = plugin.descriptor.main.plugin
            if path:
                Plugin.add(plugin, path)
                plugin.impl = __import__(path, {}, {}, [path.split('.')[-1]])
            else:
                path = PluginLoader._find(plugin.name)
                plugin.impl = imp.load_source(plugin.name, path)

            log.info('plugin:%s loaded using: %s', plugin.name, path)

            for fn in Remote.find(plugin.impl.__name__):
                fn.gofer.plugin = plugin

            plugin.dispatcher += Remote.collated()
            plugin.actions = Actions.collated()
            plugin.delegate = Delegate()
            plugin.load()
            return plugin
        except Exception:
            log.exception('plugin:%s, import failed', plugin.name)
            Plugin.delete(plugin)
示例#3
0
 def test_clear(self):
     functions = {}
     fn = '<function>'
     interval = '<interval>'
     with patch('gofer.agent.decorator.Actions.functions', functions):
         Actions.add(fn, interval)
         self.assertEqual(Actions.functions, {fn: interval})
         Actions.clear()
         self.assertEqual(Actions.functions, {})
示例#4
0
 def test_clear(self):
     functions = {}
     fn = "<function>"
     interval = "<interval>"
     with patch("gofer.agent.decorator.Actions.functions", functions):
         Actions.add(fn, interval)
         self.assertEqual(Actions.functions, {fn: interval})
         Actions.clear()
         self.assertEqual(Actions.functions, {})
示例#5
0
 def test_clear(self):
     functions = {}
     fn = '<function>'
     interval = '<interval>'
     with patch('gofer.agent.decorator.Actions.functions', functions):
         Actions.add(fn, interval)
         self.assertEqual(Actions.functions, {fn: interval})
         Actions.clear()
         self.assertEqual(Actions.functions, {})