예제 #1
0
def get_map(map_name, map_id):
    # CPS Data get existing map table
    m = nas_qos.MapCPSObjs(map_name, map_id=map_id)
    ret_data_list = []
    cps.get([m.data_map()], ret_data_list)
    print "## CPS data for " + map_name
    print ret_data_list
예제 #2
0
    def read(self, path):
        '''Read - to be mapped on a JSON RPC read for a this entity
           argument is a json rpc path.
        '''
        (yin_form, data) = yin_path(path)

        needs_adjust = True
        cps_obj = None
        try:
            cps_obj = cps_utils.CPSObject(yin_form, data=data)
        except ValueError:
            return None
        k = [cps_obj.get()]
        res_list = []
        cps.get(k, res_list)
        result = []
        for element in res_list:
            if needs_adjust:
                yin_form = prep_path(yin_form, element)
                needs_adjust = False
            result.append(convert_result(yin_form, element))
        cps_type = cps.type(yin_form)
        try:
            if cps_type["attribute_type"] == "list":
                if data != {}:
                    if len(result) == 0:
                        return None
                    else:
                        return result[0]
                else:
                    return result
            return result[0]
        except IndexError:
            return None
예제 #3
0
 def get_obj(self):
     ret_objs = []
     cps.get([self.get()], ret_objs)
     out_objs = []
     for ret_obj in ret_objs:
         out_objs.append(self.__class__(raw_obj=ret_obj))
     return out_objs
예제 #4
0
def get_hg(hg_name=""):
    resp = []
    obj = cps_object.CPSObject('base-pg/dell-pg/port-groups/hybrid-group',
                               qual='target',
                               data={hg_attr('id'): hg_name})
    cps.get([obj.get()], resp)
    return resp
예제 #5
0
def get_base_media_info(media_type):
    obj = cps_object.CPSObject(module='base-media/media-info',
                               qual='observed',
                               data={'media-type': media_type})
    base_media_info_list = []
    cps.get([obj.get()], base_media_info_list)
    return base_media_info_list
예제 #6
0
    def delete(self):
        ret_data_list = []
        cps.get([self.data_map()], ret_data_list)
        c = cps_utils.CPSTransaction()

        map_id = utl.extract_cps_attr(self, ret_data_list[0], 'id')
        entries = utl.extract_cps_attr(self, ret_data_list[0], 'entry')
        print "Trying to delete Map with entries ", entries

        key_num = self.get_entry_key_num(self.yang_name)
        for k, entry in entries.iteritems():
            entry_attr_names = self.get_attr_names(self.yang_name)
            val_list = []
            for idx in xrange(0, key_num):
                val = utl.extract_cps_attr(
                    self,
                    entry,
                    entry_attr_names[idx],
                    self.yang_entry_name)
                val_list.append(val)
            entry_wr = self.__form_map_entry_obj(tuple(val_list))
            c.delete(entry_wr.get())

        c.delete(self.data_map())
        return c.commit()
예제 #7
0
    def monitor_events(self):
        self.log("Started CPS events listener...")
        interfaces_key = cps.key_from_name(
            'observed', 'dell-base-if-cmn/if/interfaces-state/interface')

        handle = cps.event_connect()
        cps.event_register(handle, interfaces_key)

        while True:
            o = cps.event_wait(handle)
            obj = cps_object.CPSObject(obj=o)

            # Monitor interfaces
            if interfaces_key == obj.get_key():

                list = []
                cps.get([
                    cps.key_from_name(
                        'observed',
                        'dell-base-if-cmn/if/interfaces-state/interface')
                ], list)
                # Ignore the first entry
                for entry in list[1:]:
                    # Construct a new object for each entry
                    get_obj = cps_object.CPSObject(obj=entry)
                    if (obj.get_attr_data("if/interfaces-state/interface/name")
                            == get_obj.get_attr_data(
                                "if/interfaces-state/interface/name")):

                        oper_status = get_obj.get_attr_data(
                            "if/interfaces-state/interface/oper-status")
                        # ...

                        new_list = []
                        cps.get([
                            cps.key_from_name(
                                'target',
                                'dell-base-if-cmn/if/interfaces/interface')
                        ], new_list)

                        # Ignore the first entry
                        for aux_entry in new_list[1:]:
                            # Construct a new object for each entry
                            get_aux_obj = cps_object.CPSObject(obj=aux_entry)

                            if (get_aux_obj.get_attr_data(
                                    "if/interfaces/interface/name") ==
                                    obj.get_attr_data(
                                        "if/interfaces-state/interface/name")):
                                if_name = get_aux_obj.get_attr_data(
                                    "if/interfaces/interface/name")
                                #enabled = get_aux_obj.get_attr_data("if/interfaces/interface/enabled")
                                Utils.cliLogger(if_name, 1)
                                Utils.cliLogger(0, 1)
                                interface = Interface(if_name, "", 0, "", "",
                                                      oper_status, "", "", "")
                                Utils.timeLogger(
                                    "EventHandler| CPS event Operstatus changed: "
                                )
                                q.put((dh.change_interface, (interface, ), {}))
