示例#1
0
文件: views.py 项目: LiuJux/nav
def set_interface_values(account, interface, request):
    """Use snmp to set the values in the request on the netbox"""

    fac = get_factory(interface.netbox)

    if fac:
        # Order is important here, set_voice need to be before set_vlan
        set_voice_vlan(fac, interface, request)
        set_ifalias(account, fac, interface, request)
        set_vlan(account, fac, interface, request)
        set_admin_status(fac, interface, request)
        save_to_database([interface])
    else:
        messages.info(request, 'Could not connect to netbox')
示例#2
0
文件: views.py 项目: hmpf/nav
def set_interface_values(account, interface, request):
    """Configures an interface according to the values from the request"""

    handler = get_management_handler(interface.netbox)

    if handler:
        # Order is important here, set_voice need to be before set_vlan
        set_voice_vlan(handler, interface, request)
        set_ifalias(account, handler, interface, request)
        set_vlan(account, handler, interface, request)
        set_admin_status(handler, interface, request)
        save_to_database([interface])
    else:
        messages.info(request, 'Could not connect to netbox')
示例#3
0
文件: views.py 项目: Cloudxtreme/nav
def populate_infodict(request, account, netbox, interfaces):
    """Populate a dictionary used in every http response"""

    allowed_vlans = []
    voice_vlan = None
    readonly = False
    try:
        fac = get_and_populate_livedata(netbox, interfaces)
        allowed_vlans = find_and_populate_allowed_vlans(
            account, netbox, interfaces, fac)
        voice_vlan = fetch_voice_vlan_for_netbox(request, fac)
        mark_detained_interfaces(interfaces)
    except TimeOutException:
        readonly = True
        messages.error(
            request, "Timeout when contacting %s. Values displayed "
            "are from database" % netbox.sysname)
        if not netbox.read_only:
            messages.error(request, "Read only community not set")
    except SnmpError:
        readonly = True
        messages.error(
            request, "SNMP error when contacting %s. Values "
            "displayed are from database" % netbox.sysname)

    if check_read_write(netbox, request):
        readonly = True

    ifaliasformat = get_ifaliasformat()
    aliastemplate = ''
    if ifaliasformat:
        tmpl = get_aliastemplate()
        aliastemplate = tmpl.render(Context({'ifaliasformat': ifaliasformat}))

    save_to_database(interfaces)

    if voice_vlan:
        set_voice_vlan_attribute(voice_vlan, interfaces)

    info_dict = get_base_context([(netbox.sysname, )])
    info_dict.update({
        'interfaces': interfaces,
        'netbox': netbox,
        'voice_vlan': voice_vlan,
        'allowed_vlans': allowed_vlans,
        'account': account,
        'readonly': readonly,
        'aliastemplate': aliastemplate
    })
    return info_dict
示例#4
0
def populate_infodict(request, account, netbox, interfaces):
    """Populate a dictionary used in every http response"""

    allowed_vlans = []
    voice_vlan = None
    readonly = False
    try:
        fac = get_and_populate_livedata(netbox, interfaces)
        allowed_vlans = find_and_populate_allowed_vlans(account, netbox,
                                                        interfaces, fac)
        voice_vlan = fetch_voice_vlan_for_netbox(request, fac)
        mark_detained_interfaces(interfaces)
    except TimeOutException:
        readonly = True
        messages.error(request, "Timeout when contacting %s. Values displayed "
                                "are from database" % netbox.sysname)
        if not netbox.read_only:
            messages.error(request, "Read only community not set")
    except SnmpError:
        readonly = True
        messages.error(request, "SNMP error when contacting %s. Values "
                                "displayed are from database" % netbox.sysname)

    if check_read_write(netbox, request):
        readonly = True

    ifaliasformat = get_ifaliasformat()
    aliastemplate = ''
    if ifaliasformat:
        tmpl = get_aliastemplate()
        aliastemplate = tmpl.render(Context({'ifaliasformat': ifaliasformat}))

    save_to_database(interfaces)

    if voice_vlan:
        set_voice_vlan_attribute(voice_vlan, interfaces)

    info_dict = get_base_context([(netbox.sysname, )])
    info_dict.update({'interfaces': interfaces,
                      'netbox': netbox,
                      'voice_vlan': voice_vlan,
                      'allowed_vlans': allowed_vlans,
                      'account': account,
                      'readonly': readonly,
                      'aliastemplate': aliastemplate})
    return info_dict
示例#5
0
文件: views.py 项目: LiuJux/nav
def populate_infodict(request, netbox, interfaces):
    """Populate a dictionary used in every http response"""
    allowed_vlans = []
    voice_vlan = None
    readonly = False
    config = read_config()

    try:
        fac = get_and_populate_livedata(netbox, interfaces)
        allowed_vlans = find_and_populate_allowed_vlans(
            request.account, netbox, interfaces, fac)
        voice_vlan = fetch_voice_vlan_for_netbox(request, fac, config)
        if voice_vlan:
            if is_cisco_voice_enabled(config) and is_cisco(netbox):
                set_voice_vlan_attribute_cisco(voice_vlan, interfaces, fac)
            else:
                set_voice_vlan_attribute(voice_vlan, interfaces)
        mark_detained_interfaces(interfaces)
        if is_dot1x_enabled(config):
            add_dot1x_info(interfaces, fac)
    except TimeOutException:
        readonly = True
        messages.error(
            request, "Timeout when contacting %s. Values displayed "
            "are from database" % netbox.sysname)
        if not netbox.read_only:
            messages.error(request, "Read only community not set")
    except SnmpError:
        readonly = True
        messages.error(
            request, "SNMP error when contacting %s. Values "
            "displayed are from database" % netbox.sysname)

    if check_read_write(netbox, request):
        readonly = True

    ifaliasformat = get_ifaliasformat(config)
    aliastemplate = ''
    if ifaliasformat:
        tmpl = get_aliastemplate()
        aliastemplate = tmpl.render({'ifaliasformat': ifaliasformat})

    save_to_database(interfaces)

    auditlog_api_parameters = {
        'object_model': 'interface',
        'object_pks': ','.join([str(i.pk) for i in interfaces]),
        'subsystem': 'portadmin'
    }

    info_dict = get_base_context([(netbox.sysname, )], form=get_form(request))
    info_dict.update({
        'interfaces':
        interfaces,
        'netbox':
        netbox,
        'voice_vlan':
        voice_vlan,
        'allowed_vlans':
        allowed_vlans,
        'readonly':
        readonly,
        'aliastemplate':
        aliastemplate,
        'trunk_edit':
        get_trunk_edit(config),
        'auditlog_api_parameters':
        json.dumps(auditlog_api_parameters)
    })
    return info_dict
