Esempio n. 1
0
def get_plugin_placeholder_markup(plugins, group_type='all', group_id=None):
    result = []
    manager = PluginManager()
    hidden = get_hidden_plugins(group_type, group_id)
    group_oses = get_member_oses(group_type, group_id)
    display_plugins = [
        p for p in Plugin.objects.order_by('order') if p.name not in hidden
    ]
    for enabled_plugin in display_plugins:
        name = enabled_plugin.name
        yapsy_plugin = manager.get_plugin_by_name(name)
        if not yapsy_plugin:
            continue
        # Skip this plugin if the group's members OS families aren't supported
        # ...but only if this group has any members (group_oses is not empty
        plugin_os_families = set(yapsy_plugin.get_supported_os_families())
        if group_oses and not plugin_os_families.intersection(group_oses):
            continue
        width = yapsy_plugin.get_widget_width(group_type=group_type,
                                              group_id=group_id)
        html = ('<div id="plugin-{}" class="col-md-{}">\n'
                '    <img class="center-block blue-spinner" src="{}"/>\n'
                '</div>\n'.format(name, width, static('img/blue-spinner.gif')))
        result.append({'name': name, 'width': width, 'html': html})

    return order_plugin_output(result, group_type, group_id)
Esempio n. 2
0
def preflight_v2(request):
    """Find plugins that have embedded preflight scripts."""
    # Load in the default plugins if needed
    utils.load_default_plugins()
    manager = PluginManager()
    output = []
    # Old Sal scripts just do a GET; just send everything in that case.
    os_family = None if request.method != 'POST' else request.POST.get(
        'os_family')

    enabled_reports = Report.objects.all()
    enabled_plugins = Plugin.objects.all()
    enabled_detail_plugins = MachineDetailPlugin.objects.all()
    for enabled_plugin in itertools.chain(enabled_reports, enabled_plugins,
                                          enabled_detail_plugins):
        plugin = manager.get_plugin_by_name(enabled_plugin.name)
        if not plugin:
            continue
        if os_family is None or os_family in plugin.get_supported_os_families(
        ):
            scripts = utils.get_plugin_scripts(plugin, hash_only=True)
            if scripts:
                output += scripts

    return HttpResponse(json.dumps(output))
Esempio n. 3
0
def run_profiles_plugin_processing(machine, profiles_list):
    enabled_plugins = Plugin.objects.all()
    enabled_detail_plugins = MachineDetailPlugin.objects.all()
    manager = PluginManager()
    for enabled_plugin in itertools.chain(enabled_plugins, enabled_detail_plugins):
        plugin = manager.get_plugin_by_name(enabled_plugin.name)
        if plugin:
            plugin.profiles_processor(machine, profiles_list)
Esempio n. 4
0
def run_profiles_plugin_processing(machine, profiles_list):
    enabled_plugins = Plugin.objects.all()
    enabled_detail_plugins = MachineDetailPlugin.objects.all()
    manager = PluginManager()
    for enabled_plugin in itertools.chain(enabled_plugins,
                                          enabled_detail_plugins):
        plugin = manager.get_plugin_by_name(enabled_plugin.name)
        if plugin:
            plugin.profiles_processor(machine, profiles_list)
Esempio n. 5
0
def run_plugin_processing(machine, report_data):
    enabled_reports = Report.objects.all()
    enabled_plugins = Plugin.objects.all()
    enabled_detail_plugins = MachineDetailPlugin.objects.all()
    for enabled_plugin in itertools.chain(enabled_reports, enabled_plugins,
                                          enabled_detail_plugins):
        plugin = PluginManager().get_plugin_by_name(enabled_plugin.name)
        if plugin:
            plugin.checkin_processor(machine, report_data)
Esempio n. 6
0
def run_plugin_processing(machine, report_data):
    enabled_reports = Report.objects.all()
    enabled_plugins = Plugin.objects.all()
    enabled_detail_plugins = MachineDetailPlugin.objects.all()
    manager = PluginManager()
    for enabled_plugin in itertools.chain(enabled_reports, enabled_plugins, enabled_detail_plugins):
        plugin = manager.get_plugin_by_name(enabled_plugin.name)
        if plugin:
            plugin.checkin_processor(machine, report_data)
Esempio n. 7
0
def get_machine_detail_placeholder_markup(machine):
    manager = PluginManager()
    result = []
    for enabled_plugin in MachineDetailPlugin.objects.order_by('order'):
        plugin = manager.get_plugin_by_name(enabled_plugin.name)
        if plugin and machine.os_family in plugin.get_supported_os_families():
            html = ('<div id="plugin-{}">'
                    '    <img class="center-block blue-spinner" src="{}"/>'
                    '</div>'.format(enabled_plugin.name, static('img/blue-spinner.gif')))

            result.append({'name': enabled_plugin.name, 'html': html})

    return result