예제 #8
0
def nas_set_media_type_by_media_id(slot, media_id, media_type):
    l = []
    port_list = []
    o = cps_object.CPSObject(module='base-if-phy/front-panel-port',
                             data={'media-id': media_id})
    cps.get([o.get()], l)

    if len(l) == 0:
        nas_if.log_err("No such port found... for medial " + str(media_id))
        return

    #fetching 2 front panel port object from 1 phy media id for QSFP28-DD ports
    for fp_obj in l:
        obj = cps_object.CPSObject(obj=fp_obj)
        if _fp_port_key == obj.get_key():
            port_list = port_list + nas_if.physical_ports_for_front_panel_port(
                obj)

    if len(port_list) == 0:
        nas_if.log_err("There are no physical ports for front panel port ")
        nas_if.log_err(l[0])
        return

    for port in port_list:
        nas_if.log_info(" port id : " + str(port.get_attr_data('port-id')) +
                        ". media type: " + str(media_type))
        port.add_attr('phy-media', media_type)
        ch = {'operation': 'set', 'change': port.get()}
        cps.transaction([ch])
예제 #9
0
def get_map(map_name, map_id):
    # CPS Data get existing map table
    m = nas_qos.MapCPSObjs(map_name, map_id=map_id)
    ret_data_list = []
    cps.get([m.data_map()], ret_data_list)
    print "## CPS data for " + map_name
    print ret_data_list
def get_hg_state(hg_name=""):
    resp = []
    obj = cps_object.CPSObject('base-pg/dell-pg/port-groups-state/hybrid-group-state',
                               qual='observed',
                               data={hg_state_attr('id'):hg_name})
    cps.get([obj.get()], resp)
    return resp
예제 #11
0
def get_base_mac_address():
    obj = cps_object.CPSObject(module='base-pas/chassis', qual="observed")
    chassis = []
    cps.get([obj.get()], chassis)

    base_mac_address = chassis[0]['data'][
        'base-pas/chassis/base_mac_addresses']
    return base_mac_address
예제 #12
0
def get_base_mac_address():
    obj = cps_object.CPSObject(module='base-pas/chassis', qual="observed")
    chassis = []
    cps.get([obj.get()], chassis)

    base_mac_address = chassis[0]['data'][
        'base-pas/chassis/base_mac_addresses']
    return base_mac_address
예제 #13
0
def led_control_get():
    media = cps_object.CPSObject(module='base-pas/media-config',
                                 qual='observed',
                                 data={'slot': 1})
    l = []
    cps.get([media.get()], l)
    media_config = cps_object.CPSObject(obj=l[0])
    led_control = media_config.get_attr_data('led-control')
    return led_control
예제 #14
0
def get_media_channel_info(media_id):
    obj = cps_object.CPSObject(module='base-pas/media-channel',
                               qual='observed',
                               data={
                                   'slot': 1,
                                   'port': media_id
                               })
    media_channel_list = []
    cps.get([obj.get()], media_channel_list)
    return media_channel_list
예제 #15
0
def cps_get(obj):

    RESULT = dict()
    key = obj.get()
    l = []
    cps.get([key], l)

    resp_list = convert_cps_raw_list(l)

    RESULT["response"] = resp_list
    return RESULT
예제 #16
0
def show_switch(args):
    l = []
    obj = create_switch_entities_obj()
    cps.get([obj.get()], l)
    for i in l:
        cps_utils.print_obj(i)

    l = []
    obj = create_switch_obj()
    cps.get([obj.get()], l)
    for i in l:
        cps_utils.print_obj(i)
예제 #17
0
def show_switch(args):
    l = []
    obj = create_switch_entities_obj()
    cps.get([obj.get()], l)
    for i in l:
        cps_utils.print_obj(i)

    l = []
    obj = create_switch_obj()
    cps.get([obj.get()], l)
    for i in l:
        cps_utils.print_obj(i)
예제 #18
0
def make_interface_from_phy_port(obj):
    npu = obj.get_attr_data('npu-id')
    hw_port_id = obj.get_attr_data('hardware-port-id')

    l = []
    elem = cps_object.CPSObject(module=get_hw_key(),
                                data={
                                    'npu-id': npu,
                                    'hw-port': hw_port_id
                                })
    cps.get([elem.get()], l)
    if len(l) == 0:
        log_err("Invalid port specified... ")
        log_err(str(elem.get()))
        raise Exception("Invalid port - no matching hardware-port")

    elem = cps_object.CPSObject(obj=l[0])

    chassis_id = default_chassis_id
    slot_id = default_slot_id
    fp_port_id = elem.get_attr_data('front-panel-port')
    lane = elem.get_attr_data('subport-id')
    mode = elem.get_attr_data('fanout-mode')
    _subport = lane
    if mode != 4:  # 1x1
        _subport += 1
    name = get_interface_name(chassis_id, slot_id, fp_port_id, _subport)

    # extract the port number from the phy port strcture (based on the hwid)
    port = obj.get_attr_data('port-id')

    # setting default MTU size during interface creation.
    _mtu = get_default_mtu()
    ifobj = cps_object.CPSObject(
        module='dell-base-if-cmn/set-interface',
        data={
            'dell-base-if-cmn/set-interface/input/operation': 1,
            'if/interfaces/interface/name': name,
            'base-if-phy/hardware-port/front-panel-port': fp_port_id,
            'base-if-phy/hardware-port/subport-id': _subport,
            'base-if-phy/if/interfaces/interface/npu-id': npu,
            'base-if-phy/if/interfaces/interface/port-id': port,
            'dell-if/if/interfaces/interface/mtu': _mtu,
            'dell-if/if/interfaces/interface/negotiation': _yang_auto_neg,
            'dell-if/if/interfaces/interface/speed': _yang_auto_speed,
            'dell-if/if/interfaces/interface/duplex': _yang_auto_dup,
            'if/interfaces/interface/type': _g_if_type
        })

    return ifobj
