def print_obj(obj): cps_utils.print_obj(obj) cps_obj = cps_utils.CPSObject(obj=obj) ifindex = cps_obj.get_attr_data("ifindex") ifname = nas_os_utils.if_indextoname(ifindex) print "base-sflow/entry/ifname = " + ifname print "\n\n"
def ip_address_config(operation, address_family, prefix_length): if address_family == "ipv4": mod = "base-ip/ipv4/address" name_attr = "base-ip/ipv4/name" name = "e101-001-0" ip_addr = "01010101" elif address_family == "ipv6": mod = "base-ip/ipv6/address" name_attr = "base-ip/ipv6/name" name = "br1" ip_addr = "01010101010101010101010101010101" else: print "Unsupported address family" assert 0 cps_obj = cps_object.CPSObject(module = mod) cps_obj.add_attr(name_attr, name) cps_obj.add_attr('ip', ip_addr) cps_obj.add_attr('prefix-length', prefix_length) ch = {'operation': operation, 'change': cps_obj.get()} if cps.transaction([ch]): print "Success" cps_utils.print_obj(ch['change']) if operation == "create": ip_add_verify(address_family, prefix_length) elif operation == "delete": ip_delete_verify(address_family, prefix_length) else: print "Unsupported operation"
def __load_file(name): l = [] with open(name, 'r') as _file: _process = False while True: _line = _file.readline() if not _line: break if _line.find('ACL Entries:') == 0: _process = True continue if not _process: continue if _line.find('#') != -1: _line = _line[:_ln.find('#') + 1] _ln = _line.strip().split(' ') if _ln[0] == '-': _ln = _ln[1:] _name = _ln[0] _ln = _ln[1:] _ln = ' '.join(_ln) _obj = cps_object.CPSObject(module=_KEY, qual='target') _obj.add_attr('name', _name) _obj.add_attr('rule', _ln) l.append(_obj.get()) cps_utils.print_obj(_obj.get()) return l
def nas_os_event_handler(ev_obj): global g_intf_list operation, if_name, untagged_if_name, tagged_if_name = None, None, None, None if 'operation' in ev_obj: operation = ev_obj['operation'] else: return intf_obj = cps_object.CPSObject(obj=ev_obj) dbg_print(" Operation: %s " % (operation)) if_name = nas_if.get_cps_attr(intf_obj, 'if/interfaces/interface/name') if if_name is None: dbg_print("Exception in reading name") if_type = nas_if.get_cps_attr(intf_obj, 'base-if-linux/if/interfaces/interface/dell-type') if operation == 'create': if if_name in g_intf_list: dbg_print(" Interface %s already present" %(if_name)) if BASE_CMN_INTERFACE_TYPE_L2_PORT == 2 and if_name in g_intf_list: # Member Addition in a bridge # Check for untagged member ut_mem = nas_if.get_cps_attr(intf_obj, 'dell-if/if/interfaces/interface/untagged-ports') t_mem = nas_if.get_cps_attr(intf_obj, 'dell-if/if/interfaces/interface/tagged-ports') if ut_mem is not None: g_intf_list[if_name].add_attr('dell-if/if/interfaces/interface/untagged-ports', ut_mem) dbg_print(" New untagged Member %s addition to the bridge %s" %(ut_mem, if_name)) # Check for tagged member if t_mem is not None: g_intf_list[if_name].add_attr('dell-if/if/interfaces/interface/tagged-ports', t_mem) dbg_print(" New tagged Member %s addition to the bridge %s" %(t_mem, if_name)) else: g_intf_list[if_name] = intf_obj dbg_print(" Create Interface %s type %s create event" % (if_name, dell_type_to_str[if_type])) elif operation == 'delete': if if_name not in g_intf_list: dbg_print(" delete interface or member event received but intf %s not present" % (if_name)) else: if if_type == 2: # member delete event ut_mem = nas_if.get_cps_attr(intf_obj, 'dell-if/if/interfaces/interface/untagged-ports') t_mem = nas_if.get_cps_attr(intf_obj, 'dell-if/if/interfaces/interface/tagged-ports') if ut_mem is not None: g_intf_list[if_name].del_attr('dell-if/if/interfaces/interface/untagged-ports') dbg_print(" Untagged Member %s deletion to the bridge %s" %(ut_mem, if_name)) if t_mem is not None: g_intf_list[if_name].del_attr('dell-if/if/interfaces/interface/tagged-ports') dbg_print(" tagged Member %s deletion to the bridge %s" %(t_mem, if_name)) else: # Delete Interface event dbg_print(" Delete Interface %s event received" % (if_name)) del g_intf_list[if_name] elif operation == 'set': dbg_print(" set Interface event received ") if if_name not in g_intf_list: dbg_print(" set event received but intf not present") cps_utils.print_obj(ev_obj)
def set_cps_object(module_name, attr_list={}, op='set'): cps_obj = cps_object.CPSObject(module=module_name, data=attr_list) upd = (op, cps_obj.get()) ret_cps_data = cps_utils.CPSTransaction([upd]).commit() if ret_cps_data == False: return False cps_utils.print_obj(ret_cps_data[0]) return True
def get_cps_object(module_name, attr_list = {}, qual='target'): cps_obj = cps_object.CPSObject(module = module_name, qual = qual, data = attr_list) ret_list = [] if cps.get([cps_obj.get()], ret_list) == False: return False for ret_obj in ret_list: cps_utils.print_obj(ret_obj) return True
def test_get_ether_stat(): cps_obj = cps_object.CPSObject( module="dell-base-if-cmn/if/interfaces-state/interface/statistics", qual="observed") cps_obj.add_attr('if/interfaces-state/interface/name', "e101-001-0") ret_list = [] print "Input object: ", cps_obj.get() assert cps.get([cps_obj.get()], ret_list) for ret in ret_list: o = cps_object.CPSObject(obj=ret) cps_utils.print_obj(o.get())
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)
def media_transceiver_set(slot, media_id, channel, enable): media_channel = cps_object.CPSObject(module='base-pas/media-channel', qual='target', data={ 'slot': slot, 'port': media_id, 'state': enable }) if channel != None: media_channel.add_attr('channel', channel) cps_utils.print_obj(media_channel.get()) ch = {'operation': 'set', 'change': media_channel.get()} cps.transaction([ch])
def _trace_events(_obj): handle = cps.event_connect() cps.event_register_object(handle, _obj.get()) while True: ev = cps.event_wait(handle) print "@", str(datetime.datetime.now()), "- Event for", _get_key( ev['key']) if 'operation' in ev: print "Operation : ", ev['operation'] cps_utils.print_obj(ev) print "----------------------------------------------"
def create_interface(obj): ifobj = nas_if.make_interface_from_phy_port(obj) if if_cache.exists(ifobj.get_attr_data('if/interfaces/interface/name')): print "Already exists.... " + ifobj.get_attr_data('if/interfaces/interface/name') return # create the object ch = {'operation': 'rpc', 'change': ifobj.get()} cps.transaction([ch]) print "Interface Created : " + ifobj.get_attr_data('if/interfaces/interface/name') cps_utils.print_obj(ch['change'])
def media_led_set(slot, media_id, channel, speed): media_channel = cps_object.CPSObject(module='base-pas/media-channel', qual='target', data={ 'slot': slot, 'port': media_id, 'channel': channel, 'speed': speed }) cps_utils.print_obj(media_channel.get()) ch = {'operation': 'set', 'change': media_channel.get()} print "set speed for media Id : %d channel %d speed %d " % (media_id, channel, speed) cps.transaction([ch])
def create_interface(obj): ifobj = nas_if.make_interface_from_phy_port(obj) if if_cache.exists(ifobj.get_attr_data('if/interfaces/interface/name')): print "Already exists.... " + ifobj.get_attr_data( 'if/interfaces/interface/name') return # create the object ch = {'operation': 'rpc', 'change': ifobj.get()} cps.transaction([ch]) print "Interface Created : " + ifobj.get_attr_data( 'if/interfaces/interface/name') cps_utils.print_obj(ch['change'])
def _get_obj_from_input(): if (len(sys.argv) < 2): return None _qual_list = cps.QUALIFIERS _obj = cps_object.CPSObject(module="cps", qual="target") _inp = sys.argv[1].lower() _lst = _inp.split(cps.PATH_SEP, 1) #Only 'qualifier' provided as first argument if len(_lst) == 1: in_qual = _lst[0] if in_qual not in cps.QUALIFIERS: print "\nCheck the qualifier, not a valid qualifier " return None #Second argument is the 'module' if len(sys.argv) == 3: _key = cps.key_from_name(in_qual, sys.argv[2]) else: _key = cps.key_from_qual(in_qual) _obj.set_key(_key) print " Registering for " + _key else: try: _obj = cps_object.object_from_parameters(prog='cps_trace_events', description="") except ValueError: return None _key = _obj.get_key() print " Registering for object ..." cps_utils.print_obj(_obj.get()) print "----------------------------------" if ((_key == "") or (_key == None)): print "Check the object name, not a valid object\n" return None return _obj
print "Attempting to delete address ", addr, name if dn_base_ip_tool.del_ip_addr(addr, name): return True print "Failed to execute request..." except Exception as e: print "Faild to commit operation.", e print params return False if __name__ == '__main__': if len(sys.argv) > 1: l = [] _get_ip_objs(cps_object.CPSObject('base-ip/ipv4'), l) for i in l: cps_utils.print_obj(i) sys.exit(1) handle = cps.obj_init() d = {} d['get'] = get_cb d['transaction'] = trans_cb for i in _keys.keys(): if i.find('base-ip') == -1: continue cps.obj_register(handle, _keys[i], d) while True: time.sleep(1)
_operation = ['set', 'create', 'delete'] if _in_op not in _operation: print "\nCheck operation, supported operations (set/create/delete)\n" exit(1) _qual = ['target', 'observed', 'proposed', 'realtime'] if _in_qual not in _qual: print "\nCheck qualifier, supported qualifiers (target/observed/proposed/realtime)\n" exit(1) _key = cps.key_from_name(_in_qual, sys.argv[3]) if ((_key == "") or (_key == None)): print "\nCheck the object name, not a valid object\n" exit(1) handle = cps.event_connect() print " sending event for...." _obj = cps_object.CPSObject(qual=_in_qual, module=sys.argv[3]) for e in sys.argv[4:]: attr = e.split('=',1) _obj.add_attr(attr[0],attr[1]) cur_obj = _obj.get() ev = {'operation':_in_op, 'key':cur_obj['key'], 'data':cur_obj['data']} cps.event_send(handle, ev) if 'operation' in ev: print "Operation : ", ev['operation'] cps_utils.print_obj(cur_obj)
#Python code block to request MAC address table entry import cps_utils import cps #Register the attribute type cps_utils.add_attr_type("base-mac/query/mac-address", "mac") #Define the MAC address request type d = {"mac-address": "00:0a:0b:cc:0d:0e","request-type":"2"} #Associate the get operation with the CPS object obj = cps_utils.CPSObject('base-mac/query', data= d) #Create an object filter list filter_list = [] filter_list.append(obj.get()) l = [] #Check for failure if cps.get(filter_list,l): if l: for ret_obj in l: cps_utils.print_obj(ret_obj) else: print "No objects found" else: print "No objects found" raise RuntimeError ("Error Getting MAC Table Entries")
print "Missing args. Please enter a CPS key path and then optional attributes/values separated by =" print "%s qual base-port/physical hardware-port-id=26" print "qual = target,observed,.." print "qual is an optional argument if not specified, target is used by default" exit(1) l = [] k = [] cur_obj = None qual = "target" qual_list = ["target","observed","proposed","realtime"] for e in sys.argv[1:]: if e in qual_list: qual = e continue if e.find('=') == -1: if (cur_obj is None): cur_obj = cps_object.CPSObject(qual=qual,module=e) else: k.append(cur_obj.get()) cur_obj = cps_object.CPSObject(qual=qual,module=e) else: res = e.split('=', 1) cur_obj.add_attr(res[0], res[1]) k.append(cur_obj.get()) cps.get(k, l) for entry in l: print "" cps_utils.print_obj(entry)
0] print "qual is an optional argument if not specified, target is used by default" print "To add embedded attribute specify the all arguments in comma followed by = and its value" print "For eg. base-stg/entry/intf,0,ifindex=17 base-stg/entry/intf,0,state=1" exit(1) qual_list = ["target", "observed", "proposed", "realtime"] if sys.argv[1] in qual_list: ch = {'operation': sys.argv[2], 'change': {}} cur_obj = cps_object.CPSObject(qual=sys.argv[1], module=sys.argv[3]) arg_list = sys.argv[4:] else: ch = {'operation': sys.argv[1], 'change': {}} cur_obj = cps_object.CPSObject(qual="target", module=sys.argv[2]) arg_list = sys.argv[3:] for e in arg_list: res = e.split('=', 1) # For embedded attribute check if comma seperated attribute list is given # then add it as embedded embed_attrs = res[0].split(',') if len(embed_attrs) == 3: cur_obj.add_embed_attr(embed_attrs, res[1]) else: cur_obj.add_attr(res[0], res[1]) ch['change'] = cur_obj.get() if cps.transaction([ch]): print "Success" cps_utils.print_obj(ch['change'])
def get(obj): get = [] if cps.get([obj.get()], get): for i in get: cps_utils.print_obj(i)
def print_port_list(port_list): for ph in port_list: print 'Key ' + str(ph) cps_utils.print_obj(port_list[ph].get()) return
def print_port_obj(port_obj): cps_utils.print_obj(port_obj.get()) return
print "To add embedded attribute specify the all arguments in comma followed by = and its value" print "For eg. base-stg/entry/intf,0,ifindex=17 base-stg/entry/intf,0,state=1" exit(1) qual_list = ["target","observed","proposed","realtime"] if sys.argv[1] in qual_list: ch = {'operation': sys.argv[2], 'change': {}} cur_obj = cps_object.CPSObject(qual=sys.argv[1],module=sys.argv[3]) arg_list = sys.argv[4:] else: ch = {'operation': sys.argv[1], 'change': {}} cur_obj = cps_object.CPSObject(qual="target",module=sys.argv[2]) arg_list = sys.argv[3: ] for e in arg_list: res = e.split('=', 1) # For embedded attribute check if comma seperated attribute list is given # then add it as embedded embed_attrs = res[0].split(',') if len(embed_attrs) == 3: cur_obj.add_embed_attr(embed_attrs,res[1]) else: cur_obj.add_attr(res[0], res[1]) ch['change'] = cur_obj.get() if cps.transaction([ch]): print "Success" cps_utils.print_obj(ch['change'])
import cps_utils import cps cps_utils.add_attr_type("base-mac/query/mac-address", "mac") d = {"mac-address": "00:0a:0b:cc:0d:0e","request-type":"2"} obj = cps_utils.CPSObject('base-mac/query', data= d) filter_list = [] filter_list.append(obj.get()) l = [] if cps.get(filter_list,l): if l: for ret_obj in l: cps_utils.print_obj(ret_obj) else: print "No objects found" else: print "No objects found" raise RuntimeError ("Error Getting MAC Table Entries")
def create(obj): ret = commit(obj, "create") if ret: cps_utils.print_obj(ret[0]) return ret
# # See the Apache Version 2.0 License for specific language governing # permissions and limitations under the License. # import cps import cps_utils import cps_object if __name__ == '__main__': _obj = cps_object.object_from_parameters(prog='cps_get_oid', description='This process \ will perform a CPS get and return the results. \ The command line supports getting a single object with many attributes. \ An example is: %(prog)s cps/node-group -attr name=\'localhost\'') k = [_obj.get()] l = [] _cur_key = '' cps.get(k, l) for entry in l: o = cps_object.CPSObject(obj=entry) if (_cur_key != o.get_key()): _cur_key = o.get_key() print('\n============%s==========\n' % cps.name_from_key(_cur_key, 1)) cps_utils.print_obj(o.get(), show_key=False) print "------------------------------------------------"
def mirror_show(): filt = cps_utils.CPSObject('base-mirror/entry') ret = [] r = cps.get([filt.get()], ret) for obj in ret: cps_utils.print_obj(obj)
def incoming_svcs_test(is_negative_test=False, *test_args): global parser global test_count if len(test_args) == 0: args = vars(parser.parse_args()) else: args = vars(parser.parse_args(test_args)) op = args['operation'] if op == 'pre-cfg': #config test pre-req clear = args['clear'] print 'Running test pre-configruation %s...' % ('cleanup ' if clear else '') if 'mgmt_ip' in args and args['mgmt_ip'] is not None: print 'Management IP: %s' % args['mgmt_ip'] test_pre_req_cfg(clear, args['mgmt_ip']) else: test_pre_req_cfg(clear) time.sleep(20) print 'Done with pre-configuration' return True if op != 'run-test': print '*** Running %stest: %s ***' % ('negative ' if is_negative_test else '', ' '.join(test_args)) obj = cps_object.CPSObject('vrf-firewall/ns-incoming-service') for arg_name, arg_val in args.items(): if arg_name in arg_cps_attr_map and arg_val is not None: attr_name, func = arg_cps_attr_map[arg_name] if func is not None: attr_val = func(arg_name, arg_val) if type(attr_name) is list: if attr_val is None: raise RuntimeError('Failed to convert input %s' % arg_name) if len(attr_name) != len(attr_val): raise RuntimeError('Invalid argument %s' % arg_name) for idx in range(len(attr_name)): if attr_val[idx] is not None: obj.add_attr(attr_name[idx], attr_val[idx]) else: if attr_val is not None: obj.add_attr(attr_name, attr_val) else: obj.add_attr(attr_name, arg_val) if op == 'info': ret_list = [] if cps.get([obj.get()], ret_list) == False: raise RuntimeError('Failed to get object') for ret_obj in ret_list: cps_utils.print_obj(ret_obj) elif op == 'run-test': if run_test_incoming_svcs() == False: print 'UT failed' return False print 'UT success' return True else: upd = (op, obj.get()) ret_val = cps_utils.CPSTransaction([upd]).commit() # exit on success for negative test if is_negative_test and ret_val != False: raise RuntimeError('Operation %s should have failed but succeed' % op) elif not is_negative_test and ret_val == False: raise RuntimeError('Failed to %s object' % op) if ret_val != False: print 'Input object %s' % op cps_utils.print_obj(ret_val[0]) test_count += 1 return True
print "\nCheck the qualifier, not a valid qualifier " cps_trace_usage() exit(1) if len(sys.argv) > 2: _key = cps.key_from_name(in_qual, sys.argv[2]) else: _key = cps.key_from_qual(in_qual) print "Key : " + _key if ((_key == "") or (_key == None)): print "Check the object name, not a valid object\n" exit(1) if len(sys.argv) > 2: print " Registering for " + in_qual + " " + sys.argv[2] else: print " Registering for " + in_qual handle = cps.event_connect() cps.event_register(handle, _key) while True: ev = cps.event_wait(handle) print ev['key'] if 'operation' in ev: print "Operation : ", ev['operation'] cps_utils.print_obj(ev)
# # THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR # CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT # LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS # FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. # # See the Apache Version 2.0 License for specific language governing # permissions and limitations under the License. import cps import cps_object import cps_utils _ipv4_key = cps.key_from_name('target', 'base-ip/ipv4') _ipv6_key = cps.key_from_name('target', 'base-ip/ipv6') if __name__ == '__main__': # monitor ip change event handle = cps.event_connect() cps.event_register(handle, _ipv4_key) cps.event_register(handle, _ipv6_key) while True: o = cps.event_wait(handle) print o obj = cps_object.CPSObject(obj=o) cps_utils.print_obj(obj) if _ipv4_key == obj.get_key(): print "IPv4 change event received" elif _ipv6_key == obj.get_key(): print "IPv6 change event received"
_operation = ['set', 'create', 'delete'] if _in_op not in _operation: print "\nCheck operation, supported operations (set/create/delete)\n" exit(1) _qual = ['target', 'observed', 'proposed', 'realtime'] if _in_qual not in _qual: print "\nCheck qualifier, supported qualifiers (target/observed/proposed/realtime)\n" exit(1) _key = cps.key_from_name(_in_qual, sys.argv[3]) if ((_key == "") or (_key == None)): print "\nCheck the object name, not a valid object\n" exit(1) handle = cps.event_connect() print " sending event for...." _obj = cps_object.CPSObject(qual=_in_qual, module=sys.argv[3]) for e in sys.argv[4:]: attr = e.split('=', 1) _obj.add_attr(attr[0], attr[1]) cur_obj = _obj.get() ev = {'operation': _in_op, 'key': cur_obj['key'], 'data': cur_obj['data']} cps.event_send(handle, ev) if 'operation' in ev: print "Operation : ", ev['operation'] cps_utils.print_obj(cur_obj)
# CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT # LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS # FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. # # See the Apache Version 2.0 License for specific language governing # permissions and limitations under the License. # import cps import cps_object import cps_utils _ipv4_key = cps.key_from_name('target', 'base-ip/ipv4') _ipv6_key = cps.key_from_name('target', 'base-ip/ipv6') if __name__ == '__main__': # monitor ip change event handle = cps.event_connect() cps.event_register(handle, _ipv4_key) cps.event_register(handle, _ipv6_key) while True: o = cps.event_wait(handle) print o obj = cps_object.CPSObject(obj=o) cps_utils.print_obj(obj) if _ipv4_key == obj.get_key(): print "IPv4 change event received" elif _ipv6_key == obj.get_key(): print "IPv6 change event received"