Exemplo n.º 1
0
    def get_config(self, xml_str):
        """ get_config """

        con_obj = None
        try:
            con_obj = self.mc.get(filter=xml_str)
        except RPCError as err:
            self._module.fail_json(msg='Error: %s' % to_native(err).replace("\r\n", ""))

        set_id = get_nc_set_id(con_obj.xml)
        if not set_id:
            return con_obj.xml

        # continue to get next
        xml_str = con_obj.xml
        while set_id:
            set_attr = dict()
            set_attr["set-id"] = str(set_id)
            xsd_fetch = xml_.new_ele_ns('get-next', "http://www.huawei.com/netconf/capability/base/1.0", set_attr)
            # get next data
            try:
                con_obj_next = self.mc.dispatch(xsd_fetch)
            except RPCError as err:
                self._module.fail_json(msg='Error: %s' % to_native(err).replace("\r\n", ""))

            if "<data/>" in con_obj_next.xml:
                break

            # merge two xml data
            xml_str = merge_nc_xml(xml_str, con_obj_next.xml)
            set_id = get_nc_set_id(con_obj_next.xml)

        return xml_str
Exemplo n.º 2
0
    def get_config(self, xml_str):
        """ get_config """

        con_obj = None
        try:
            con_obj = self.mc.get(filter=xml_str)
        except RPCError as err:
            self._module.fail_json(msg='Error: %s' % to_native(err).replace("\r\n", ""))

        set_id = get_nc_set_id(con_obj.xml)
        if not set_id:
            return con_obj.xml

        # continue to get next
        xml_str = con_obj.xml
        while set_id:
            set_attr = dict()
            set_attr["set-id"] = str(set_id)
            xsd_fetch = xml_.new_ele_ns('get-next', "http://www.huawei.com/netconf/capability/base/1.0", set_attr)
            # get next data
            try:
                con_obj_next = self.mc.dispatch(xsd_fetch)
            except RPCError as err:
                self._module.fail_json(msg='Error: %s' % to_native(err).replace("\r\n", ""))

            if "<data/>" in con_obj_next.xml:
                break

            # merge two xml data
            xml_str = merge_nc_xml(xml_str, con_obj_next.xml)
            set_id = get_nc_set_id(con_obj_next.xml)

        return xml_str
Exemplo n.º 3
0
    def get_config(self, **kwargs):
        """ get_config """

        filterstr = kwargs["filter"]
        con_obj = self.mc.get(filter=filterstr)
        set_id = get_nc_set_id(con_obj.xml)
        if not set_id:
            return con_obj

        # continue to get next
        xml_str = con_obj.xml
        while set_id:
            set_attr = dict()
            set_attr["set-id"] = str(set_id)
            xsd_fetch = xml_.new_ele_ns(
                'get-next',
                "http://www.huawei.com/netconf/capability/base/1.0", set_attr)
            # get next data
            con_obj_next = self.mc.dispatch(xsd_fetch)
            if "<data/>" in con_obj_next.xml:
                break
            # merge two xml data
            xml_str = merge_xml(xml_str, con_obj_next.xml)
            set_id = get_nc_set_id(con_obj_next.xml)

        con_obj._raw = xml_str
        return con_obj
Exemplo n.º 4
0
def get_nc_next(module, xml_str):
    """ get_nc_next for exchange capability """

    conn = get_nc_connection(module)
    result = None
    if xml_str is not None:
        response = conn.get(xml_str, if_rpc_reply=True)
        result = response.find('./*')
        set_id = response.get('set-id')
        while True and set_id is not None:
            try:
                fetch_node = new_ele_ns('get-next', 'http://www.huawei.com/netconf/capability/base/1.0', {'set-id': set_id})
                next_xml = conn.dispatch_rpc(etree.tostring(fetch_node))
                if next_xml is not None:
                    result.extend(next_xml.find('./*'))
                set_id = next_xml.get('set-id')
            except ConnectionError:
                break
    if result is not None:
        return to_string(to_xml(result))
    return result