예제 #19
0
    def getChassisMac():

        list = []
        # Obtain a list with objects from dell-base-if-cmn/if/interfaces/interface
        cps.get([cps.key_from_name('target', 'base-pas/chassis')], list)

        # Ignore the first entry
        for entry in list:
            # Construct a new object for each entry
            get_obj = cps_object.CPSObject(obj=entry)

            phys_address = get_obj.get_attr_data("base_mac_addresses")
            Utils.cliLogger("Chassis MAC: " + phys_address, 1)
            return phys_address
예제 #20
0
def nas_os_hwport_list(d={}):
    l = []
    filt = make_hwport_obj(d)

    if cps.get([filt.get()], l):
        return l
    return None
def scheduler_group_delete_by_level(port_id, level):
    return_data_list = []
    attr_list = {
        'port-id': port_id,
        'level': level,
    }
    sg_obj = nas_qos.SchedGroupCPSObj(map_of_attr=attr_list)
    ret = cps.get([sg_obj.data()], return_data_list)
    if ret != True:
        print 'Error in get'
        return False
    for cps_ret_data in return_data_list:
        print cps_ret_data
        m = nas_qos.SchedGroupCPSObj(cps_data=cps_ret_data)
        sg_id = m.extract_id()
        sched_id = m.extract_attr('scheduler-profile-id')
        if level != 0 and sched_id is not None and sched_id != 0:
            sched_id = 0
        else:
            sched_id = None
        ret_sg_id = scheduler_group_modify_example(sg_id, sched_id)
        if ret_sg_id is None:
            print 'Falied to modify scheduler-group %d' % sg_id
            return False

        ret = scheduler_group_delete_by_id(sg_id)
        if ret is None:
            print 'Failed to delete the scheduler-group %d' % sg_id
            return False

    print 'Successfully delete scheduler-groups of port %s level %d' % (
        port_name, level)
    return True
def test_get_all_intf():
    cps_obj = cps_object.CPSObject(
        module="dell-base-if-cmn/if/interfaces/interface", qual="target")

    while (1):
        ret_list = []
        cps_obj.add_attr("cps/object-group/get-next", 1)
        print "Input object: ", cps_obj.get()

        if cps.get([cps_obj.get()], ret_list) == False or not ret_list:
            break
        for ret_obj in ret_list:
            print "-----------------------------------------------------"
            cps_utils.printable(ret_obj)
            print ret_obj
            print "-----------------------------------------------------"

            if 'dell-base-if-cmn/if/interfaces/interface/if-index' in ret_obj[
                    'data']:
                cps_obj.add_attr(
                    'dell-base-if-cmn/if/interfaces/interface/if-index',
                    ret_obj['data']
                    ['dell-base-if-cmn/if/interfaces/interface/if-index'])
            elif 'cps/key_data' in ret_obj['data']:
                if 'dell-base-if-cmn/if/interfaces/interface/if-index' in ret_obj[
                        'data']['cps/key_data']:
                    cps_obj.add_attr(
                        'dell-base-if-cmn/if/interfaces/interface/if-index',
                        ret_obj['data']['cps/key_data']
                        ['dell-base-if-cmn/if/interfaces/interface/if-index'])
예제 #23
0
def get_port_queue_id(ifname, queue_number, queue_type):
    """
    Get Queue id
    Sample: get_port_queue_id('e101-032-0', 1, 'UCAST')
    """
    return_data_list = []
    port_id = os_utl.if_nametoindex(ifname)

    queue_obj = QueueCPSObj(
        queue_type=queue_type,
        queue_number=queue_number,
        port_id=port_id)
    ret = cps.get([queue_obj.data()], return_data_list)

    if ret:
        for cps_ret_data in return_data_list:
            m = QueueCPSObj(
                port_id=port_id,
                queue_type=queue_type,
                queue_number=queue_number,
                cps_data=cps_ret_data)
            if (m.extract_attr('type') == queue_type and
                    m.extract_attr('queue-number') == queue_number):
                return m.extract_id()
    else:
        print 'Error in get'

    return None
