Beispiel #1
0
def view(view_type):
    devices, parameters = fetch_all('Device'), get_one('Parameters').serialized
    return dict(template=f'{view_type}_view.html',
                pools=fetch_all('Pool'),
                parameters=parameters,
                view=request.form.get('view', parameters['default_view']),
                google_earth_form=GoogleEarthForm(request.form),
                add_device_form=AddDevice(request.form),
                add_link_form=AddLink(request.form),
                device_subtypes=device_subtypes,
                link_colors=link_subtype_to_color,
                name_to_id={d.name: id
                            for id, d in enumerate(devices)},
                devices=serialize('Device'),
                links=serialize('Link'))
Beispiel #2
0
def pool_management():
    return dict(
        form=AddPoolForm(request.form),
        pool_object_form=PoolObjectsForm(request.form),
        fields=pool_table_properties,
        pools=serialize('Pool')
    )
Beispiel #3
0
def workflow_management() -> dict:
    return dict(
        compare_logs_form=CompareLogsForm(request.form),
        fields=workflow_table_properties,
        workflows=serialize("Workflow"),
        workflow_creation_form=JobForm(request.form),
    )
Beispiel #4
0
def log_management():
    log_filtering_form = LogFilteringForm(request.form)
    return render_template('log_management.html',
                           log_filtering_form=log_filtering_form,
                           names=pretty_names,
                           fields=('source', 'content'),
                           logs=serialize('Log'))
Beispiel #5
0
def syslog_automation():
    log_automation_form = LogAutomationForm(request.form)
    log_automation_form.jobs.choices = choices('Job')
    return render_template('log_automation.html',
                           log_automation_form=log_automation_form,
                           names=pretty_names,
                           fields=('name', 'source', 'content'),
                           log_rules=serialize('LogRule'))
Beispiel #6
0
def service_management() -> dict:
    return dict(
        compare_logs_form=CompareLogsForm(request.form),
        fields=service_table_properties,
        service_form=JobForm(request.form),
        services_classes=list(service_classes),
        services=serialize("Service"),
    )
Beispiel #7
0
def device_management():
    return dict(
        fields=device_table_properties,
        devices=serialize('Device'),
        add_device_form=AddDevice(request.form),
        device_automation_form=DeviceAutomationForm(request.form),
        gotty_connection_form=GottyConnectionForm(request.form)
    )
Beispiel #8
0
def configuration_management():
    return dict(
        fields=device_configuration_properties,
        devices=serialize('Device'),
        compare_configurations_form=CompareConfigurationsForm(request.form),
        add_device_form=ConfigurationManagementForm(request.form),
        gotty_connection_form=GottyConnectionForm(request.form),
        poller_form=PollerForm(request.form),
        search_configurations_form=SearchConfigurationForm(request.form))
Beispiel #9
0
def task_management():
    scheduling_form = SchedulingForm(request.form)
    scheduling_form.job.choices = choices('Job')
    return render_template(
        f'task_management.html',
        fields=task_public_properties,
        tasks=serialize('Task'),
        scheduling_form=scheduling_form
    )
Beispiel #10
0
def filter_logs():
    logs = [
        log for log in serialize('Log') if all(
            request.form[prop] in str(val) if not prop +
            'regex' in request.form else search(request.form[prop], str(val))
            for prop, val in log.items()
            if prop in request.form and request.form[prop])
    ]
    return logs
Beispiel #11
0
def view(view_type: str) -> dict:
    devices, parameters = fetch_all("Device"), get_one("Parameters").serialized
    return dict(
        template=f"{view_type}_view.html",
        pools=fetch_all("Pool"),
        parameters=parameters,
        view=request.form.get("view", parameters["default_view"]),
        google_earth_form=GoogleEarthForm(request.form),
        add_device_form=AddDevice(request.form),
        add_link_form=AddLink(request.form),
        device_subtypes=device_subtypes,
        gotty_connection_form=GottyConnectionForm(request.form),
        link_colors=link_subtype_to_color,
        name_to_id={d.name: id
                    for id, d in enumerate(devices)},
        devices=serialize("Device"),
        links=serialize("Link"),
    )
Beispiel #12
0
def pool_management():
    pool_object_form = PoolObjectsForm(request.form)
    pool_object_form.devices.choices = choices('Device')
    pool_object_form.links.choices = choices('Link')
    return render_template('pool_management.html',
                           form=AddPoolForm(request.form),
                           pool_object_form=pool_object_form,
                           names=pretty_names,
                           fields=pool_table_properties,
                           pools=serialize('Pool'))
Beispiel #13
0
def link_management():
    add_link_form = AddLink(request.form)
    devices = [(l.name, l.name) for l in fetch_all('Device')]
    add_link_form.source_name.choices = devices
    add_link_form.destination_name.choices = devices
    return render_template('link_management.html',
                           names=pretty_names,
                           fields=link_table_properties,
                           links=serialize('Link'),
                           add_link_form=add_link_form)
Beispiel #14
0
def export_topology():
    workbook = Workbook()
    for obj_type in ('Device', 'Link'):
        sheet = workbook.add_sheet(obj_type)
        for index, property in enumerate(export_properties[obj_type]):
            sheet.write(0, index, property)
            for obj_index, obj in enumerate(serialize(obj_type), 1):
                sheet.write(obj_index, index, obj[property])
    workbook.save(Path.cwd() / 'projects' / 'objects.xls')
    return jsonify(True)
