示例#1
0
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))
示例#2
0
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)
示例#3
0
文件: iosxr.py 项目: kstaniek/csm
    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