예제 #24
0
def get_parent_sched_group_id(ifname, child_id):
    """
    Get the parent scheduler group id
    @ifname interface nae
    @child_id queue_id or scheduler_group_id
    @return parent scheduler_group_id or None
    Sample: get_parent_sched_group_id('e101-032-0', 281474976711181)

    """
    # find the parent with a matching child qid
    sg_info = {}
    return_data_list = []
    sg_obj = SchedGroupCPSObj(sg_id=None, port_name=ifname,
                              level=None)
    ret = cps.get([sg_obj.data()], return_data_list)
    if ret:
        for cps_ret_data in return_data_list:
            m = SchedGroupCPSObj(cps_data=cps_ret_data)
            sg_id = m.extract_attr('id')
            child_list = m.extract_attr('child-list')
            if (child_list and
                    child_id in child_list):
                return sg_id
    else:
        print 'Error in get'

    return None
예제 #25
0
def get_port_queue_id(ifname, queue_number, queue_type):
    """
    Get Queue id
    Sample: get_port_queue_id('e101-032-0', 1, 'UCAST')
    """
    return_data_list = []
    port_id = ifindex_utils.if_nametoindex(ifname)

    attr_list = {
        'type': queue_type,
        'queue-number': queue_number,
        'port-id': port_id,
    }
    queue_obj = QueueCPSObj(map_of_attr=attr_list)
    ret = cps.get([queue_obj.data()], return_data_list)

    if ret:
        for cps_ret_data in return_data_list:
            m = QueueCPSObj(cps_data=cps_ret_data)
            if (m.extract_attr('type') == queue_type and
                    m.extract_attr('queue-number') == queue_number):
                return m.extract_id()
    else:
        print 'Error in get'

    return None
def get_port_queue_id_list(port_name, queue_type):
    cps_data_list = []
    ret_data_list = []

    ifindex = utl.ifname_to_ifindex(port_name)
    if ifindex is None:
        print 'Failed to get ifindex for port ', port_name
        return None

    if queue_type == 'ALL':
        queue_type = None

    queue_obj = nas_qos.QueueCPSObj(
        port_id=ifindex,
        queue_type=queue_type,
        queue_number=None)
    ret = cps.get([queue_obj.data()], cps_data_list)

    if ret == False:
        print 'Failed to get queue list'
        return None

    print '-' * 36
    print '%-16s %-10s %s' % ('id', 'type', 'number')
    print '-' * 36
    for cps_data in cps_data_list:
        m = nas_qos.QueueCPSObj(None, None, None, cps_data=cps_data)
        queue_id = m.extract_id()
        type_val = m.extract_attr('type')
        local_num = m.extract_attr('queue-number')
        if queue_type is None or queue_type == type_val:
            print '%-16x %-10s %s' % (queue_id, type_val, local_num)
            ret_data_list.append(queue_id)

    return ret_data_list
def scheduler_group_cleanup_example(port_name, level):
    return_data_list = []
    sg_obj = nas_qos.SchedGroupCPSObj(port_name=port_name, level=level)
    ret = cps.get([sg_obj.data()], return_data_list)
    if ret != True:
        print 'Error in get'
        return False
    for cps_ret_data in return_data_list:
        m = nas_qos.SchedGroupCPSObj(cps_data=cps_ret_data)
        sg_id = m.extract_id()
        sched_id = m.extract_attr('scheduler-profile-id')
        if level != 0 and sched_id is not None and sched_id != 0:
            sched_id = 0
        else:
            sched_id = None
        chld_cnt = m.extract_attr('child_count')
        if chld_cnt > 0:
            chld_list = [0]
        else:
            chld_list = []
        ret_sg_id = scheduler_group_modify_example(sg_id, sched_id, chld_list)
        if ret_sg_id is None:
            print 'Falied to modify scheduler-group %d' % sg_id
            return False
    print 'Successfully cleaned up scheduler-groups of port %s level %d' % (
        port_name, level)
    return True
예제 #28
0
def get_parent_sched_group_id(ifname, child_id):
    """
    Get the parent scheduler group id
    @ifname interface nae
    @child_id queue_id or scheduler_group_id
    @return parent scheduler_group_id or None
    Sample: get_parent_sched_group_id('e101-032-0', 281474976711181)

    """
    # find the parent with a matching child qid
    sg_info = {}
    return_data_list = []

    port_id = ifindex_utils.if_nametoindex(ifname)
    attr_list = {
        'port-id': port_id,
        'level': None,
        'id': None,
    }
    sg_obj = SchedGroupCPSObj(map_of_attr=attr_list)
    ret = cps.get([sg_obj.data()], return_data_list)
    if ret:
        for cps_ret_data in return_data_list:
            m = SchedGroupCPSObj(cps_data=cps_ret_data)
            sg_id = m.extract_attr('id')
            child_list = m.extract_attr('child-list')
            if (child_list and
                    child_id in child_list):
                return sg_id
    else:
        print 'Error in get'

    return None
