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)
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
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))
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)))