Esempio n. 8
0
def get_machine_detail_placeholder_markup(machine):
    manager = PluginManager()
    result = []
    for enabled_plugin in MachineDetailPlugin.objects.order_by('order'):
        plugin = manager.get_plugin_by_name(enabled_plugin.name)
        if plugin and machine.os_family in plugin.get_supported_os_families():
            html = ('<div id="plugin-{}">'
                    '    <img class="center-block blue-spinner" src="{}"/>'
                    '</div>'.format(enabled_plugin.name,
                                    static('img/blue-spinner.gif')))

            result.append({'name': enabled_plugin.name, 'html': html})

    return result
Esempio n. 9
0
def get_active_and_inactive_plugins(plugin_kind='machines'):
    output = {'active': [], 'inactive': []}
    model = PLUGIN_MODELS[plugin_kind][0]
    plugin_type = PLUGIN_MODELS[plugin_kind][1]

    for plugin in PluginManager().get_all_plugins():
        # Filter out plugins of other types.
        # TODO: This can be cleaned up once old-school plugins are
        # removed.
        if not isinstance(plugin, plugin_type):
            if not isinstance(plugin, OldPluginAdapter):
                continue
            elif DEPRECATED_PLUGIN_TYPES[
                    plugin.get_plugin_type()] != plugin_type:
                continue

        try:
            db_plugin = model.objects.get(name=plugin.name)
            output['active'].append((plugin, db_plugin))
        except model.DoesNotExist:
            output['inactive'].append(plugin)

    if not model == Report:
        output['active'].sort(key=lambda i: i[1].order)

    return output
Esempio n. 10
0
def get_active_and_inactive_plugins(plugin_kind='machines'):
    output = {'active': [], 'inactive': []}
    model = PLUGIN_MODELS[plugin_kind][0]
    plugin_type = PLUGIN_MODELS[plugin_kind][1]

    for plugin in PluginManager().get_all_plugins():
        # Filter out plugins of other types.
        # TODO: This can be cleaned up once old-school plugins are
        # removed.
        if not isinstance(plugin, plugin_type):
            if not isinstance(plugin, OldPluginAdapter):
                continue
            # If there's no type method, assume it's basically Widget.
            elif not hasattr(plugin,
                             'get_plugin_type') and plugin_type != Widget:
                continue
            # Finally, look up known 'types' in table, assuming it's a
            # Widget if it's an unknown type.
            elif DEPRECATED_PLUGIN_TYPES.get(plugin.get_plugin_type(),
                                             Widget) != plugin_type:
                continue

        try:
            db_plugin = model.objects.get(name=plugin.name)
            output['active'].append((plugin, db_plugin))
        except model.DoesNotExist:
            output['inactive'].append(plugin)

    if not model == Report:
        output['active'].sort(key=lambda i: i[1].order)

    return output
Esempio n. 11
0
def reload_plugins_model():
    """Remove now-absent plugins from db, refresh defaults if needed."""
    if settings.DEBUG:
        logging.getLogger('yapsy').setLevel(logging.WARNING)

    load_default_plugins()
    found = {plugin.name for plugin in PluginManager().get_all_plugins()}
    for model in (Plugin, Report, MachineDetailPlugin):
        _update_plugin_record(model, found)
Esempio n. 12
0
def preflight_v2_get_script(request, plugin_name, script_name):
    output = []
    plugin = PluginManager().get_plugin_by_name(plugin_name)
    if plugin:
        content = server.utils.get_plugin_scripts(plugin, script_name=script_name)
        if content:
            output += content

    return HttpResponse(json.dumps(output))
Esempio n. 13
0
def process_plugin(request, plugin_name, group_type='all', group_id=None):
    plugin = PluginManager().get_plugin_by_name(plugin_name)

    # Ensure that a plugin was instantiated before proceeding.
    if not plugin:
        raise Http404

    # Ensure the request is not for a disabled plugin.
    # TODO: This is to handle old-school plugins. It can be removed at
    # the next major version.
    if isinstance(plugin, OldPluginAdapter):
        model = DEPRECATED_PLUGIN_TYPES[plugin.get_plugin_type()]
    elif isinstance(plugin, Widget):
        model = Plugin
    elif isinstance(plugin, ReportPlugin):
        model = Report
    else:
        model = MachineDetailPlugin
        get_object_or_404(model, name=plugin_name)

    return plugin