예제 #29
0
def get_port_queue_id(ifidx, queue_type, q_num, ifname):
    queue_obj = nas_qos.QueueCPSObj(
        port_id=ifidx,
        queue_type=queue_type,
        queue_number=q_num)
    cps_data_list = []
    ret = cps.get([queue_obj.data()], cps_data_list)

    if ret == False:
        raise RuntimeError(
            'Failed to get {1} queue {2} id for port {0}({3})'.format(
                ifname,
                queue_type,
                q_num,
                ifidx))

    m = nas_qos.QueueCPSObj(None, None, None, cps_data=cps_data_list[0])
    queue_id = m.extract_id()
    dbg_print(
        "           > Intf {4}({0}) {1} Q{2} = QID 0x{3:X}".format(
            ifidx,
            queue_type,
            q_num,
            queue_id,
            ifname))
    return queue_id
예제 #30
0
def handle_show(vlan, port, mac_valid, mac, all, static, static_type):
    get = []
    get_obj = CPSObject("base-mac/query")
    get_obj.add_attr_type("mac-address", "mac")
    if (vlan != 0):
        get_obj.add_attr("vlan", vlan)
        get_obj.add_attr("request-type", 1)
    if (port != 0):
        index = nas_os_utils.if_nametoindex(port)
        get_obj.add_attr("ifindex", index)
        get_obj.add_attr("request-type", 3)
    if (mac_valid == 1):
        get_obj.add_attr("mac-address", mac)
        get_obj.add_attr("request-type", 2)
    if (static_type == 1):
        get_obj.add_attr("static", static)
    print get_obj.get()
    print("\n calling get \n")
    if cps.get([get_obj.get()], get):
        print("\n get returned true\n")
        for i in get:
            print_obj(i)
            print "\n\n"
    else:
        print("\n no objects received")
예제 #31
0
def get_port_queue_id(ifidx, queue_type, q_num, ifname):
    queue_obj = nas_qos.QueueCPSObj(
        port_id=ifidx,
        queue_type=queue_type,
        queue_number=q_num)
    cps_data_list = []
    ret = cps.get([queue_obj.data()], cps_data_list)

    if ret == False:
        raise RuntimeError(
            'Failed to get {1} queue {2} id for port {0}({3})'.format(
                ifname,
                queue_type,
                q_num,
                ifidx))

    m = nas_qos.QueueCPSObj(None, None, None, cps_data=cps_data_list[0])
    queue_id = m.extract_id()
    dbg_print(
        "           > Intf {4}({0}) {1} Q{2} = QID 0x{3:X}".format(
            ifidx,
            queue_type,
            q_num,
            queue_id,
            ifname))
    return queue_id
def init_profile():

    while cps.enabled(nas_comm.yang.get_tbl('keys_id')['switch_key']) is False:
        nas_if.log_err('Switch profile service not yet ready')
        time.sleep(1)

    l = []
    obj = cps_object.CPSObject(
        module='base-switch/switching-entities/switching-entity',
        qual='observed',
        data={'switch-id': 0})
    if not cps.get([obj.get()], l):
        nas_if.log_info('Get profile : CPS GET FAILED')
        return False
    switch_obj = cps_object.CPSObject(obj=l[0])
    try:
        profile = switch_obj.get_attr_data(current_profile)
    except:
        nas_if.log_info("Current profile missing in CPS get")
        return False
    nas_if.log_info('Get profile returned ' + str(profile))
    profile = '/etc/opx/' + profile + '-base_port_physical_mapping_table.xml'
    if os.path.isfile(profile):
        fp.init(profile)
        return True
    else:
        nas_if.log_err('Profile file missing' + str(profile))
        return False
예제 #33
0
def nas_os_if_list(d={}):
    l = []
    filt = make_if_obj(d)
    # get FC and ether type interfaces both
    eth_list = []
    set_obj_val(filt, 'if/interfaces/interface/type', _g_if_eth_type)
    if not (cps.get([filt.get()], eth_list)):
        return None

    fc_list = []
    set_obj_val(filt, 'if/interfaces/interface/type', _g_if_fc_type)
    if not (cps.get([filt.get()], fc_list)):
        return None

    l = eth_list + fc_list
    return l
예제 #34
0
def __get_acl_entries(table_id=None, entry_id=None):
    e = nas_acl.EntryCPSObj(table_id=table_id, entry_id=entry_id)
    r = []
    if not cps.get([e.data()], r):
        print 'Failed to get acl entries' + str(entry_id)
        return []
    return r
예제 #35
0
def handle_show(vlan, port, mac_valid, mac, all, static, static_type):
    get = []
    get_obj = CPSObject("base-mac/query")
    get_obj.add_attr_type("mac-address", "mac")
    if (vlan != 0):
        get_obj.add_attr("vlan", vlan)
        get_obj.add_attr("request-type", 1)
    if (port != 0):
        index = nas_os_utils.if_nametoindex(port)
        get_obj.add_attr("ifindex", index)
        get_obj.add_attr("request-type", 3)
    if (mac_valid == 1):
        get_obj.add_attr("mac-address", mac)
        get_obj.add_attr("request-type", 2)
    if (static_type == 1):
        get_obj.add_attr("static", static)
    print get_obj.get()
    print("\n calling get \n")
    if cps.get([get_obj.get()], get):
        print("\n get returned true\n")
        for i in get:
            print_obj(i)
            print "\n\n"
    else:
        print("\n no objects received")