Beispiel #15
0
def object_export(request, path_app):
    workbook = Workbook()
    for obj_type in ('Device', 'Link'):
        sheet = workbook.add_sheet(obj_type)
        for index, property in enumerate(export_properties[obj_type]):
            sheet.write(0, index, property)
            for obj_index, obj in enumerate(serialize(obj_type), 1):
                sheet.write(obj_index, index, obj[property])
    workbook.save(path_app / 'projects' / f'{request["name"]}.xls')
    return True
Beispiel #16
0
def object_export(request: dict, path_app: PosixPath) -> bool:
    workbook = Workbook()
    for obj_type in ("Device", "Link"):
        sheet = workbook.add_sheet(obj_type)
        for index, property in enumerate(export_properties[obj_type]):
            sheet.write(0, index, property)
            for obj_index, obj in enumerate(serialize(obj_type), 1):
                sheet.write(obj_index, index, obj[property])
    workbook.save(path_app / "projects" / f'{request["export_filename"]}.xls')
    return True
Beispiel #17
0
def view(view_type):
    devices = fetch_all('Device')
    add_link_form = AddLink(request.form)
    form_devices = [(l.name, l.name) for l in fetch_all('Device')]
    add_link_form.source_name.choices = form_devices
    add_link_form.destination_name.choices = form_devices
    labels = {'device': 'name', 'link': 'name'}
    if 'view_options' in request.form:
        labels = {
            'device': request.form['device_label'],
            'link': request.form['link_label']
        }
    if len(devices) < 50:
        view = 'glearth'
    elif len(devices) < 2000:
        view = 'leaflet'
    else:
        view = 'markercluster'
    if 'view' in request.form:
        view = request.form['view']
    name_to_id = {device.name: id for id, device in enumerate(devices)}
    return render_template(f'{view_type}_view.html',
                           pools=fetch_all('Pool'),
                           parameters=get_one('Parameters').serialized,
                           view=view,
                           view_options_form=ViewOptionsForm(request.form),
                           google_earth_form=GoogleEarthForm(request.form),
                           add_device_form=AddDevice(request.form),
                           add_link_form=add_link_form,
                           device_fields=device_public_properties,
                           link_fields=link_public_properties,
                           labels=labels,
                           names=pretty_names,
                           device_subtypes=device_subtypes,
                           link_colors=link_subtype_to_color,
                           name_to_id=name_to_id,
                           devices=serialize('Device'),
                           links=serialize('Link'))
Beispiel #18
0
def filter_logs():
    logs = [
        log for log in serialize('Log') if all(
            # if the regex property is not in the request, the
            # regex box is unticked and we only check that the values of the
            # filters are contained in the values of the log
            request.form[prop] in str(val) if not prop +
            'regex' in request.form
            # if it is ticked, we use re.search to check that the value
            # of the device property matches the regular expression,
            # providing that the property field in the form is not empty
            # (empty field <==> property ignored)
            else search(request.form[prop], str(val))
            for prop, val in log.items()
            if prop in request.form and request.form[prop])
    ]
    return jsonify(logs)
Beispiel #19
0
def device_management():
    return render_template('device_management.html',
                           names=pretty_names,
                           fields=device_public_properties,
                           devices=serialize('Device'),
                           add_device_form=AddDevice(request.form))
Beispiel #20
0
def user_management() -> dict:
    return dict(
        fields=user_table_properties,
        users=serialize("User"),
        form=AddUser(request.form),
    )
Beispiel #21
0
def link_management():
    return dict(
        fields=link_table_properties,
        links=serialize('Link'),
        add_link_form=AddLink(request.form)
    )
Beispiel #22
0
def device_management():
    return dict(fields=device_public_properties,
                devices=serialize('Device'),
                add_device_form=AddDevice(request.form),
                device_automation_form=DeviceAutomationForm(request.form))
Beispiel #23
0
def log_management() -> dict:
    return dict(fields=log_public_properties, logs=serialize("Log"))
Beispiel #24
0
def log_automation() -> dict:
    return dict(
        log_automation_form=LogAutomationForm(request.form),
        fields=log_rule_table_properties,
        log_rules=serialize("LogRule"),
    )
Beispiel #25
0
def log_automation():
    return dict(log_automation_form=LogAutomationForm(request.form,
                                                      prefix='logrule-'),
                fields=('name', 'source', 'content'),
                log_rules=serialize('LogRule'))
Beispiel #26
0
def users():
    return render_template('user_management.html',
                           fields=user_public_properties,
                           names=pretty_names,
                           users=serialize('User'),
                           form=AddUser(request.form))
Beispiel #27
0
def log_management():
    return dict(log_filtering_form=LogFilteringForm(request.form),
                fields=('source', 'content'),
                logs=serialize('Log'))
Beispiel #28
0
def instance_management() -> dict:
    return dict(
        fields=instance_table_properties,
        instances=serialize("Instance"),
        form=AddInstance(request.form),
    )
Beispiel #29
0
def task_management():
    return dict(fields=task_public_properties,
                tasks=serialize('Task'),
                scheduling_form=SchedulingForm(request.form))
Beispiel #30
0
def log_management():
    return dict(fields=log_public_properties, logs=serialize('Log'))