def setUp(self): from ydk.services import CRUDService crud = CRUDService() runner = ysanity.Runner() crud.delete(self.ncc, runner) print '\nIn method', self._testMethodName + ':'
def test_delete_container(self): # Build loopback configuration address = Native.Interface.Loopback.Ipv4.Address() address.ip = "2.2.2.2" address.netmask = "255.255.255.255" loopback = Native.Interface.Loopback() loopback.name = 2222 loopback.ipv4.address.append(address) native = Native() native.interface.loopback.append(loopback) crud = CRUDService() result = crud.create(self.ncc, native) self.assertTrue(result) # Remove ipv4 configuration native = Native() loopback = Native.Interface.Loopback() loopback.name = 2222 native.interface.loopback.append(loopback) result = crud.delete(self.ncc, loopback.ipv4) self.assertTrue(result) # Delete configuration native = Native() result = crud.delete(self.ncc, native) self.assertEqual(result, True)
def deleteDestination(self): ''' Delete desntination group only ''' returncode = 0 xr,returncode = self.access_router() if returncode > 0: print "\n"+self.OUTPUT.get(returncode)+"\n" return returncode try: rpc_service = CRUDService() dgroup = xr_telemetry.TelemetryModelDriven.DestinationGroups.DestinationGroup() dgroup.destination_id = self.DgroupName ''' dgroup = oc_telemetry.TelemetrySystem.DestinationGroups.DestinationGroup() dgroup.group_id = self.DgroupName dgroup.config.group_id = self.DgroupName ''' rpc_service.delete(xr, dgroup) except: returncode = 11 xr.close() print "\n"+self.OUTPUT.get(returncode)+"\n" return returncode
def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) interface_configurations = xr_ifmgr_cfg.InterfaceConfigurations() interface_configuration = interface_configurations.InterfaceConfiguration( ) interface_configuration.active = "act" interface_configuration.interface_name = attributes.value('name') interface_configuration.interface_virtual = Empty() # name is a mandatory arguments #keep = string.digits #ydk_obj.name = int(''.join(i for i in attributes.value('name') if i in keep)) if unconfig and attributes.iswildcard: pass else: vrf = attributes.value('vrf') if vrf: interface_configuration.vrf = vrf.name ipv4 = attributes.value('ipv4') if ipv4: primary = interface_configuration.ipv4_network.addresses.Primary( ) primary.address = str(ipv4.ip) primary.netmask = str(ipv4.netmask) interface_configuration.ipv4_network.addresses.primary = primary # instantiate crud service crud_service = CRUDService() if apply: # create netconf connection ncp = NetconfServiceProvider(self.device) if unconfig: crud_service.delete(ncp, interface_configuration) else: crud_service.create(ncp, interface_configuration) else: if unconfig: return YangConfig(device=self.device, unconfig=unconfig, ncp=NetconfServiceProvider, ydk_obj=interface_configuration, crud_service=crud_service.delete) else: return YangConfig(device=self.device, unconfig=unconfig, ncp=NetconfServiceProvider, ydk_obj=interface_configuration, crud_service=crud_service.create)
def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): assert not kwargs attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) vrfs = xr_infra_rsi_cfg.Vrfs() if not unconfig: vrf = vrfs.Vrf() if attributes.value('name'): vrf.vrf_name = attributes.value('name') vrf.create = Empty() vrfs.vrf.append(vrf) #crud_service = CRUDService() #ncp = NetconfServiceProvider(self.device) #x = crud_service.read(ncp, vrf) #abc = YangConfig(device=self.device, ydk_obj=x, ncp=ncp, crud_service=crud_service) #print(abc) # iosxr: vrf vrf1 / address-family ipv4 unicast (config-vrf-af) for key, sub, attributes2 in attributes.mapping_items( 'address_family_attr', keys=self.address_families, sort=True): sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig, vrf=vrf) # instantiate crud service crud_service = CRUDService() if apply: # create netconf connection ncp = NetconfServiceProvider(self.device) crud_service.create(ncp, vrfs) if unconfig: crud_service.delete(ncp, vrfs) else: if unconfig: return YangConfig(device=self.device, ydk_obj=vrfs, ncp=NetconfServiceProvider, crud_service=crud_service.delete) else: return YangConfig(device=self.device, ydk_obj=vrfs, ncp=NetconfServiceProvider, crud_service=crud_service.create)
def setUp(self): # start a brand new session for every single test case # so test_close_session_rpc will not interfere with other test cases # self.ncc = NetconfServiceProvider('127.0.0.1', 'admin', 'admin', 12022) self.ncc = NetconfServiceProvider(self.hostname, self.username, self.password, self.port, self.protocol, self.on_demand, self.common_cache) from ydk.services import CRUDService crud = CRUDService() runner = ysanity.Runner() crud.delete(self.ncc, runner)
class SanityYang(unittest.TestCase): @classmethod def setUpClass(self): self.ncc = NetconfServiceProvider(address='127.0.0.1', username='******', password='******', protocol='ssh', port=12022) self.crud = CRUDService() @classmethod def tearDownClass(self): self.ncc.close() def setUp(self): self.crud.delete(self.ncc, ietf_aug_base_1.Cpython()) self.crud.delete(self.ncc, ietf_aug_base_2.Cpython()) def tearDown(self): self.crud.delete(self.ncc, ietf_aug_base_1.Cpython()) self.crud.delete(self.ncc, ietf_aug_base_2.Cpython()) def test_aug_base_1(self): cpython = ietf_aug_base_1.Cpython() cpython.doc.ydktest_aug_1.aug_one = 'aug one' cpython.doc.ydktest_aug_2.aug_two = 'aug two' cpython.doc.ydktest_aug_4.aug_four = 'aug four' cpython.lib.ydktest_aug_1.ydktest_aug_nested_1.aug_one = 'aug one' cpython.lib.ydktest_aug_2.ydktest_aug_nested_2.aug_two = 'aug two' cpython.lib.ydktest_aug_4.ydktest_aug_nested_4.aug_four = 'aug four' cpython.doc.disutils.four_aug_list.enabled = True item1 = cpython.doc.disutils.four_aug_list.Ldata() item2 = cpython.doc.disutils.four_aug_list.Ldata() item1.name, item1.number = 'one', 1 item2.name, item1.number = 'two', 2 self.crud.create(self.ncc, cpython) cpython_read = self.crud.read(self.ncc, ietf_aug_base_1.Cpython()) self.assertEqual(is_equal(cpython, cpython_read), True) def test_aug_base_2(self): cpython = ietf_aug_base_2.Cpython() cpython.tools.aug_four = 'aug four' self.crud.create(self.ncc, cpython) cpython_read = self.crud.read(self.ncc, ietf_aug_base_2.Cpython()) self.assertEqual(is_equal(cpython, cpython_read), True)
class SanityTest(unittest.TestCase): @classmethod def setUpClass(self): self.ncc = NetconfServiceProvider( "127.0.0.1", "admin", "admin", 12022, ) self.crud = CRUDService() def setUp(self): runner = Runner() self.crud.delete(self.ncc, runner) def test_delete_on_list_with_identitykey(self): a1 = Runner.OneList.IdentityList() a1.config.id = ChildIdentity() a1.id_ref = a1.config.id self.crud.create(self.ncc, a1) k = Runner.OneList.IdentityList() k.config.id = ChildIdentity() k.id_ref = k.config.id k.yfilter = YFilter.delete self.crud.update(self.ncc, k) runner_read = self.crud.read(self.ncc, Runner()) self.assertIsNone(runner_read) def test_iden_list(self): # CREATE il = Runner.OneList.IdentityList() il.config.id = ChildIdentity() il.id_ref = ChildIdentity() self.crud.create(self.ncc, il) # READ & VALIDATE runner_filter = Runner.OneList() read_one = self.crud.read(self.ncc, runner_filter) self.assertIsNotNone(read_one) read_il = read_one.identity_list.get(ChildIdentity().to_string()) self.assertIsNotNone(read_il) read_il.parent = None self.assertEqual(read_il, il) # DELETE & VALIDATE self.crud.delete(self.ncc, il) runner_read = self.crud.read(self.ncc, Runner()) self.assertIsNone(runner_read)
def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) ospf = xr_ipv4_ospf_cfg.Ospf() process = ospf.processes.Process() id = attributes.value('ospf_name', force=True) process.process_name = str(id) ospf.processes.process.append(process) if not unconfig: process.start = Empty() # crud_service = CRUDService() # ncp = NetconfServiceProvider(self.device) # x = crud_service.read(ncp, process) # abc = YangConfig(device=self.device, ydk_obj=x, ncp=ncp, crud_service=crud_service) # print(abc) v = attributes.value('nsr') if v == True: process.nsr = "true" for sub, attributes2 in attributes.mapping_values( 'vrf_attr', sort=VrfSubAttributes._sort_key): sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig, process=process, **kwargs) # instantiate crud service crud_service = CRUDService() if apply: # create netconf connection3 ncp = NetconfServiceProvider(self.device) if unconfig: crud_service.delete(ncp, process) else: crud_service.create(ncp, process) else: if unconfig: return YangConfig(device=self.device, ydk_obj=process, ncp=NetconfServiceProvider, crud_service=crud_service.delete) else: return YangConfig(device=self.device, ydk_obj=process, ncp=NetconfServiceProvider, crud_service=crud_service.create)
def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) ydk_obj = ned.Native.Router.Ospf() ospf_intfs = [] for sub, attributes2 in attributes.mapping_values( 'vrf_attr', sort=VrfSubAttributes._sort_key): ospf_intfs.extend( sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig, ydk_obj=ydk_obj, **kwargs)) # instantiate crud service crud_service = CRUDService() if apply: # create netconf connection ncp = NetconfServiceProvider(self.device) if unconfig: crud_service.delete(ncp, ydk_obj) else: crud_service.create(ncp, ydk_obj) for inter in ospf_intfs: inter.apply() else: ydks = [] if unconfig: ydks.append( YangConfig(device=self.device, ydk_obj=ydk_obj, ncp=NetconfServiceProvider, crud_service=crud_service.delete)) else: ydks.append( YangConfig(device=self.device, ydk_obj=ydk_obj, ncp=NetconfServiceProvider, crud_service=crud_service.create)) for inter in ospf_intfs: ydks.append(inter) return ydks
def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) ydk_obj = ned.Native.Interface.Loopback() # name is a mandatory arguments keep = string.digits ydk_obj.name = int(''.join(i for i in attributes.value('name') if i in keep)) if unconfig and attributes.iswildcard: pass else: ipv4 = attributes.value('ipv4') if ipv4: ydk_obj.ip.address.primary.address = str(ipv4.ip) ydk_obj.ip.address.primary.mask = str(ipv4.netmask) vrf = attributes.value('vrf') if vrf: ydk_obj.vrf.forwarding = vrf.name # instantiate crud service crud_service = CRUDService() if apply: # create netconf connection ncp = NetconfServiceProvider(self.device) if unconfig: crud_service.delete(ncp, ydk_obj) else: crud_service.create(ncp, ydk_obj) else: if unconfig: return YangConfig(device=self.device, unconfig=unconfig, ncp=NetconfServiceProvider, ydk_obj=ydk_obj, crud_service=crud_service.delete) else: return YangConfig(device=self.device, unconfig=unconfig, ncp=NetconfServiceProvider, ydk_obj=ydk_obj, crud_service=crud_service.create)
def test_ipv4(self): self.logger.info("IETF_INTERFACE_TEST_START_002") name = "host-vpp1" crud_service = CRUDService() interface = ietf_interfaces.Interfaces.Interface() interface.name = name interface.type = iana_if_type.EthernetCsmacd() interface.ipv4 = interface.Ipv4() addr = interface.Ipv4().Address() addr.ip = "192.168.0.1" addr.prefix_length = 24 interface.ipv4.address.append(addr) addr1 = interface.Ipv4().Address() addr1.ip = "142.168.0.1" addr1.prefix_length = 14 interface.ipv4.address.append(addr1) try: crud_service.create(self.netopeer_cli, interface) except YError as err: print("Error create services: {}".format(err)) assert () a = self.vppctl.show_address(name) self.assertIsNotNone(a) prefix = interface.ipv4.address[0].ip + "/" + \ str(interface.ipv4.address[0].prefix_length) self.assertIn(prefix, a.addr) prefix = interface.ipv4.address[1].ip + "/" + \ str(interface.ipv4.address[1].prefix_length) self.assertIn(prefix, a.addr) try: crud_service.delete(self.netopeer_cli, interface) except YError as err: print("Error create services: {}".format(err)) assert () a = self.vppctl.show_address(name) self.assertIsNone(a) self.logger.info("IETF_INTERFACE_TEST_FINISH_002")
def deleteAsNeighbor(device,AsNeighbor): """ Deletes AS neighbor device config via OpenConfig NETCONF/YANG model TODO: Add more granularlity for CRUD delete responses. Author: David J. Stern Date: DEC 2017 Parameters: device: (str): device type identifier being used. device = "asr" to use OpenConfig model asNeighbor: (int): AS number Returns: (boolean): True if successful, False otherwise On Error: (YPYError): Prints to console. Returns False. """ if device=="asr": provider = NetconfServiceProvider(address=currentEdgeDeviceInfo['IPv4'],port=,username=currentEdgeDeviceInfo['username'],password=currentEdgeDeviceInfo['password'],protocol="ssh") crud = CRUDService() interfaces_filter = bgp_io.Neighbors().Neighbor() interfaces_filter.neighbor_address = str(AsNeighbor) try: respNodes = crud.delete(provider, interfaces_filter) except YPYError: print('An error occurred delete AS: '+str(AsNeighbor)) return False return True
def test_sanity_crud_read_interface(self): address = ysanity.Native.Interface.Loopback.Ipv4.Address() address.ip = "2.2.2.2" address.netmask = "255.255.255.255" loopback = ysanity.Native.Interface.Loopback() loopback.name = 2222 loopback.ipv4.address.append(address) native = ysanity.Native() native.interface.loopback.append(loopback) crud = CRUDService() result = crud.create(self.ncc, native) self.assertEqual(result, True) native_read = ysanity.Native() interfaces = crud.read(self.ncc, native_read) codec_service = CodecService() codec_provider = CodecServiceProvider() codec_provider.encoding = EncodingFormat.XML xml_encode = codec_service.encode(codec_provider, interfaces) print('\n===== Printing entity: {}'.format(interfaces)) print(xml_encode) # Delete configuration result = crud.delete(self.ncc, native) self.assertEqual(result, True)
def test_crud_read_list(self): crud = CRUDService() # Build configuration of multiple objects native = ysanity.Native() native.hostname = 'NativeHost' native.version = '0.1.0' bgp = openconfig.Bgp() bgp.global_.config.as_ = 65001 bgp.global_.config.router_id = "1.2.3.4" create_list = [native, bgp] # Configure device result = crud.create(self.ncc, create_list) self.assertEqual(result, True) # Read configuration native_filter = ysanity.Native() bgp_filter = openconfig.Bgp() filter_list = [native_filter, bgp_filter] read_list = crud.read(self.ncc, filter_list) self.assertEqual(isinstance(read_list, list), True) self.assertEqual(len(read_list), 2) # Delete configuration result = crud.delete(self.ncc, create_list) self.assertEqual(result, True)
def setUp(self): # start a brand new session for every single test case # so test_close_session_rpc will not interfere with other test cases # self.ncc = NetconfServiceProvider('127.0.0.1', 'admin', 'admin', 12022) self.ncc = NetconfServiceProvider( self.hostname, self.username, self.password, self.port, self.protocol, self.on_demand, self.common_cache, self.timeout) from ydk.services import CRUDService crud = CRUDService() runner = ysanity.Runner() crud.delete(self.ncc, runner)
def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): assert not kwargs attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) ydk_obj = ned.Native.Vrf() vrf_obj = ydk_obj.Definition() ydk_obj.definition.append(vrf_obj) if attributes.value('name'): vrf_obj.name = attributes.value('name') # iosxr: vrf vrf1 / address-family ipv4 unicast (config-vrf-af) for key, sub, attributes2 in attributes.mapping_items( 'address_family_attr', keys=self.address_families, sort=True): sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig, vrf_obj=vrf_obj) # instantiate crud service crud_service = CRUDService() if apply: # create netconf connection ncp = NetconfServiceProvider(self.device) crud_service.create(ncp, ydk_obj) if unconfig: crud_service.delete(ncp, ydk_obj) else: if unconfig: return YangConfig(device=self.device, ydk_obj=ydk_obj, ncp=NetconfServiceProvider, crud_service=crud_service.delete) else: return YangConfig(device=self.device, ydk_obj=ydk_obj, ncp=NetconfServiceProvider, crud_service=crud_service.create)
def del_conf(self): returncode = 0 xr, returncode = self.access_router() if returncode > 0: print "\n" + self.OUTPUT.get(returncode) + "\n" return returncode try: rpc_service = CRUDService() rpc_service.delete(xr, oc_telemetry.TelemetrySystem()) except: returncode = 11 xr.close() print "\n" + self.OUTPUT.get(returncode) + "\n" return returncode
def config_bgp_ipv4(yang_repo="", address="", grpc_port="", username="", password="", crud_op="add", bgp={}): repository = Repository(yang_repo) provider = gNMIServiceProvider(repo=repository, address=address, port=int(grpc_port), username=username, password=password) gnmi_service = gNMIService() crud = CRUDService() ni = oc_ni.NetworkInstances.NetworkInstance() if "vrf" in list(bgp.keys()): ni.name = bgp["vrf"] else: print("Vrf for network Instance not specified") sys.exit(1) protocol = ni.protocols.Protocol() protocol.identifier = oc_policy_types.BGP() protocol.name = "default" protocol.config.identifier = oc_policy_types.BGP() protocol.config.name = "default" if "as" in list(bgp.keys()): protocol.bgp.global_.config.as_ = int(bgp["as"]) else: print("AS for BGP instance not specified") sys.exit(1) # Fill out your BGP object properly using the Openconfig Yang Model # You will need to bring up the IBGP neighbor between rtr1 and rtr4 ni.protocols.protocol.append(protocol) if crud_op == "add": response = crud.create(provider, ni) elif crud_op == "delete": response = crud.delete(provider, ni) elif crud_op is "update": response = crud.update(provider, ni) else: print( "Invalid operation requested, allowed values = add, update, delete" ) return False return response
def del_conf(self): ''' This function is duplicate to deleteMDTConfig() ''' returncode = 0 xr,returncode = self.access_router() if returncode > 0: print "\n"+self.OUTPUT.get(returncode)+"\n" return returncode try: rpc_service = CRUDService() rpc_service.delete(xr, oc_telemetry.TelemetrySystem()) except: returncode = 11 xr.close() print "\n"+self.OUTPUT.get(returncode)+"\n" return returncode
def run_multiple_routing_bgp(netconf_service, session): crud = CRUDService() codec = CodecService() codec_provider = CodecServiceProvider() crud.delete(session, bgp()) crud.delete(session, RoutingPolicy()) multi_cfg = _get_bgp_routing_multiple_object() multi_payload_expected = codec.encode(codec_provider, multi_cfg) result = netconf_service.edit_config(session, Datastore.candidate, multi_cfg) assert 'ok' in result multi_filter = {'bgp':bgp(), 'routing-policy':RoutingPolicy()} multi_entity_read = netconf_service.get_config(session, Datastore.candidate, multi_filter) multi_payload_actual = codec.encode(codec_provider, multi_entity_read) assert multi_payload_expected == multi_payload_actual
def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) ydk_obj = xr_ifmgr_cfg.InterfaceConfigurations() vlan_config = [] for sub, attributes2 in attributes.mapping_values( 'interface_attr', keys=self.interface_attr): vlan_config.extend( sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig, ydk_obj=ydk_obj, **kwargs)) # instantiate crud service crud_service = CRUDService() if apply: # create netconf connection ncp = NetconfServiceProvider(self.device) if unconfig: crud_service.delete(ncp, ydk_obj) else: crud_service.create(ncp, ydk_obj) for cfg in vlan_config: cfg.apply() else: ydks = [] for cfg in vlan_config: ydks.append(cfg) return ydks
def deleteVlanFromExisitingInterface(device,interface,vlan): """ Deletes subinterface on a Cisco ASR9XXX. TODO: Add multi device and multi vendor support Consider adding IPv6 support in the future When vendor has the OC model working implement it. Author: David J. Stern Date: DEC 2017 Parameters: device: (str): device type [UNUSED for future use] interface: (str): Vendor identifier of interface/subinterface vlan: (int): vlan number to use [will be casted to int if you send str] Returns: (boolean): True for success of the deletion. On Error: (Any Exception to call): Returns False """ interface_configurations2 = xr_ifmgr_cfg.InterfaceConfigurations().InterfaceConfiguration() interface_configurations2.interface_name = str(interface)+"."+str(vlan) interface_configurations2.interface_mode_non_physical = xr_ifmgr_cfg.InterfaceModeEnumEnum.default interface_configurations2.active = "act" provider = NetconfServiceProvider(address=currentEdgeDeviceInfo['IPv4'],port=,username=currentEdgeDeviceInfo['username'],password=currentEdgeDeviceInfo['password'],protocol="ssh") crud = CRUDService() try: crud.delete(provider, interface_configurations2) except: provider.close() return (False) provider.close() return(True)
def del_conf(self): # returncode = 0 # xr = self.access_router() ''' TODO: develop the function for deleting the MDT confgiuration ''' returncode = 0 xr, returncode = self.access_router() if returncode > 0: print "\n" + self.OUTPUT.get(returncode) + "\n" return returncode try: rpc_service = CRUDService() rpc_service.delete(xr, oc_telemetry.TelemetrySystem()) except: returncode = 11 xr.close() print "\n" + self.OUTPUT.get(returncode) + "\n" return returncode
def deleteSub(self): ''' Delete subscription only ''' returncode = 0 xr,returncode = self.access_router() if returncode > 0: print "\n"+self.OUTPUT.get(returncode)+"\n" return returncode try: rpc_service = CRUDService() sub = oc_telemetry.TelemetrySystem.Subscriptions.Persistent.Subscription() sub.subscription_id = long(self.SubId) sub.config.subscription_id = long(self.SubId) rpc_service.delete(xr, sub) except: returncode = 11 xr.close() print "\n"+self.OUTPUT.get(returncode)+"\n" return returncode
def deleteSensor(self): ''' Delete sensor group only ''' returncode = 0 xr,returncode = self.access_router() if returncode > 0: print "\n"+self.OUTPUT.get(returncode)+"\n" return returncode try: rpc_service = CRUDService() sgroup = oc_telemetry.TelemetrySystem.SensorGroups.SensorGroup() sgroup.sensor_group_id = self.SGroupName sgroup.config.sensor_group_id = self.SGroupName rpc_service.delete(xr, sgroup) except: returncode = 11 xr.close() print "\n"+self.OUTPUT.get(returncode)+"\n" return returncode
def takeaction(self, path): new_line = "\n" crud = CRUDService() if path == "active": try: router_static = xr_ip_static_cfg.RouterStatic() self.config_router_static(router_static, BACKUP_PREFIX_DICT_LIST) crud.delete(self.provider, router_static) except: print "No existing backup route configured, continue with activation of active path" router_static = xr_ip_static_cfg.RouterStatic() self.config_router_static(router_static, ACTIVE_PREFIX_DICT_LIST) crud.create(self.provider, router_static) print(10 * new_line) elif path == "backup": try: router_static = xr_ip_static_cfg.RouterStatic() self.config_router_static(router_static, ACTIVE_PREFIX_DICT_LIST) crud.delete(self.provider, router_static) except: print "No existing active route configured, continue with activation of backup path" router_static = xr_ip_static_cfg.RouterStatic() self.config_router_static(router_static, BACKUP_PREFIX_DICT_LIST) crud.create(self.provider, router_static) print(10 * new_line) else: try: router_static = xr_ip_static_cfg.RouterStatic() self.config_router_static(router_static, BACKUP_PREFIX_DICT_LIST) crud.delete(self.provider, router_static) router_static = xr_ip_static_cfg.RouterStatic() self.config_router_static(router_static, ACTIVE_PREFIX_DICT_LIST) crud.delete(self.provider, router_static) except: print "Ignoring exceptions as we clean up"
def test_crud_read_collection(self): crud = CRUDService() # Build configuration of multiple objects create_list = Config() native = ysanity.Native() native.hostname = 'NativeHost' native.version = '0.1.0' create_list.append(native) bgp = openconfig.Bgp() bgp.global_.config.as_ = 65001 bgp.global_.config.router_id = "1.2.3.4" create_list.append(bgp) create_list = Config([native, bgp]) # Configure device result = crud.create(self.ncc, create_list) self.assertEqual(result, True) # Read configuration read_filter = Filter([ysanity.Native(), openconfig.Bgp()]) read_config = crud.read(self.ncc, read_filter) self.assertEqual(isinstance(read_config, Config), True) self.assertEqual(len(read_config), 2) # Print configuration codec_service = CodecService() codec_provider = CodecServiceProvider() codec_provider.encoding = EncodingFormat.XML for entity in read_config: xml = codec_service.encode(codec_provider, entity) print('\n===== Printing entity: {}'.format(entity)) print(xml) # Delete configuration result = crud.delete(self.ncc, create_list) self.assertEqual(result, True)
args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.DEBUG) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() router_static = xr_ip_static_cfg.RouterStatic() # create object # delete configuration on NETCONF device crud.delete(provider, router_static.default_vrf.address_family.vrfipv6.vrf_unicast) provider.close() exit() # End of script
help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.INFO) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() arpgmp = xr_ipv4_arp_cfg.Arpgmp() # create object # delete configuration on NETCONF device crud.delete(provider, arpgmp) exit() # End of script
parser.add_argument("device", help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.INFO) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() ip_domain = xr_ip_domain_cfg.IpDomain() # create object # delete configuration on NETCONF device crud.delete(provider, ip_domain) exit() # End of script
help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.DEBUG) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() isis = xr_clns_isis_cfg.Isis() # create object # delete configuration on NETCONF device crud.delete(provider, isis) provider.close() exit() # End of script
#CRUDSerice provides the CRUD functions crud_service = CRUDService() #Configuration entity for BGP bgp_config = oc_bgp.Bgp() #Read and print the initial value initial_bgp = crud_service.read(xr_provider, bgp_config) print("The initial BGP ASN value is - " + str(initial_bgp.global_.config.as_)) #Set a new value if initial_bgp.global_.config.as_: bgp_config.global_.config.as_ = initial_bgp.global_.config.as_ - 1 #Delete the configuration entity so that we can create a new one crud_service.delete(xr_provider, bgp_config) else: bgp_config.global_.config.as_ = 65000 #Create the configuration crud_service.create(xr_provider, bgp_config) #Read and print the new value new_bgp = crud_service.read(xr_provider, bgp_config) print("The new BGP ASN value is - " + str(new_bgp.global_.config.as_)) if initial_bgp.global_.config.as_: #Reset to initial value crud_service.delete(xr_provider, bgp_config) crud_service.create(xr_provider, initial_bgp) #Read and print the value now that we have reset it initial_bgp = crud_service.read(xr_provider, bgp_config)
action="store_true") parser.add_argument("device", help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.DEBUG) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() isis = xr_clns_isis_cfg.Isis() # create config object crud.delete(provider, isis) # delete object on NETCONF device provider.close() exit() # End of script
help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.INFO) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() ipv4_acl_and_prefix_list = xr_ipv4_acl_cfg.Ipv4AclAndPrefixList() # create object # delete configuration on NETCONF device crud.delete(provider, ipv4_acl_and_prefix_list) exit() # End of script
action="store_true") parser.add_argument("device", help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.DEBUG) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() routing_policy = xr_policy_repository_cfg.RoutingPolicy() # create object crud.delete(provider, routing_policy) # delete object on NETCONF device provider.close() exit() # End of script
class SanityYang(unittest.TestCase): @classmethod def setUpClass(self): self.ncc = NetconfServiceProvider( address='127.0.0.1', username='******', password='******', protocol='ssh', port=12022) self.crud = CRUDService() @classmethod def tearDownClass(self): self.ncc.close() def setUp(self): runner = ysanity.Runner() self.crud.delete(self.ncc, runner) print '\nIn method', self._testMethodName + ':' def tearDown(self): runner = ysanity.Runner() self.crud.delete(self.ncc, runner) def test_delete_object_on_leaf(self): # create runner with two leaves, one and two runner_create = ysanity.Runner() runner_create.one.name = 'one' runner_create.two.name = 'two' self.crud.create(self.ncc, runner_create) runner_read_filter = ysanity.Runner() runner_read = self.crud.read(self.ncc, runner_read_filter) # use DELETE object to remove leaf one runner_delete = runner_read runner_delete.one.name = DELETE() self.crud.update(self.ncc, runner_delete) # manually create remaining runner with leaf two runner_read = self.crud.read(self.ncc, runner_read_filter) runner_left = runner_create runner_left.one.name = None self.assertEqual(is_equal(runner_read, runner_left), True) @unittest.skip('DELETE object for leaf-list') def test_delete_object_on_leaflist(self): # create runner with a leaf and a leaflist runner_create = ysanity.Runner() runner_create.one.name = 'one' runner_create.ytypes.built_in_t.llstring = [str(i) for i in range(5)] self.crud.create(self.ncc, runner_create) runner_read_filter = ysanity.Runner() runner_read = self.crud.read(self.ncc, runner_read_filter) # user DELETE object to remove leaflist runner_delete = runner_read runner_delete.ytypes.built_in_t.llstring = DELETE() self.crud.update(self.ncc, runner_delete) # manually create remaining runner with leaf one runner_read = self.crud.read(self.ncc, runner_read_filter) runner_left = runner_create del runner_left.ytypes.built_in_t.llstring[:] self.assertEqual(is_equal(runner_read, runner_left), True) def test_delete_operation_on_container(self): # create runner with a container runner_create = ysanity.Runner() runner_create.one.name = 'one' runner_create.two.name = 'two' self.crud.create(self.ncc, runner_create) runner_read_filter = ysanity.Runner() runner_read = self.crud.read(self.ncc, runner_read_filter) # delete contianer two self.crud.delete(self.ncc, runner_read.two) runner_read = self.crud.read(self.ncc, runner_read_filter) runner_left = runner_create runner_left.two.name = None self.assertEqual(is_equal(runner_read, runner_left), True) def test_delete_operation_on_list(self): # create runner with a container and a list runner_create = ysanity.Runner() runner_create.one.name = 'one' elem1 = ysanity.Runner.OneList.Ldata() elem2 = ysanity.Runner.OneList.Ldata() elem1.number = 1 elem2.name = 'foo' elem2.number = 1 elem2.name = 'bar' runner_create.one_list.ldata.extend([elem1, elem2]) self.crud.create(self.ncc, runner_create) runner_read_filter = ysanity.Runner() runner_read = self.crud.read(self.ncc, runner_read_filter) self.crud.delete(self.ncc, runner_read.one_list.ldata) runner_read = self.crud.read(self.ncc, runner_read_filter) runner_left = runner_create del runner_left.one_list.ldata[:] self.assertEqual(is_equal(runner_read, runner_left), True)
class SanityTest(unittest.TestCase): @classmethod def setUpClass(self): self.ncc = NetconfServiceProvider(address='127.0.0.1', port=12022) self.crud = CRUDService() @classmethod def tearDownClass(self): self.ncc.close() def setUp(self): print "\nIn method", self._testMethodName def tearDown(self): runner = ysanity.Runner() self.crud.delete(self.ncc, runner) def _create_runner(self): runner = ysanity.Runner() runner.ytypes = runner.Ytypes() runner.ytypes.built_in_t = runner.ytypes.BuiltInT() return runner # changed to type int16 def test_int8(self): # Create Runner runner = self._create_runner() runner.ytypes.built_in_t.number8 = 126 self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) # changed to type int32 def test_int16(self): runner = self._create_runner() runner.ytypes.built_in_t.number16 = 20000 self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) # changed to type int64 def test_int32(self): runner = self._create_runner() runner.ytypes.built_in_t.number32 = -9223372036854775808 self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) # changed to type uint8 def test_int64(self): runner = self._create_runner() runner.ytypes.built_in_t.number64 = -9223372036854775808 self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # changed to type uint16 def test_uint8(self): runner = self._create_runner() runner.ytypes.built_in_t.u_number8 = 256 self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) # changed to type uint32 def test_uint16(self): runner = self._create_runner() runner.ytypes.built_in_t.u_number16 = 65536 self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) # changed to type uint64 def test_uint32(self): runner = self._create_runner() runner.ytypes.built_in_t.u_number32 = 4294967296 self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) # changed to type string def test_decimal64(self): runner = self._create_runner() runner.ytypes.built_in_t.deci64 = 'string' self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) # changed to tye decimal64 def test_leafref(self): runner = self._create_runner() runner.ytypes.built_in_t.leaf_ref = Decimal64('3.14') self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) # changed to type empty def test_string(self): runner = self._create_runner() runner.ytypes.built_in_t.name = Empty() self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) # changed to type YdkEnumTestEnum def test_boolean(self): runner = self._create_runner() runner.ytypes.built_in_t.bool_value = YdkEnumTestEnum.NONE self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) runner = self._create_runner() runner.ytypes.built_in_t.bool_value = False self.assertRaises(YPYDataValidationError, self.crud.update, self.ncc, runner) # max val changed to 7 def test_leaflist_max_elements(self): runner = self._create_runner() runner.ytypes.built_in_t.llstring = [str(i) for i in range(8)] self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # not supported leaf def test_not_supported_leaf(self): runner = self._create_runner() runner.not_supported_1.not_supported_leaf = 'leaf value' self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # not supported container def test_not_supported_container(self): runner = self._create_runner() runner.not_supported_1.not_supported_1_2.some_leaf = 'some leaf' self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # not supported list def test_not_supported_list(self): runner = self._create_runner() elems = [] for i in range(5): elems.append(runner.NotSupported2()) runner.not_supported_2.extend(elems) self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner)
device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.DEBUG) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() router_static = xr_ip_static_cfg.RouterStatic() # create config object config_router_static(router_static) # add object configuration # delete object on NETCONF device crud.delete(provider, router_static.default_vrf.address_family.vrfipv4.vrf_unicast.vrf_prefixes.vrf_prefix[0]) provider.close() exit() # End of script
parser.add_argument("device", help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.INFO) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() routing_policy = xr_policy_repository_cfg.RoutingPolicy() # create object # delete configuration on NETCONF device crud.delete(provider, routing_policy) exit() # End of script
class SanityTest(unittest.TestCase): @classmethod def setUpClass(self): self.ncc = NetconfServiceProvider(address='127.0.0.1', username='******', password='******', port=12022) self.crud = CRUDService() @classmethod def tearDownClass(self): self.ncc.close() def setUp(self): print "\nIn method", self._testMethodName runner = ysanity.Runner() self.crud.delete(self.ncc, runner) def tearDown(self): runner = ysanity.Runner() self.crud.delete(self.ncc, runner) def _create_runner(self): runner = ysanity.Runner() runner.ytypes = runner.Ytypes() runner.ytypes.built_in_t = runner.ytypes.BuiltInT() return runner # def test_invalids(self): # runner = self._create_runner() # runner.ytypes.built_in_t.name = [] # runner.ytypes.built_in_t.u_number8 = -1 # runner.ytypes.built_in_t.enum_value = '' # self.crud.create(self.ncc, runner) # with self.assertRaises(YPYDataValidationError): # self.crud.create(self.ncc, runner) def test_int8(self): # Create Runner runner = self._create_runner() runner.ytypes.built_in_t.number8 = 0 self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) @unittest.skip('skip till validation in place') def test_int8_invalid(self): runner = self._create_runner() runner.ytypes.built_in_t.number8 = 8.5 # self.crud.create(self.ncc, runner) self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # OLD # runner1 = ysanity.Runner() # runner1 = self.crud.read(self.ncc, runner1) # # invalid object is not equal # result = is_equal(runner, runner1) # self.assertEqual(result, False) def test_int16(self): runner = self._create_runner() runner.ytypes.built_in_t.number16 = 126 self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) @unittest.skip('skip till validation in place') def test_int16_invalid(self): runner = self._create_runner() runner.ytypes.built_in_t.number16 = {} # self.crud.create(self.ncc, runner) self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # OLD # # Read into Runner2 # runner1 = ysanity.Runner() # runner1 = self.crud.read(self.ncc, runner1) # # Compare runners # result = is_equal(runner, runner1) # self.assertEqual(result, False) def test_int32(self): runner = self._create_runner() runner.ytypes.built_in_t.number32 = 200000 self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) @unittest.skip('skip till validation in place') def test_int32_invalid(self): runner = self._create_runner() runner.ytypes.built_in_t.number32 = [] # self.crud.create(self.ncc, runner) self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # OLD # # Read into Runner2 # runner1 = ysanity.Runner() # runner1 = self.crud.read(self.ncc, runner1) # # Compare runners # result = is_equal(runner, runner1) # self.assertEqual(result, False) def test_bits(self): runner = self._create_runner() runner.ytypes.built_in_t.bits_value['disable-nagle'] = True self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) def test_int64(self): runner = self._create_runner() runner.ytypes.built_in_t.number64 = -9223372036854775808 self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) @unittest.skip('skip till validation in place') def test_int64_invalid(self): runner = self._create_runner() runner.ytypes.built_in_t.number64 = 9223372036854775808 # self.crud.create(self.ncc, runner) self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # OLD # # Read into Runner2 # runner1 = ysanity.Runner() # runner1 = self.crud.read(self.ncc, runner1) # # Compare runners # result = is_equal(runner, runner1) # self.assertEqual(result, False) def test_uint8(self): runner = self._create_runner() runner.ytypes.built_in_t.u_number8 = 0 self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) @unittest.skip('skip till validation in place') def test_uint8_invalid(self): runner = self._create_runner() runner.ytypes.built_in_t.u_number8 = -1 # self.crud.create(self.ncc, runner) self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # OLD # # Read into Runner2 # runner1 = ysanity.Runner() # runner1 = self.crud.read(self.ncc, runner1) # # Compare runners # result = is_equal(runner, runner1) # self.assertEqual(result, False) def test_uint16(self): runner = self._create_runner() runner.ytypes.built_in_t.u_number16 = 65535 self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) @unittest.skip('skip till validation in place') def test_unint16_invalid(self): runner = self._create_runner() runner.ytypes.built_in_t.u_number16 = 'not an uint' # self.crud.create(self.ncc, runner) self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # OLD # # Read into Runner2 # runner1 = ysanity.Runner() # runner1 = self.crud.read(self.ncc, runner1) # # Compare runners # result = is_equal(runner, runner1) # self.assertEqual(result, False) def test_uint32(self): runner = self._create_runner() runner.ytypes.built_in_t.u_number32 = 5927 self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) @unittest.skip('skip till validation in place') def test_unint32_invalid(self): runner = self._create_runner() runner.ytypes.built_in_t.u_number32 = 4294967296 # self.crud.create(self.ncc, runner) self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # OLD # # Read into Runner2 # runner1 = ysanity.Runner() # runner1 = self.crud.read(self.ncc, runner1) # # Compare runners # result = is_equal(runner, runner1) # self.assertEqual(result, False) def test_decimal64(self): runner = self._create_runner() runner.ytypes.built_in_t.deci64 = Decimal64('3.14') self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) @unittest.skip('Revisit implementation') def test_uint64(self): runner = self._create_runner() runner.ytypes.built_in_t.u_number64 = 18446744073709551615 self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) @unittest.skip('skip till validation in place') def test_uint64_invalid(self): runner = self._create_runner() runner.ytypes.built_in_t.u_number64 = 18446744073709551616 # self.crud.create(self.ncc, runner) self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # OLD # # Read into Runner2 # runner1 = ysanity.Runner() # runner1 = self.crud.read(self.ncc, runner1) # # Compare runners # result = is_equal(runner, runner1) # self.assertEqual(result, False) def test_string(self): runner = self._create_runner() runner.ytypes.built_in_t.name = 'name_str' self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) # but invalid input is sent to the device def test_string_invalid(self): runner = self._create_runner() runner.ytypes.built_in_t.name = ['name_str'] self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # self.crud.create(self.ncc, runner) # Read into Runner2 #runner1 = ysanity.Runner() #runner1 = self.crud.read(self.ncc, runner1) # Compare runners #result = is_equal(runner, runner1) #self.assertEqual(result, False) def test_empty(self): runner = self._create_runner() runner.ytypes.built_in_t.emptee = Empty() self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) # explicit DELETE not support at the moment # runner1.ytypes.built_in_t.emptee = DELETE() # self.crud.update(self.ncc, runner1) # runner2 = self.crud.read(self.ncc, self._create_runner()) # self.assertEqual(runner2.ytypes.built_in_t.emptee, None) def test_empty_invalid(self): runner = self._create_runner() runner.ytypes.built_in_t.emptee = 0 # self.crud.create(self.ncc, runner) self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # OLD # Read into Runner2 #runner1 = ysanity.Runner() # self.assertRaises(YPYDataValidationError, # self.crud.create, self.ncc, runner) #runner1 = self.crud.read(self.ncc, runner1) # Compare runners #result = is_equal(runner, runner1) #self.assertEqual(result, False) def test_boolean(self): runner = self._create_runner() runner.ytypes.built_in_t.bool_value = True self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) runner = self._create_runner() runner.ytypes.built_in_t.bool_value = False self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) @unittest.skip('boolean type will convert empty string to false') def test_boolean_invalid(self): runner = self._create_runner() runner.ytypes.built_in_t.bool_value = '' # self.crud.create(self.ncc, runner) self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # OLD # # Read into Runner2 # runner1 = ysanity.Runner() # runner1 = self.crud.read(self.ncc, runner1) # # Compare runners # result = is_equal(runner, runner1) # self.assertEqual(result, True) def test_enum(self): runner = self._create_runner() runner.ytypes.built_in_t.enum_value = YdkEnumTest_Enum.NONE self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) def test_enum_invalid(self): runner = self._create_runner() runner.ytypes.built_in_t.enum_value = 'not an enum' # self.crud.create(self.ncc, runner) self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) # OLD # with self.assertRaises(YPYError) as e: # self.crud.create(self.ncc, runner) # # Read into Runner2 # runner1 = ysanity.Runner() # runner1 = self.crud.read(self.ncc, runner1) # # # Compare runners # result = is_equal(runner, runner1) # self.assertEqual(result, False) def test_union(self): runner = self._create_runner() runner.ytypes.built_in_t.younion = YdkEnumTest_Enum.NONE self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) def test_identityref(self): runner = self._create_runner() runner.ytypes.built_in_t.identity_ref_value = \ ysanity.ChildIdentity_Identity() self.crud.create(self.ncc, runner) # Read into Runner2 runner1 = ysanity.Runner() runner1 = self.crud.read(self.ncc, runner1) # Compare runners result = is_equal(runner, runner1) self.assertEqual(result, True) # Will only test max-elements. If min-elements is set, then this # constraint is required for every READ/UPDATE operation. So it will fail all other cases. def test_leaflist_max_elements(self): runner = self._create_runner() runner.ytypes.built_in_t.llstring = [str(i) for i in range(30)] runner.ytypes.built_in_t.llstring.extend([None for i in range(20)]) self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner) def test_list_max_elements(self): runner = self._create_runner() elems = [] n = 10 for i in range(n): l = ysanity.Runner.OneList.Ldata() l.number = i l.name = str(i) elems.append(l) runner.one_list.ldata.extend(elems) self.assertRaises(YPYDataValidationError, self.crud.create, self.ncc, runner)
parser.add_argument("device", help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.INFO) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() ntp = xr_ip_ntp_cfg.Ntp() # create object # delete configuration on NETCONF device crud.delete(provider, ntp) exit() # End of script
help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.INFO) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() mpls_lsd = xr_mpls_lsd_cfg.MplsLsd() # create object # delete configuration on NETCONF device crud.delete(provider, mpls_lsd) exit() # End of script
help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.INFO) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() syslog = xr_infra_syslog_cfg.Syslog() # create object config_syslog(syslog) # delete configuration on NETCONF device crud.delete(provider, syslog) exit() # End of script
help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.DEBUG) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() locale = xr_infra_infra_locale_cfg.Locale() # create object # delete configuration on NETCONF device crud.delete(provider, locale) provider.close() exit() # End of script
class SanityYang(unittest.TestCase): @classmethod def setUpClass(self): self.ncc = NetconfServiceProvider(address='127.0.0.1', username='******', password='******', protocol='ssh', port=12022) self.crud = CRUDService() @classmethod def tearDownClass(self): self.ncc.close() def setUp(self): runner = ysanity.Runner() self.crud.delete(self.ncc, runner) print '\nIn method', self._testMethodName + ':' def tearDown(self): runner = ysanity.Runner() self.crud.delete(self.ncc, runner) def test_read_on_ref_class(self): r_1 = ysanity.Runner() r_1.one.number, r_1.one.name = 1, 'runner:one:name' self.crud.create(self.ncc, r_1) r_2 = ysanity.Runner() r_2.one = READ() r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) def test_read_on_leaf(self): r_1 = ysanity.Runner() r_1.one.number, r_1.one.name = 1, 'runner:one:name' self.crud.create(self.ncc, r_1) r_2 = ysanity.Runner() r_2.one.number = READ() r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(r_2.one.number, r_1.one.number) # this will also read r_2.one.name, not able to read only one of them r_2 = ysanity.Runner() r_2.one.number = 1 r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(r_2.one.number, r_1.one.number) # no such value, will return empty data r_2 = ysanity.Runner() r_2.one.number = 2 r_2 = self.crud.read(self.ncc, r_2) self.assertNotEqual(r_2.one.number, r_1.one.number) def test_read_on_ref_enum_class(self): from ydk.models.ydktest.ydktest_sanity import YdkEnumTestEnum r_1 = ysanity.Runner.Ytypes.BuiltInT() r_1.enum_value = YdkEnumTestEnum.LOCAL self.crud.create(self.ncc, r_1) r_2 = ysanity.Runner.Ytypes.BuiltInT() r_2.enum_value = READ() r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) r_2 = ysanity.Runner.Ytypes.BuiltInT() r_2.enum_value = YdkEnumTestEnum.LOCAL r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # no such value, nothing returned r_2 = ysanity.Runner.Ytypes.BuiltInT() r_2.enum_value = YdkEnumTestEnum.REMOTE r_2 = self.crud.read(self.ncc, r_2) self.assertNotEqual(is_equal(r_1, r_2), True) def test_read_on_ref_list(self): r_1 = ysanity.Runner.OneList() l_1, l_2 = ysanity.Runner.OneList.Ldata(), ysanity.Runner.OneList.Ldata() l_1.number, l_2.number = 1, 2 r_1.ldata.extend([l_1, l_2]) self.crud.create(self.ncc, r_1) r_2 = ysanity.Runner.OneList() r_2.ldata = READ() r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) def test_read_on_list_with_key(self): r_1 = ysanity.Runner.OneList() l_1, l_2 = ysanity.Runner.OneList.Ldata(), ysanity.Runner.OneList.Ldata() l_1.number, l_2.number = 1, 2 r_1.ldata.extend([l_1, l_2]) self.crud.create(self.ncc, r_1) r_2 = ysanity.Runner.OneList() r_2.ldata.extend([l_1]) r_2 = self.crud.read(self.ncc, r_2) r_3 = ysanity.Runner.OneList() r_3.ldata.extend([l_1]) self.assertEqual(is_equal(r_2, r_3), True) def test_read_on_leaflist(self): r_1 = ysanity.Runner.Ytypes.BuiltInT() r_1.llstring = ['1', '2', '3'] self.crud.create(self.ncc, r_1) r_2 = ysanity.Runner.Ytypes.BuiltInT() r_2.llstring = READ() r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) r_2 = ysanity.Runner.Ytypes.BuiltInT() # invalid input, user should use READ() # or the same data on device r_2.llstring = ['something emaillse'] r_2 = self.crud.read(self.ncc, r_2) self.assertNotEqual(is_equal(r_1, r_2), True) def test_read_on_identity_ref(self): r_1 = ysanity.Runner.Ytypes.BuiltInT() r_1.identity_ref_value = ysanity.ChildIdentity_Identity() self.crud.create(self.ncc, r_1) r_2 = ysanity.Runner.Ytypes.BuiltInT() r_2.identity_ref_value = READ() r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # # read issue for identity_ref with namespace, if using netsim # r_2 = ysanity.Runner.Ytypes.BuiltInT() # r_2.identity_ref_value = ysanity.ChildIdentity_Identity() # r_2 = self.crud.read(self.ncc, r_2) # self.assertEqual(is_equal(r_1, r_2), True) def test_read_only_config(self): r_1 = ysanity.Runner() r_1.one.number, r_1.one.name = 1, 'runner:one:name' self.crud.create(self.ncc, r_1) r_2, r_3 = ysanity.Runner(), ysanity.Runner() r_2.one.number, r_3.one.number = READ(), READ() # only_config=True will change # <get>XML</get> # to # <get-config><source><running/></source>XML</get-config> r_2 = self.crud.read(self.ncc, r_2, only_config=True) r_3 = self.crud.read(self.ncc, r_3) # ysanity only have config data, ok to compare self.assertEqual(is_equal(r_2, r_3), True)
parser.add_argument("device", help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.INFO) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() sr = xr_segment_routing_ms_cfg.Sr() # create object # delete configuration on NETCONF device crud.delete(provider, sr) exit() # End of script
class SanityYang(unittest.TestCase): PROVIDER_TYPE = "non-native" @classmethod def setUpClass(self): if SanityYang.PROVIDER_TYPE == "native": self.ncc = NativeNetconfServiceProvider(address='127.0.0.1', username='******', password='******', protocol='ssh', port=12022) else: self.ncc = NetconfServiceProvider(address='127.0.0.1', username='******', password='******', protocol='ssh', port=12022) self.crud = CRUDService() @classmethod def tearDownClass(self): self.ncc.close() def setUp(self): runner = ysanity.Runner() self.crud.delete(self.ncc, runner) def tearDown(self): runner = ysanity.Runner() self.crud.delete(self.ncc, runner) def test_one_level_pos(self): # READ r_1, r_2 = ysanity.Runner(), ysanity.Runner() r_1.one.number, r_1.one.name = 1, 'runner:one:name' self.crud.create(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() r_1.one.number, r_1.one.name = 10, 'runner/one/name' self.crud.update(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # DELETE r_1 = ysanity.Runner() self.crud.delete(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_1) self.assertEqual(r_2._has_data(), False) def test_two_level_pos(self): # READ r_1 = ysanity.Runner() r_1.two.number, r_1.two.name, r_1.two.sub1.number = 2, 'runner:two:name', 21 self.crud.create(self.ncc, r_1) r_2 = ysanity.Runner() r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() r_1.two.number, r_1.two.name, r_1.two.sub1.number = 20, 'runner/two/name', 210 self.crud.update(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # DELETE r_1 = ysanity.Runner() self.crud.delete(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_1) self.assertEqual(r_2._has_data(), False) def test_three_level_pos(self): # READ r_1 = ysanity.Runner() r_1.three.number, r_1.three.name, \ r_1.three.sub1.number, r_1.three.sub1.sub2.number = 3, 'runner:three:name', 31, 311 self.crud.create(self.ncc, r_1) r_2 = ysanity.Runner() r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() r_1.three.number, r_1.three.name, \ r_1.three.sub1.number, r_1.three.sub1.sub2.number = 30, 'runner/three/name', 310, 3110 self.crud.update(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # DELETE r_1 = ysanity.Runner() self.crud.delete(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_1) self.assertEqual(r_2._has_data(), False) def test_onelist_neg_dupkey(self): # netsim/enxr not complaining r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1, e_2 = ysanity.Runner.OneList.Ldata(), ysanity.Runner.OneList.Ldata() e_1.number = 1 e_2.name = 'foo' e_2.number = 1 e_2.name = 'bar' r_1.one_list.ldata.extend([e_1, e_2]) self.crud.create(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) def test_onelist_neg_update_key_nonexist(self): # will create a nonexist elem # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1, e_2 = ysanity.Runner.OneList.Ldata(), ysanity.Runner.OneList.Ldata() e_1.number = 1 e_1.name = 'runner:onelist:ldata['+str(e_1.number)+']:name' r_1.one_list.ldata.extend([e_1]) self.crud.create(self.ncc, r_1) r_1.one_list.ldata[0].number = 2 r_1.one_list.ldata[0].name = '2' # assuming update on nonexist key will raise Exception with self.assertRaises(Exception): self.crud.update(self.ncc, r_1.one_list.ldata[0]) def test_onelsit_pos(self): # READ r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1, e_2 = ysanity.Runner.OneList.Ldata(), ysanity.Runner.OneList.Ldata() e_1.number = 1 e_1.name = 'runner:onelist:ldata['+str(e_1.number)+']:name' e_2.number = 2 e_2.name = 'runner:onelist:ldata['+str(e_2.number)+']:name' r_1.one_list.ldata.extend([e_1, e_2]) self.crud.create(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1, e_2 = ysanity.Runner.OneList.Ldata(), ysanity.Runner.OneList.Ldata() e_1.number = 1 e_1.name = 'runner:onelist:ldata['+str(e_1.number)+']:name' e_2.number = 2 e_2.name = 'runner:onelist:ldata['+str(e_2.number)+']:name' r_1.one_list.ldata.extend([e_1, e_2]) self.crud.update(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # DELETE r_1 = ysanity.Runner() self.crud.delete(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_1) self.assertEqual(r_2._has_data(), False) def test_twolist_pos(self): # READ r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1, e_2 = ysanity.Runner.TwoList.Ldata(), ysanity.Runner.TwoList.Ldata() e_11, e_12 = ysanity.Runner.TwoList.Ldata.Subl1(), ysanity.Runner.TwoList.Ldata.Subl1() e_1.number = 21 e_1.name = 'runner:twolist:ldata['+str(e_1.number)+']:name' e_11.number = 211 e_11.name = 'runner:twolist:ldata['+str(e_1.number)+']:subl1['+str(e_11.number)+']:name' e_12.number = 212 e_12.name = 'runner:twolist:ldata['+str(e_1.number)+']:subl1['+str(e_12.number)+']:name' e_1.subl1.extend([e_11, e_12]) e_21, e_22 = ysanity.Runner.TwoList.Ldata.Subl1(), ysanity.Runner.TwoList.Ldata.Subl1() e_2.number = 22 e_2.name = 'runner:twolist:ldata['+str(e_2.number)+']:name' e_21.number = 221 e_21.name = 'runner:twolist:ldata['+str(e_2.number)+']:subl1['+str(e_21.number)+']:name' e_22.number = 222 e_22.name = 'runner:twolist:ldata['+str(e_2.number)+']:subl1['+str(e_22.number)+']:name' e_2.subl1.extend([e_21, e_22]) r_1.two_list.ldata.extend([e_1, e_2]) self.crud.create(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1, e_2 = ysanity.Runner.TwoList.Ldata(), ysanity.Runner.TwoList.Ldata() e_11, e_12 = ysanity.Runner.TwoList.Ldata.Subl1(), ysanity.Runner.TwoList.Ldata.Subl1() e_1.number = 21 e_1.name = 'runner/twolist/ldata['+str(e_1.number)+']/name' e_11.number = 211 e_11.name = 'runner/twolist/ldata['+str(e_1.number)+']/subl1['+str(e_11.number)+']/name' e_12.number = 212 e_12.name = 'runner/twolist/ldata['+str(e_1.number)+']/subl1['+str(e_12.number)+']/name' e_1.subl1.extend([e_11, e_12]) e_21, e_22 = ysanity.Runner.TwoList.Ldata.Subl1(), ysanity.Runner.TwoList.Ldata.Subl1() e_2.number = 22 e_2.name = 'runner/twolist/ldata['+str(e_2.number)+']/name' e_21.number = 221 e_21.name = 'runner/twolist/ldata['+str(e_2.number)+']/subl1['+str(e_21.number)+']/name' e_22.number = 222 e_22.name = 'runner/twolist/ldata['+str(e_2.number)+']/subl1['+str(e_22.number)+']/name' e_2.subl1.extend([e_21, e_22]) r_1.two_list.ldata.extend([e_1, e_2]) self.crud.update(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # DELETE r_1 = ysanity.Runner() self.crud.delete(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_1) self.assertEqual(r_2._has_data(), False) def test_threelist_pos(self): # READ r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1 = ysanity.Runner.ThreeList.Ldata() e_1.number = 31 e_1.name = 'runner:threelist:ldata['+str(e_1.number)+']:name' e_2 = ysanity.Runner.ThreeList.Ldata() e_2.number = 32 e_2.name = 'runner:threelist:ldata['+str(e_2.number)+']:name' e_11 = ysanity.Runner.ThreeList.Ldata.Subl1() e_12 = ysanity.Runner.ThreeList.Ldata.Subl1() e_11.number = 311 e_11.name = 'runner:threelist:ldata['+str(e_1.number)+']:subl1['+str(e_11.number)+']:name' e_12.number = 312 e_12.name = 'runner:threelist:ldata['+str(e_1.number)+']:subl1['+str(e_12.number)+']:name' e_111 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_112 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_111.number = 3111 e_111.name = 'runner:threelist:ldata['+str(e_1.number)+']:subl1['+str(e_11.number)+']:subsubl1['+str(e_111.number)+']:name' e_112.number = 3112 e_112.name = 'runner:threelist:ldata['+str(e_1.number)+']:subl1['+str(e_11.number)+']:subsubl1['+str(e_112.number)+']:name' e_11.sub_subl1.extend([e_111, e_112]) e_121 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_122 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_121.number = 3121 e_121.name = 'runner:threelist:ldata['+str(e_1.number)+']:subl1['+str(e_12.number)+']:subsubl1['+str(e_121.number)+']:name' e_122.number = 3122 e_121.name = 'runner:threelist:ldata['+str(e_1.number)+']:subl1['+str(e_12.number)+']:subsubl1['+str(e_122.number)+']:name' e_12.sub_subl1.extend([e_121, e_122]) e_1.subl1.extend([e_11, e_12]) e_21 = ysanity.Runner.ThreeList.Ldata.Subl1() e_22 = ysanity.Runner.ThreeList.Ldata.Subl1() e_21.number = 321 e_21.name = 'runner:threelist:ldata['+str(e_2.number)+']:subl1['+str(e_21.number)+']:name' e_22.number = 322 e_22.name = 'runner:threelist:ldata['+str(e_2.number)+']:subl1['+str(e_22.number)+']:name' e_211 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_212 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_211.number = 3211 e_211.name = 'runner:threelist:ldata['+str(e_2.number)+']:subl1['+str(e_21.number)+']:subsubl1['+str(e_211.number)+']:name' e_212.number = 3212 e_212.name = 'runner:threelist:ldata['+str(e_2.number)+']:subl1['+str(e_21.number)+']:subsubl1['+str(e_212.number)+']:name' e_21.sub_subl1.extend([e_211, e_212]) e_221 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_222 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_221.number = 3221 e_221.name = 'runner:threelist:ldata['+str(e_2.number)+']:subl1['+str(e_22.number)+']:subsubl1['+str(e_221.number)+']:name' e_222.number = 3222 e_222.name = 'runner:threelist:ldata['+str(e_2.number)+']:subl1['+str(e_22.number)+']:subsubl1['+str(e_222.number)+']:name' e_22.sub_subl1.extend([e_221, e_222]) e_2.subl1.extend([e_21, e_22]) r_1.three_list.ldata.extend([e_1, e_2]) self.crud.create(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1 = ysanity.Runner.ThreeList.Ldata() e_1.number = 31 e_1.name = 'runner/threelist/ldata['+str(e_1.number)+']/name' e_2 = ysanity.Runner.ThreeList.Ldata() e_2.number = 32 e_2.name = 'runner/threelist/ldata['+str(e_2.number)+']/name' e_11 = ysanity.Runner.ThreeList.Ldata.Subl1() e_12 = ysanity.Runner.ThreeList.Ldata.Subl1() e_11.number = 311 e_11.name = 'runner/threelistldata['+str(e_1.number)+']/subl1['+str(e_11.number)+']/name' e_12.number = 312 e_12.name = 'runner/threelist/ldata['+str(e_1.number)+']/subl1['+str(e_12.number)+']/name' e_111 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_112 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_111.number = 3111 e_111.name = 'runner/threelist/ldata['+str(e_1.number)+']/subl1['+str(e_11.number)+']/subsubl1['+str(e_111.number)+']/name' e_112.number = 3112 e_112.name = 'runner/threelist/ldata['+str(e_1.number)+']/subl1['+str(e_11.number)+']/subsubl1['+str(e_112.number)+']/name' e_11.sub_subl1.extend([e_111, e_112]) e_121 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_122 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_121.number = 3121 e_121.name = 'runner/threelist/ldata['+str(e_1.number)+']/subl1['+str(e_12.number)+']/subsubl1['+str(e_121.number)+']/name' e_122.number = 3122 e_121.name = 'runner/threelist/ldata['+str(e_1.number)+']/subl1['+str(e_12.number)+']/subsubl1['+str(e_122.number)+']/name' e_12.sub_subl1.extend([e_121, e_122]) e_1.subl1.extend([e_11, e_12]) e_21 = ysanity.Runner.ThreeList.Ldata.Subl1() e_22 = ysanity.Runner.ThreeList.Ldata.Subl1() e_21.number = 321 e_21.name = 'runner/threelist/ldata['+str(e_2.number)+']/subl1['+str(e_21.number)+']/name' e_22.number = 322 e_22.name = 'runner/threelist/ldata['+str(e_2.number)+']/subl1['+str(e_22.number)+']/name' e_211 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_212 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_211.number = 3211 e_211.name = 'runner/threelist/ldata['+str(e_2.number)+']/subl1['+str(e_21.number)+']/subsubl1['+str(e_211.number)+']/name' e_212.number = 3212 e_212.name = 'runner/threelist/ldata['+str(e_2.number)+']/subl1['+str(e_21.number)+']/subsubl1['+str(e_212.number)+']/name' e_21.sub_subl1.extend([e_211, e_212]) e_221 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_222 = ysanity.Runner.ThreeList.Ldata.Subl1.SubSubl1() e_221.number = 3221 e_221.name = 'runner/threelist/ldata['+str(e_2.number)+']/subl1['+str(e_22.number)+']/subsubl1['+str(e_221.number)+']/name' e_222.number = 3222 e_222.name = 'runner/threelist/ldata['+str(e_2.number)+']/subl1['+str(e_22.number)+']/subsubl1['+str(e_222.number)+']/name' e_22.sub_subl1.extend([e_221, e_222]) e_2.subl1.extend([e_21, e_22]) r_1.three_list.ldata.extend([e_1, e_2]) self.crud.update(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # DELETE r_1 = ysanity.Runner() self.crud.delete(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_1) self.assertEqual(r_2._has_data(), False) def test_InbtwList_pos(self): # READ r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1 = ysanity.Runner.InbtwList.Ldata() e_2 = ysanity.Runner.InbtwList.Ldata() e_1.number = 11 e_1.name = 'runner:inbtwlist:['+str(e_1.number)+']:name' e_1.subc.number = 111 e_1.subc.name = 'runner:inbtwlist:['+str(e_1.number)+']:subc:name' e_2.number = 12 e_2.name = 'runner:inbtwlist:['+str(e_2.number)+']:name' e_2.subc.number = 121 e_2.subc.name = 'runner:inbtwlist:['+str(e_2.number)+']:name' e_11 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_11.number = 111 e_11.name = 'runner:inbtwlist:['+str(e_1.number)+']:subc:subcsubl1['+str(e_11.number)+']:name' e_12 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_12.number = 112 e_12.name = 'runner:inbtwlist:['+str(e_1.number)+']:subc:subcsubl1['+str(e_12.number)+']:name' e_1.subc.subc_subl1.extend([e_11, e_12]) e_21 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_21.number = 121 e_21.name = 'runner:inbtwlist:['+str(e_2.number)+']:subc:subcsubl1['+str(e_21.number)+']:name' e_22 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_22.number = 122 e_22.name = 'runner:inbtwlist:['+str(e_2.number)+']:subc:subcsubl1['+str(e_22.number)+']:name' e_2.subc.subc_subl1.extend([e_21, e_22]) r_1.inbtw_list.ldata.extend([e_1, e_2]) self.crud.create(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1 = ysanity.Runner.InbtwList.Ldata() e_2 = ysanity.Runner.InbtwList.Ldata() e_1.number = 11 e_1.name = 'runner/inbtwlist/['+str(e_1.number)+']/name' e_1.subc.number = 111 e_1.subc.name = 'runnerinbtwlist/['+str(e_1.number)+']/subc/name' e_2.number = 12 e_2.name = 'runner/inbtwlist/['+str(e_2.number)+']/name' e_2.subc.number = 121 e_2.subc.name = 'runner/inbtwlist/['+str(e_2.number)+']/name' e_11 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_11.number = 111 e_11.name = 'runner/inbtwlist/['+str(e_1.number)+']/subc/subcsubl1['+str(e_11.number)+']/name' e_12 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_12.number = 112 e_12.name = 'runner/inbtwlist/['+str(e_1.number)+']/subc/subcsubl1['+str(e_12.number)+']/name' e_1.subc.subc_subl1.extend([e_11, e_12]) e_21 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_21.number = 121 e_21.name = 'runner/inbtwlist/['+str(e_2.number)+']/subc/subcsubl1['+str(e_21.number)+']/name' e_22 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_22.number = 122 e_22.name = 'runner/inbtwlist/['+str(e_2.number)+']/subc/subcsubl1['+str(e_22.number)+']/name' e_2.subc.subc_subl1.extend([e_21, e_22]) r_1.inbtw_list.ldata.extend([e_1, e_2]) self.crud.update(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # DELETE r_1 = ysanity.Runner() self.crud.delete(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_1) self.assertEqual(r_2._has_data(), False) def test_leafref_simple_pos(self): # change ref and original data together # READ r_1, r_2 = ysanity.Runner(), ysanity.Runner() r_1.ytypes.built_in_t.number8 = 100 r_1.ytypes.built_in_t.leaf_ref = r_1.ytypes.built_in_t.number8 self.crud.create(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() r_1.ytypes.built_in_t.number8 = 110 r_1.ytypes.built_in_t.leaf_ref = r_1.ytypes.built_in_t.number8 self.crud.update(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # DELETE r_1 = ysanity.Runner() self.crud.delete(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_1) self.assertEqual(r_2._has_data(), False) def test_leafref_pos(self): # rfc: refer to leaf # 1.already exists # 2.has default value # create leafs will be referred to # CREATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() r_1.one.name = 'runner:one:name' r_1.two.sub1.number = 21 r_1.three.sub1.sub2.number = 311 e_1 = ysanity.Runner.InbtwList.Ldata() e_2 = ysanity.Runner.InbtwList.Ldata() e_1.number = 11 e_2.number = 21 e_1.name = 'runner:inbtwlist['+str(e_1.number)+']:name' e_2.name = 'runner:inbtwlist['+str(e_2.number)+']:name' e_1.subc.number = 111 e_2.subc.number = 121 e_1.subc.name = 'runner:inbtwlist['+str(e_1.number)+']:subc:name' e_2.subc.name = 'runner:inbtwlist['+str(e_2.number)+']:subc:name' e_11 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_12 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_11.number = 111 e_12.number = 112 e_11.name = 'runner:inbtwlist['+str(e_1.number)+']:subc:subcsubl1['+str(e_11.number)+']:name' e_12.name = 'runner:inbtwlist['+str(e_1.number)+']:subc:subcsubl1['+str(e_12.number)+']:name' e_1.subc.subc_subl1.extend([e_11, e_12]) e_21 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_22 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_21.number = 311 e_22.number = 122 e_21.name = 'runner:inbtwlist['+str(e_2.number)+']:subc:subcsubl1['+str(e_21.number)+']:name' e_22.name = 'runner:inbtwlist['+str(e_2.number)+']:subc:subcsubl1['+str(e_22.number)+']:name' e_2.subc.subc_subl1.extend([e_21, e_22]) r_1.inbtw_list.ldata.extend([e_1, e_2]) r_1.leaf_ref.ref_one_name = r_1.one.name r_1.leaf_ref.ref_two_sub1_number = r_1.two.sub1.number r_1.leaf_ref.ref_three_sub1_sub2_number = r_1.three.sub1.sub2.number r_1.leaf_ref.ref_inbtw = e_21.name r_1.leaf_ref.one.name = 'runner:leaf-ref:one:name' r_1.leaf_ref.one.two.self_ref_one_name = r_1.leaf_ref.ref_one_name self.crud.create(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(r_1.one.name, r_1.leaf_ref.ref_one_name) self.assertEqual(r_1.two.sub1.number, r_1.leaf_ref.ref_two_sub1_number) self.assertEqual(r_1.three.sub1.sub2.number, r_1.leaf_ref.ref_three_sub1_sub2_number) self.assertEqual(r_1.inbtw_list.ldata[1].subc.subc_subl1[0].name, r_1.leaf_ref.ref_inbtw) self.assertEqual(r_1.leaf_ref.ref_one_name, r_1.leaf_ref.one.two.self_ref_one_name) # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() r_1.one.name = 'runner/one/name' r_1.two.sub1.number = 21 r_1.three.sub1.sub2.number = 311 e_1 = ysanity.Runner.InbtwList.Ldata() e_2 = ysanity.Runner.InbtwList.Ldata() e_1.number = 11 e_2.number = 21 e_1.name = 'runner/inbtwlist['+str(e_1.number)+']/name' e_2.name = 'runner/inbtwlist['+str(e_2.number)+']/name' e_1.subc.number = 111 e_2.subc.number = 121 e_1.subc.name = 'runner/inbtwlist['+str(e_1.number)+']/subc/name' e_2.subc.name = 'runner/inbtwlist['+str(e_2.number)+']/subc/name' e_11 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_12 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_11.number = 111 e_12.number = 112 e_11.name = 'runner/inbtwlist['+str(e_1.number)+']/subc/subcsubl1['+str(e_11.number)+']/name' e_12.name = 'runner/inbtwlist['+str(e_1.number)+']/subc/subcsubl1['+str(e_12.number)+']/name' e_1.subc.subc_subl1.extend([e_11, e_12]) e_21 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_22 = ysanity.Runner.InbtwList.Ldata.Subc.SubcSubl1() e_21.number = 311 e_22.number = 122 e_21.name = 'runner/inbtwlist['+str(e_2.number)+']/subc/subcsubl1['+str(e_21.number)+']/name' e_22.name = 'runner/inbtwlist['+str(e_2.number)+']/subc/subcsubl1['+str(e_22.number)+']/name' e_2.subc.subc_subl1.extend([e_21, e_22]) r_1.inbtw_list.ldata.extend([e_1, e_2]) r_1.leaf_ref.ref_one_name = r_1.one.name r_1.leaf_ref.ref_two_sub1_number = r_1.two.sub1.number r_1.leaf_ref.ref_three_sub1_sub2_number = r_1.three.sub1.sub2.number r_1.leaf_ref.ref_inbtw = e_21.name r_1.leaf_ref.one.name = 'runner/leaf-ref/one/name' r_1.leaf_ref.one.two.self_ref_one_name = r_1.leaf_ref.ref_one_name self.crud.update(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(r_1.one.name, r_1.leaf_ref.ref_one_name) self.assertEqual(r_1.two.sub1.number, r_1.leaf_ref.ref_two_sub1_number) self.assertEqual(r_1.three.sub1.sub2.number, r_1.leaf_ref.ref_three_sub1_sub2_number) self.assertEqual(r_1.inbtw_list.ldata[1].subc.subc_subl1[0].name, r_1.leaf_ref.ref_inbtw) self.assertEqual(r_1.leaf_ref.ref_one_name, r_1.leaf_ref.one.two.self_ref_one_name) # DELETE r_1 = ysanity.Runner() self.crud.delete(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_1) self.assertEqual(r_2._has_data(), False) def test_aug_one_pos(self): # CREATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() r_1.one.one_aug.number = 1 r_1.one.one_aug.name =r_1.one.one_aug._common_path self.crud.create(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() r_1.one.one_aug.number = 10 r_1.one.one_aug.name =r_1.one.one_aug._common_path.replace(':', '/') self.crud.update(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # DELETE r_1 = ysanity.Runner() self.crud.delete(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_1) self.assertEqual(r_2._has_data(), False) def test_aug_onelist_pos(self): # CREATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1 = ysanity.Runner.OneList.OneAugList.Ldata() e_2 = ysanity.Runner.OneList.OneAugList.Ldata() e_1.number = 1 e_1.name = e_1._common_path e_2.number = 2 e_2.name = e_2._common_path r_1.one_list.one_aug_list.ldata.extend([e_1, e_2]) r_1.one_list.one_aug_list.enabled = True self.crud.create(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # UPDATE r_1, r_2 = ysanity.Runner(), ysanity.Runner() e_1 = ysanity.Runner.OneList.OneAugList.Ldata() e_2 = ysanity.Runner.OneList.OneAugList.Ldata() e_1.number = 1 e_1.name = e_1._common_path.replace(':', '/') e_2.number = 2 e_2.name = e_2._common_path.replace(':', '/') r_1.one_list.one_aug_list.ldata.extend([e_1, e_2]) r_1.one_list.one_aug_list.enabled = True self.crud.update(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # DELETE r_1 = ysanity.Runner() self.crud.delete(self.ncc, r_1) r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(r_2._has_data(), False) def test_parent_empty(self): runner = ysanity.Runner() runner.ytypes.enabled = Empty() runner.ytypes.built_in_t.emptee = Empty() self.crud.create(self.ncc, runner) runner_read = self.crud.read(self.ncc, ysanity.Runner()) self.assertEqual(is_equal(runner_read, runner), True)
help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.INFO) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() aaa = xr_aaa_lib_cfg.Aaa() # create object # delete configuration on NETCONF device crud.delete(provider, aaa) exit() # End of script
class SanityYang(unittest.TestCase): @classmethod def setUpClass(self): self.ncc = NetconfServiceProvider(address='127.0.0.1', username='******', password='******', protocol='ssh', port=12022) self.crud = CRUDService() a = self.getInitEntity() self.crud.delete(self.ncc, a) self.crud.create(self.ncc, a) @classmethod def tearDownClass(self): self.ncc.close() def setUp(self): print '\nIn method', self._testMethodName + ':' def tearDown(self): pass @classmethod def getInitEntity(self): """ set and return entity with XML: <a> <a1>some value</a1> <a2>value of a2</a2> <a3>value of a3</a3> <b> <b1>some value</b1> <b2>value of b2</b2> <b3>value of b3</b3> <c/> <d> <d1>some value d1</d1> <d2>value of d2</d2> <d3>value of d3</d3> <e> <e1>some value e1</e1> <e2>value of e2</e2> </e> </d> </b> <lst> <number>1</number> <value>one</value> </lst> <lst> <number>2</number> <value>two</value> </lst> <lst> <number>3</number> <value>three</value> </lst> </a> """ a = ysanity.A() a.a1, a.a2, a.a3 = "some value", "value of a2", "value of a3" a.b.b1, a.b.b2, a.b.b3 = "some value", "value of b2", "value of b3" a.b.c = a.b.C() a.b.d.d1, a.b.d.d2, a.b.d.d3 = "some value d1", "value of d2", "value of d3" a.b.d.e.e1, a.b.d.e.e2 = "some value e1", "value of e2" l1, l2, l3 = a.Lst(), a.Lst(), a.Lst() l1.number, l1.value = 1, "one" l2.number, l2.value = 2, "two" l3.number, l3.value = 3, "three" a.lst.extend([l1,l2,l3]) return a def test_CASE1(self): a = ysanity.A() a = self.crud.read(self.ncc, a) # the whole thing _a = self.getInitEntity() self.assertEqual(is_equal(a, _a), True) def test_CASE2(self): a = ysanity.A() a.a1 = "some value" a = self.crud.read(self.ncc, a) # the whole thing _a = self.getInitEntity() self.assertEqual(is_equal(a, _a), True) def test_CASE3(self): a = ysanity.A() a.a1 = READ() a = self.crud.read(self.ncc, a) _a = ysanity.A() _a.a1 = "some value" self.assertEqual(is_equal(a, _a), True) def test_CASE4(self): a = ysanity.A() a.b.b1 = "some value" a = self.crud.read(self.ncc, a) _a = self.getInitEntity() _a.lst, _a.a1, _a.a2, _a.a3 = YList(), None, None, None self.assertEqual(is_equal(a, _a), True) def test_CASE5(self): a = ysanity.A() e = a.b.d.e e.e1 = "some value e1" a = self.crud.read(self.ncc, a) _a = ysanity.A() _a.b.d.e.e1, _a.b.d.e.e2 = "some value e1", "value of e2" self.assertEqual(is_equal(a, _a), True) def test_CASE6(self): a = ysanity.A() a.b.c = a.b.C() a = self.crud.read(self.ncc, a) _a = ysanity.A() _a.b.c = _a.b.C() self.assertEqual(is_equal(a, _a), True) def test_CASE7(self): a = ysanity.A() l1, l2 = a.Lst(), a.Lst() l1.number, l2.number = 1, 2 a.lst.extend([l1, l2]) a = self.crud.read(self.ncc, a) _a = ysanity.A() l1.value, l2.value = "one", "two" _a.lst.extend([l1, l2]) self.assertEqual(is_equal(a, _a), True)
device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.DEBUG) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() ipv4_acl_and_prefix_list = xr_ipv4_acl_cfg.Ipv4AclAndPrefixList( ) # create object # delete configuration on NETCONF device crud.delete(provider, ipv4_acl_and_prefix_list) provider.close() exit() # End of script
help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.INFO) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() syslog_service = xr_infra_syslog_cfg.SyslogService() # create object # delete configuration on NETCONF device crud.delete(provider, syslog_service) exit() # End of script
parser.add_argument("device", help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.INFO) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() bgp = oc_bgp.Bgp() # create object # delete configuration on NETCONF device crud.delete(provider, bgp) exit() # End of script
help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.DEBUG) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() lldp = xr_ethernet_lldp_cfg.Lldp() # create object # delete configuration on NETCONF device crud.delete(provider, lldp) provider.close() exit() # End of script
parser.add_argument("device", help="NETCONF device (ssh://user:password@host:port)") args = parser.parse_args() device = urlparse(args.device) # log debug messages if verbose argument specified if args.verbose: logger = logging.getLogger("ydk") logger.setLevel(logging.INFO) handler = logging.StreamHandler() formatter = logging.Formatter(("%(asctime)s - %(name)s - " "%(levelname)s - %(message)s")) handler.setFormatter(formatter) logger.addHandler(handler) # create NETCONF provider provider = NetconfServiceProvider(address=device.hostname, port=device.port, username=device.username, password=device.password, protocol=device.scheme) # create CRUD service crud = CRUDService() ospf = xr_ipv4_ospf_cfg.Ospf() # create object # delete configuration on NETCONF device crud.delete(provider, ospf) exit() # End of script