def scheduler_group_cleanup_example(port_name, level):
    return_data_list = []
    sg_obj = nas_qos.SchedGroupCPSObj(port_name=port_name, level=level)
    ret = cps.get([sg_obj.data()], return_data_list)
    if ret != True:
        print 'Error in get'
        return False
    for cps_ret_data in return_data_list:
        m = nas_qos.SchedGroupCPSObj(cps_data=cps_ret_data)
        sg_id = m.extract_id()
        sched_id = m.extract_attr('scheduler-profile-id')
        if level != 0 and sched_id is not None and sched_id != 0:
            sched_id = 0
        else:
            sched_id = None
        chld_cnt = m.extract_attr('child_count')
        if chld_cnt > 0:
            chld_list = [0]
        else:
            chld_list = []
        ret_sg_id = scheduler_group_modify_example(sg_id, sched_id, chld_list)
        if ret_sg_id is None:
            print 'Falied to modify scheduler-group %d' % sg_id
            return False
    print 'Successfully cleaned up scheduler-groups of port %s level %d' % (
        port_name, level)
    return True
예제 #37
0
def read_sched_grp(ifidx, ifname):
    sg_info = {}
    return_data_list = []
    attr_list = {
        'port-id': ifidx,
    }
    sg_obj = nas_qos.SchedGroupCPSObj(map_of_attr=attr_list)
    ret = cps.get([sg_obj.data()], return_data_list)
    if ret:
        #print '#### Scheduler Group Show ####'
        for cps_ret_data in return_data_list:
            m = nas_qos.SchedGroupCPSObj(cps_data=cps_ret_data)
            if (dbg_on):
                m.print_obj()
            level = m.extract_attr('level')
            sg_id = m.extract_attr('id')
            if (level in sg_info):
                bisect.insort(sg_info[level], sg_id)
            else:
                sg_info[level] = [sg_id]

    else:
        syslog.syslog('Error in get port {0} attributes'.format(ifname))

    return sg_info
def get_port_queue_id_list(port_id, queue_type):
    cps_data_list = []
    ret_data_list = []

    if queue_type == 'ALL':
        queue_type = None

    attr_list = {
        'type': queue_type,
        'queue-number': None,
        'port-id': port_id,
    }
    queue_obj = nas_qos.QueueCPSObj(map_of_attr=attr_list)
    ret = cps.get([queue_obj.data()], cps_data_list)

    if ret == False:
        print 'Failed to get queue list'
        return None

    print '#### Queue list Show ####'
    print '-' * 36
    print '%-16s %-10s %s' % ('id', 'type', 'number')
    print '-' * 36
    for cps_data in cps_data_list:
        m = nas_qos.QueueCPSObj(cps_data=cps_data)
        queue_id = m.extract_id()
        type_val = m.extract_attr('type')
        local_num = m.extract_attr('queue-number')
        if queue_type is None or queue_type == type_val:
            print '%-16x %-10s %s' % (queue_id, type_val, local_num)
            ret_data_list.append(queue_id)

    return ret_data_list
예제 #39
0
def find_table(table_id=None,
               priority=None,
               matchfields=None,
               table_stage=None):
    t = TableCPSObj(table_id=table_id)
    r = []
    if not cps.get([t.data()], r):
        print 'CPS Get failed for ACL Table'
    for t_cps in r:
        _valid = True
        t = TableCPSObj(cps_data=t_cps)
        if priority != None:
            try:
                _val = t.extract('priority')
                if _val != priority:
                    continue
            except:
                continue

        if matchfields != None:
            _val = t.extract('allowed-match-fields')
            for i in matchfields:
                if i in _val: continue
                _valid = False
                break
        if not _valid:
            continue

        if table_stage != None:
            _val = t.extract('stage')
            if _val != table_stage:
                continue
        return t
    return None
예제 #40
0
def nas_os_hwport_list(d={}):
    l = []
    filt = make_hwport_obj(d)

    if cps.get([filt.get()], l):
        return l
    return None
def get_port_queue_id_list(port_name, queue_type):
    cps_data_list = []
    ret_data_list = []

    ifindex = nas_os_if_utils.name_to_ifindex(port_name)
    if ifindex is None:
        print 'Failed to get ifindex for port ', port_name
        return None

    if queue_type == 'ALL':
        queue_type = None

    queue_obj = nas_qos.QueueCPSObj(port_id=ifindex,
                                    queue_type=queue_type,
                                    queue_number=None)
    ret = cps.get([queue_obj.data()], cps_data_list)

    if ret == False:
        print 'Failed to get queue list'
        return None

    print '-' * 36
    print '%-16s %-10s %s' % ('id', 'type', 'number')
    print '-' * 36
    for cps_data in cps_data_list:
        m = nas_qos.QueueCPSObj(None, None, None, cps_data=cps_data)
        queue_id = m.extract_id()
        type_val = m.extract_attr('type')
        local_num = m.extract_attr('queue-number')
        if queue_type is None or queue_type == type_val:
            print '%-16x %-10s %s' % (queue_id, type_val, local_num)
            ret_data_list.append(queue_id)

    return ret_data_list
