Exemple #1
0
    def delete_uninstall(self, request, **kwargs):
        obj = self.cached_obj_get(request=request, **self.remove_api_resource_names(kwargs))

        pm = PluginManager()
        killed = pm.uninstall(obj)

        status = {"Status": killed}

        return self.create_response(request, status)
Exemple #2
0
def downloadPlugin(url, plugin, zipFile=None):
    """download a plugin, extract and install it"""

    logger = downloadPlugin.get_logger()

    #normalise the URL
    url = urlparse.urlsplit(url).geturl()

    if not zipFile:
        plugin.status["installStatus"] = "downloading"

        if url.endswith(".xml"):
            status = downloadPluginZeroInstall(url, plugin)
            logger.error("xml") # logfile
        else:
            status = downloadPluginArchive(url, plugin)
            logger.error("zip") # logfile

        if not status:
            # FIXME - Errors!
            installStatus = plugin.status.get('installStatus', 'Unknown')
            result = plugin.status.get('result', 'unknown')
            msg = "Plugin install '%s', Result: '%s'" % (installStatus, result)

            logger.error(msg) # logfile
            models.Message.error(msg) # UI message
            return False
    else:
        # Extract zipfile
        scratch_path = os.path.join(settings.PLUGIN_PATH,"scratch")
        zip_file = os.path.join(scratch_path, zipFile)
        plugin.status["installStatus"] = "extracting zip"

        plugin.name = unzipPlugin(zip_file)

        plugin.path = os.path.join(settings.PLUGIN_PATH, plugin.name)
        plugin.status["installStatus"] = "installing from zip"

        #remove the zip file
        os.unlink(zipFile)

    # Now that it has been downloaded,
    # convert pre-plugin into real db plugin object
    pm = PluginManager()
    (new_plugin, updated) = pm.install(plugin.name, plugin.path)

    # Copy over download status messages and url
    new_plugin.status = plugin.status
    if plugin.url:
        new_plugin.url = plugin.url
    new_plugin.save()

    logger.info("Successfully downloaded and installed plugin %s v%s from '%s'", new_plugin.name, new_plugin.version, url)

    return new_plugin
Exemple #3
0
    def test_init(self):
        with override_settings(PLUGIN_PATH=self.tempdir):
            from iondb.plugins.manager import PluginManager

            pm = PluginManager()
            self.assertEqual(pm.default_plugin_script, "launch.sh")
            self.assertEqual(pm.pluginroot, os.path.normpath(self.tempdir))
Exemple #4
0
 def test_init_no_settings(self):
     with override_settings(PLUGIN_PATH=None):
         from iondb.plugins.manager import PluginManager
         pm = PluginManager()
         self.assertEqual(pm.default_plugin_script, 'launch.sh')
         self.assertEqual(
             pm.pluginroot,
             os.path.normpath(
                 os.path.join("/results", self.gc.plugin_folder)))