Esempio n. 14
0
def process_plugin(request, plugin_name, group_type='all', group_id=None):
    plugin = PluginManager().get_plugin_by_name(plugin_name)

    # Ensure that a plugin was instantiated before proceeding.
    if not plugin:
        raise Http404

    # Ensure the request is not for a disabled plugin.
    # TODO: This is to handle old-school plugins. It can be removed at
    # the next major version.
    if isinstance(plugin, OldPluginAdapter):
        model = DEPRECATED_PLUGIN_TYPES[plugin.get_plugin_type()]
    elif isinstance(plugin, Widget):
        model = Plugin
    elif isinstance(plugin, ReportPlugin):
        model = Report
    else:
        model = MachineDetailPlugin
        get_object_or_404(model, name=plugin_name)

    return plugin
Esempio n. 15
0
def preflight_v2(request):
    """Find plugins that have embedded preflight scripts."""
    # Load in the default plugins if needed
    utils.load_default_plugins()
    manager = PluginManager()
    output = []
    # Old Sal scripts just do a GET; just send everything in that case.
    os_family = None if request.method != 'POST' else request.POST.get('os_family')

    enabled_reports = Report.objects.all()
    enabled_plugins = Plugin.objects.all()
    enabled_detail_plugins = MachineDetailPlugin.objects.all()
    for enabled_plugin in itertools.chain(enabled_reports, enabled_plugins, enabled_detail_plugins):
        plugin = manager.get_plugin_by_name(enabled_plugin.name)
        if not plugin:
            continue
        if os_family is None or os_family in plugin.get_supported_os_families():
            scripts = utils.get_plugin_scripts(plugin, hash_only=True)
            if scripts:
                output += scripts

    return HttpResponse(json.dumps(output))
Esempio n. 16
0
def get_plugin_placeholder_markup(plugins, group_type='all', group_id=None):
    result = []
    manager = PluginManager()
    hidden = get_hidden_plugins(group_type, group_id)
    group_oses = get_member_oses(group_type, group_id)
    display_plugins = [p for p in Plugin.objects.order_by('order') if p.name not in hidden]
    for enabled_plugin in display_plugins:
        name = enabled_plugin.name
        yapsy_plugin = manager.get_plugin_by_name(name)
        if not yapsy_plugin:
            continue
        # Skip this plugin if the group's members OS families aren't supported
        # ...but only if this group has any members (group_oses is not empty
        plugin_os_families = set(yapsy_plugin.get_supported_os_families())
        if group_oses and not plugin_os_families.intersection(group_oses):
            continue
        width = yapsy_plugin.get_widget_width(group_type=group_type, group_id=group_id)
        html = ('<div id="plugin-{}" class="col-md-{}">\n'
                '    <img class="center-block blue-spinner" src="{}"/>\n'
                '</div>\n'.format(name, width, static('img/blue-spinner.gif')))
        result.append({'name': name, 'width': width, 'html': html})

    return order_plugin_output(result, group_type, group_id)
Esempio n. 17
0
def process_plugin(plugin_name, group_type='all', group_id=None):
    plugin = PluginManager.get_plugin_by_name(plugin_name)

    # Ensure that a plugin was instantiated before proceeding.
    if not plugin:
        raise Http404

    # Ensure the request is not for a disabled plugin.
    if isinstance(plugin, Widget):
        model = Plugin
    elif isinstance(plugin, ReportPlugin):
        model = Report
    else:
        model = MachineDetailPlugin
    get_object_or_404(model, name=plugin_name)

    return plugin
Esempio n. 18
0
def get_active_and_inactive_plugins(plugin_kind='machines'):
    output = {'active': [], 'inactive': []}
    model = PLUGIN_MODELS[plugin_kind][0]
    plugin_type = PLUGIN_MODELS[plugin_kind][1]

    for plugin in PluginManager().get_all_plugins():
        # Filter out plugins of other types.
        if not isinstance(plugin, plugin_type):
            continue

        try:
            db_plugin = model.objects.get(name=plugin.name)
            output['active'].append((plugin, db_plugin))
        except model.DoesNotExist:
            output['inactive'].append(plugin)

    if not model == Report:
        output['active'].sort(key=lambda i: i[1].order)

    return output
Esempio n. 19
0
def reload_plugins_model():
    """Remove now-absent plugins from db, refresh defaults if needed."""
    load_default_plugins()
    found = {plugin.name for plugin in PluginManager.get_all_plugins()}
    for model in (Plugin, Report, MachineDetailPlugin):
        _update_plugin_record(model, found)