예제 #42
0
def nas_os_if_state_list(d={}):
    l = []
    filt = make_if_state_obj(d)
    set_obj_val(filt, 'if/interfaces-state/interface/type', _g_if_type)

    if cps.get([filt.get()], l):
        return l
    return None
예제 #43
0
def nas_os_cpu_if(d={}):
    l = []
    filt = make_if_obj(d)
    set_obj_val(filt, 'if/interfaces/interface/type', _g_cpu_if_type)

    if cps.get([filt.get()], l):
        return l
    return None
예제 #44
0
def wait_for_register():
    ifidx = get_one_interface()
    time.sleep(1)

    p = nas_qos.IngPortCPSObj(ifindex=ifidx)
    r = []

    while cps.get([p.data()], r) == False:
        time.sleep(1)
예제 #45
0
def print_stats(table_id=None, counter_id=None):
    c = StatsCPSObj(table_id=table_id, counter_id=counter_id)
    r = []
    if not cps.get([c.data()], r):
        print 'CPS Get failed for ACL Counter Stats' + str(counter_id)
        return
    for c_cps in r:
        c = StatsCPSObj(cps_data=c_cps)
        c.print_obj()
예제 #46
0
def print_table(table_id=None):
    t = TableCPSObj(table_id=table_id)
    r = []
    if not cps.get([t.data()], r):
        print 'CPS Get failed for ACL Table' + str(table_id)
        return
    for t_cps in r:
        t = TableCPSObj(cps_data=t_cps)
        t.print_obj()
예제 #47
0
def print_entry(table_id=None, entry_id=None):
    e = EntryCPSObj(table_id=table_id, entry_id=entry_id)
    r = []
    if not cps.get([e.data()], r):
        print 'CPS Get failed for ACL Entry' + str(entry_id)
        return
    for e_cps in r:
        e = EntryCPSObj(cps_data=e_cps)
        e.print_obj()
예제 #48
0
def qos_meter_get_opaque_data(meter_id):
    flt = nas_qos.MeterCPSObj(meter_id=meter_id)
    ret = []
    r = cps.get([flt.data()], ret)
    if r == False:
        raise RuntimeError("Meter Get failed")

    m = nas_qos.MeterCPSObj(cps_data=ret[0])
    return m.extract_opaque_data()
예제 #49
0
def make_interface_from_phy_port(obj):
    npu = obj.get_attr_data('npu-id')
    hw_port_id = obj.get_attr_data('hardware-port-id')

    l = []
    elem = cps_object.CPSObject(module=get_hw_key(), data={
        'npu-id': npu,
        'hw-port': hw_port_id
    })
    cps.get([elem.get()], l)
    if len(l) == 0:
        print "Invalid port specified... "
        print elem.get()
        raise Exception("Invalid port - no matching hardware-port")

    elem = cps_object.CPSObject(obj=l[0])

    chassis_id = default_chassis_id
    slot_id = default_slot_id
    port_id = elem.get_attr_data('front-panel-port')
    lane = elem.get_attr_data('subport-id')
    mode = elem.get_attr_data('fanout-mode')
    _subport = lane
    if mode != 4:  # 1x1
        _subport += 1
    name = get_interface_name(chassis_id, slot_id, port_id, _subport)

    # extract the port number from the phy port strcture (based on the hwid)
    port = obj.get_attr_data('port-id')

    # setting default MTU size during interface creation.
    _mtu = get_default_mtu()
    ifobj = cps_object.CPSObject(module='dell-base-if-cmn/set-interface', data={
        'dell-base-if-cmn/set-interface/input/operation': 1,
        'if/interfaces/interface/name': name,
        'base-if-phy/if/interfaces/interface/npu-id': npu,
        'base-if-phy/if/interfaces/interface/port-id': port,
        'dell-if/if/interfaces/interface/mtu': _mtu,
        'if/interfaces/interface/type':_g_if_type})

    return ifobj
def scheduler_group_get_example(sg_id=None, port_name=None, level=None):
    return_data_list = []
    sg_obj = nas_qos.SchedGroupCPSObj(sg_id=sg_id, port_name=port_name,
                                      level=level)
    ret = cps.get([sg_obj.data()], return_data_list)
    if ret:
        print '#### Scheduler Group Show ####'
        for cps_ret_data in return_data_list:
            m = nas_qos.SchedGroupCPSObj(cps_data=cps_ret_data)
            m.print_obj()
    else:
        print 'Error in get'