示例#6
0
文件: views.py 项目: hmpf/nav
def populate_infodict(request, netbox, interfaces):
    """Populate a dictionary used in every http response"""
    allowed_vlans = []
    voice_vlan = None
    readonly = False
    handler = None

    try:
        handler = get_and_populate_livedata(netbox, interfaces)
        allowed_vlans = find_and_populate_allowed_vlans(
            request.account, netbox, interfaces, handler)
        voice_vlan = fetch_voice_vlan_for_netbox(request, handler)
        if voice_vlan:
            if CONFIG.is_cisco_voice_enabled() and is_cisco(netbox):
                set_voice_vlan_attribute_cisco(voice_vlan, interfaces, handler)
            else:
                set_voice_vlan_attribute(voice_vlan, interfaces)
        mark_detained_interfaces(interfaces)
        if CONFIG.is_dot1x_enabled():
            add_dot1x_info(interfaces, handler)
    except NoResponseError:
        readonly = True
        messages.error(
            request,
            "%s did not respond within the set timeouts. Values displayed are from database"
            % netbox.sysname,
        )
        if isinstance(handler, SNMPHandler) and not netbox.read_only:
            messages.error(request, "Read only community not set")
    except ProtocolError:
        readonly = True
        messages.error(
            request,
            "Protocol error when contacting %s. Values displayed are from database"
            % netbox.sysname,
        )
    except DeviceNotConfigurableError as error:
        readonly = True
        messages.error(request, str(error))

    if handler and not handler.is_configurable():
        add_readonly_reason(request, handler)
        readonly = True

    ifaliasformat = CONFIG.get_ifaliasformat()
    aliastemplate = ''
    if ifaliasformat:
        tmpl = get_aliastemplate()
        aliastemplate = tmpl.render({'ifaliasformat': ifaliasformat})

    save_to_database(interfaces)

    auditlog_api_parameters = {
        'object_model': 'interface',
        'object_pks': ','.join([str(i.pk) for i in interfaces]),
        'subsystem': 'portadmin',
    }

    info_dict = get_base_context([(netbox.sysname, )], form=get_form(request))
    info_dict.update({
        'handlertype':
        type(handler).__name__,
        'interfaces':
        interfaces,
        'netbox':
        netbox,
        'voice_vlan':
        voice_vlan,
        'allowed_vlans':
        allowed_vlans,
        'readonly':
        readonly,
        'aliastemplate':
        aliastemplate,
        'trunk_edit':
        CONFIG.get_trunk_edit(),
        'auditlog_api_parameters':
        json.dumps(auditlog_api_parameters),
    })
    return info_dict
示例#7
0
def set_interface_values(account, interface, request):
    """Use snmp to set the values in the request on the netbox"""
    try:
        fac = SNMPFactory.get_instance(interface.netbox)
    except SnmpError, error:
        _logger.error('Error getting snmpfactory instance %s: %s',
                      interface.netbox, error)
        messages.info(request, 'Could not connect to netbox')
    else:
        # Order is important here, set_voice need to be before set_vlan
        set_voice_vlan(fac, interface, request)
        set_ifalias(account, fac, interface, request)
        set_vlan(account, fac, interface, request)
        set_admin_status(fac, interface, request)
        write_to_memory(fac)
        save_to_database([interface])


def build_ajax_messages(request):
    """Create a structure suitable for converting to json from messages"""
    ajax_messages = []
    for message in messages.get_messages(request):
        ajax_messages.append({
            'level': message.level,
            'message': message.message,
            'extra_tags': message.tags
        })
    return ajax_messages


def set_ifalias(account, fac, interface, request):
示例#8
0
文件: views.py 项目: Cloudxtreme/nav
def set_interface_values(account, interface, request):
    """Use snmp to set the values in the request on the netbox"""
    try:
        fac = SNMPFactory.get_instance(interface.netbox)
    except SnmpError, error:
        _logger.error('Error getting snmpfactory instance %s: %s',
                      interface.netbox, error)
        messages.info(request, 'Could not connect to netbox')
    else:
        # Order is important here, set_voice need to be before set_vlan
        set_voice_vlan(fac, interface, request)
        set_ifalias(account, fac, interface, request)
        set_vlan(account, fac, interface, request)
        set_admin_status(fac, interface, request)
        write_to_memory(fac)
        save_to_database([interface])


def build_ajax_messages(request):
    """Create a structure suitable for converting to json from messages"""
    ajax_messages = []
    for message in messages.get_messages(request):
        ajax_messages.append({
            'level': message.level,
            'message': message.message,
            'extra_tags': message.tags
        })
    return ajax_messages


def set_ifalias(account, fac, interface, request):