Пример #1
0
def module_handler(request):
    """
    Handle module request from UI. Response from this request builds
    UI Explorer tree
    """
    logging.debug("module_handler: enter")
    lst = []
    if request.user.is_authenticated():
        path = request.GET.get('node', '')
        deep = request.GET.get('deep', '')
        username = request.user.username
        if path == 'root':
            # Request for root models
            modules = ModuleAdmin.get_modulelist(username)
            modules.sort()
            for m in modules:
                lst.append(node_t.format(m.split('@')[0]))
        else:
            modules = [path.split('/')[0]]
            for module in modules:
                filename = ModuleAdmin.cxml_path(username, module)
                if filename is not None:
                    logging.debug("module_handler: loading " + filename)
                    module = cxml.get_cxml(filename)
                    nodes = module.get_lazy_subtree(path, deep)
                    lst.extend([ET.tostring(node) for node in nodes])
                else:
                    logging.error("module_handler: %s not found !!" + module)

    logging.debug("module_handler: exit")
    return render_to_response('loader.xml', {'nodes': lst}, RequestContext(request))
Пример #2
0
def module_handler(request):
    """
    Handle module request from UI. Response from this request builds
    UI Explorer tree
    """
    logger.debug("module_handler: enter")
    lst = []
    if request.user.is_authenticated():
        path = request.GET.get('node', '')
        deep = request.GET.get('deep', '')
        username = request.user.username
        if path == 'root':
            # Request for root models
            modules = ModuleAdmin.get_modulelist(username)
            modules.sort()
            for m in modules:
                lst.append(node_t.format(m.split('@')[0]))
        else:
            modules = [path.split('/')[0]]
            for module in modules:
                filename = ModuleAdmin.cxml_path(username, module)
                if filename is not None:
                    logger.debug("module_handler: loading " + filename)
                    module = cxml.get_cxml(filename)
                    nodes = module.get_lazy_subtree(path, deep)
                    lst.extend([ET.tostring(node) for node in annotate(nodes)])
                else:
                    logger.error("module_handler: %s not found !!" + module)

    logger.debug("module_handler: exit")
    return render_to_response('loader.xml', {'nodes': lst},
                              RequestContext(request))
Пример #3
0
def gen_netconf(username, request, mode):
    msg = ''
    rpc = ''

    _format = request.get('format', 'xpath')
    if mode == '': mode = request.get('operation', '')

    logging.debug('Generating netconf RPC, operation : "%s" format: %s' %
                  (mode, _format))

    if _format == 'raw':
        rpc = request.find('rpc').text
        rpc = rpc.replace('>', '>')
        rpc = rpc.replace('&lt;', '<')
        return convert_rpc(rpc, mode)
    # Parse test-payload key-values pairs for each modules and
    # create a dictionary of modules.
    modules = parseRequest(request)

    # Process each module key-value separatly
    for name in modules:
        module = modules[name]
        kvDict = module.get_keyvalues()
        logging.debug('Opening file %s.xml' % name)

        filename = ModuleAdmin.cxml_path(username, name)
        if filename is None:
            logging.debug('file %s.xml not found !!' % name)
            continue

        cx = cxml.get_cxml(filename)
        tree = cx.getroot()
        logging.info("Root node %s" % tree.get('name'))

        ns = get_namespace(tree)

        # get derived namespaces
        prefixes = module.get_namespace_pfx()
        for pfx in prefixes:
            ns += get_namespace(tree, pfx)

        # start processing CXML
        for child in tree:
            if child.tag != 'namespace':
                msg += process_xml(tree, kvDict, child, name, ns, mode)

    # Finally build RPC header
    rpc += build_rpc(request, msg, mode)
    logging.debug('Generated netconf RPC')
    logging.debug(rpc)
    return rpc
Пример #4
0
def gen_netconf(username, request, mode):
    msg = ''
    rpc = ''

    _format = request.get('format', 'xpath')    
    if mode == '': mode = request.get('operation', '')

    logging.debug('Generating netconf RPC, operation : "%s" format: %s' % (mode, _format))
    
    if _format == 'raw':
        rpc = request.find('rpc').text
        rpc = rpc.replace('&gt;','>')
        rpc = rpc.replace('&lt;','<')
        return convert_rpc(rpc, mode)
    # Parse test-payload key-values pairs for each modules and
    # create a dictionary of modules.
    modules =  parseRequest(request)

    # Process each module key-value separatly
    for name in modules:
        module = modules[name]
        kvDict = module.get_keyvalues()
        logging.debug('Opening file %s.xml' % name)
        
        filename = ModuleAdmin.cxml_path(username, name)
        if filename is None:
            logging.debug('file %s.xml not found !!' % name)
            continue

        cx = cxml.get_cxml(filename)
        tree = cx.getroot()
        logging.info("Root node %s" % tree.get('name'))

        ns = get_namespace(tree)

        # get derived namespaces
        prefixes = module.get_namespace_pfx()
        for pfx in prefixes:
            ns += get_namespace(tree, pfx)

        # start processing CXML
        for child in tree:
            if child.tag != 'namespace':
                msg += process_xml(tree, kvDict, child, name, ns, mode)

    # Finally build RPC header
    rpc += build_rpc(request, msg, mode)
    logging.debug('Generated netconf RPC')
    logging.debug(rpc)
    return rpc