def buffer_pool_get_example(buffer_pool_id):
    return_data_list = []

    buffer_pool_obj = nas_qos.BufferPoolCPSObj(buffer_pool_id=buffer_pool_id)
    ret = cps.get([buffer_pool_obj.data()], return_data_list)

    if ret:
        print '#### buffer pool Profile Show ####'
        for cps_ret_data in return_data_list:
            m = nas_qos.BufferPoolCPSObj(cps_data=cps_ret_data)
            m.print_obj()
    else:
        print 'Error in get'
예제 #52
0
def if_indextoname(ifindex):
    """
    Converts interface index to name
    @ifindex - inteface index
    @return - interface name in case of success, else raises exception
    """
    obj = cps_object.CPSObject("base-ip/ipv4", data={"ifindex": ifindex})
    l = []
    if cps.get([obj.get()], l):
        if len(l) == 1:
            get_obj = cps_object.CPSObject(obj=l[0])
            return get_obj.get_attr_data("name")
    raise RuntimeError("Invalid Index")
def buffer_pool_stat_get_example (id):
    return_data_list = []

    buffer_pool_stat_obj = nas_qos.BufferPoolStatCPSObj (id)
    ret = cps.get ([buffer_pool_stat_obj.data()], return_data_list)

    if ret == True:
        print '#### BufferPool Stat Show ####'
        for cps_ret_data in return_data_list:
            m = nas_qos.BufferPoolStatCPSObj (cps_data = cps_ret_data)
            m.print_obj ()
    else:
        print "Error in Get"
예제 #54
0
def if_nametoindex(name):
    """
    Converts interface name to ifindex
    @name - inteface name
    @return - ifindex in case of success, else raises exception
    """
    obj = cps_object.CPSObject("base-ip/ipv4", data={"name": name})
    l = []
    if cps.get([obj.get()], l):
        if len(l) == 1:
            get_obj = cps_object.CPSObject(obj=l[0])
            return get_obj.get_attr_data("ifindex")
    raise RuntimeError("Invalid Name")
def scheduler_profile_get_example(port_name, level=None):
    return_data_list = []

    sched_obj = nas_qos.SchedulerCPSObj(port_name=port_name, level=level)
    ret = cps.get([sched_obj.data()], return_data_list)

    if ret:
        print '#### Scheduler Profile Show ####'
        for cps_ret_data in return_data_list:
            m = nas_qos.SchedulerCPSObj(cps_data=cps_ret_data)
            m.print_obj()
    else:
        print 'Error in get'
예제 #56
0
def get_map_example(map_name, map_id):
    map_obj = nas_qos.MapCPSObjs(map_name, map_id=map_id)
    ret_data_list = []
    ret = cps.get([map_obj.data_map()], ret_data_list)

    if ret != True:
        print 'Error in get'
        return False

    print '#### Map %s Profile ####' % map_name
    for ret_data in ret_data_list:
        map_obj = nas_qos.MapCPSObjs(map_name, cps_data=ret_data)
        map_obj.print_obj()
예제 #57
0
def wred_profile_get_example(wred_id):
    return_data_list = []

    wred_obj = nas_qos.WredCPSObj(wred_id=wred_id)
    ret = cps.get([wred_obj.data()], return_data_list)

    if ret:
        print '#### WRED Profile Show ####'
        for cps_ret_data in return_data_list:
            m = nas_qos.WredCPSObj(cps_data=cps_ret_data)
            m.print_obj()
    else:
        print 'Error in get'
def priority_group_stat_get_example (port_id, local_id):
    return_data_list = []

    priority_group_stat_obj = nas_qos.PriorityGroupStatCPSObj (port_id=port_id, local_id=local_id)
    ret = cps.get ([priority_group_stat_obj.data()], return_data_list)

    if ret == True:
        print '#### PriorityGroup Stat Show ####'
        for cps_ret_data in return_data_list:
            m = nas_qos.PriorityGroupStatCPSObj (cps_data = cps_ret_data)
            m.print_obj ()
    else:
        print "Error in Get"
def queue_stat_get_example (port_id, queue_type, queue_number ):
    return_data_list = []

    queue_stat_obj = nas_qos.QueueStatCPSObj (queue_type=queue_type, queue_number=queue_number, port_id=port_id)
    ret = cps.get ([queue_stat_obj.data()], return_data_list)

    if ret == True:
        print '#### Queue Stat Show ####'
        for cps_ret_data in return_data_list:
            m = nas_qos.QueueStatCPSObj (cps_data = cps_ret_data)
            m.print_obj ()
    else:
        print "Error in Get"
예제 #60
0
def policer_get_example(meter_id):
    return_data_list = []

    filt_obj = nas_qos.MeterCPSObj(meter_id=meter_id)
    ret = cps.get([filt_obj.data()], return_data_list)

    if ret:
        print '#### Meter Show ####'
        for cps_ret_data in return_data_list:
            m = nas_qos.MeterCPSObj(cps_data=cps_ret_data)
            m.print_obj()
    else:
        print "Error in Get"