def plugin_run(url, phase, cmd, log_dir, package, repository_url, plugin_name): def plugin_filter(plugin_info, platform=None, phase=None, plugin_name=None): result = True if platform: result = platform in plugin_info.platforms if phase: result = result and (phase in plugin_info.phases) if plugin_name: result = result and (plugin_name in plugin_info.name) return result ctx = InstallContext() ctx.host = Host() ctx.host.hostname = "Hostname" ctx.host_urls = list(url) ctx.requested_action = phase ctx.log_directory = log_dir session_filename = os.path.join(log_dir, "session.log") plugins_filename = os.path.join(log_dir, "plugins.log") condoor_filename = os.path.join(log_dir, "condoor.log") if os.path.exists(session_filename): os.remove(session_filename) if os.path.exists(plugins_filename): os.remove(plugins_filename) if os.path.exists(condoor_filename): os.remove(condoor_filename) ctx.log_level = logging.DEBUG ctx.software_packages = list(package) ctx.server_repository_url = repository_url if cmd: ctx.custom_commands = list(cmd) pm = PluginManager() pm.run(ctx, plugin_name) click.echo("\n Plugin execution finished.\n") click.echo("Log files dir: {}".format(log_dir)) click.echo(" {} - device session log".format(session_filename)) click.echo(" {} - plugin execution log".format(plugins_filename)) click.echo(" {} - device connection debug log".format(condoor_filename))
def plugin_list(platform, phase, detail): def plugin_filter(platform, phase, plugin_info): result = True if platform: result = platform in plugin_info.platforms if phase: result = result and (phase in plugin_info.phases) return result pm = PluginManager() pm.filter = partial(plugin_filter, platform, phase) nop = pm.locate_plugins() plugins = pm.load_plugins() if platform: click.echo("Plugins for platform: {}".format(platform)) if phase: click.echo("Plugins for phase: {}".format(phase)) click.echo("Number of plugins: {}\n".format(nop)) print_plugin_info(plugins, detail)
def start(self, ctx): if csmpe_installed: pm = CSMPluginManager(ctx) else: pm = PluginManager() try: if csmpe_installed: pm.dispatch("run") else: pm.run(ctx) except condoor.GeneralError as e: ctx.post_status = e.message ctx.success = False