def test_create_gre_tunnel_on_demand(self): enable_logging(logging.ERROR) from ydk.providers import NetconfServiceProvider from ydk.services import CRUDService try: from ydk.models.ydktest.ydktest_sanity import Native except ImportError: # bundle is generated with 'one_class_per_module' flag from ydk.models.ydktest.ydktest_sanity.native.native import Native provider = NetconfServiceProvider( "127.0.0.1", "admin", "admin", 12022) native = Native() tunnel = native.interface.Tunnel() tunnel.name = 521 tunnel.description = "test tunnel" # Configure protocol-over-protocol tunneling tunnel.tunnel.source = "1.2.3.4" tunnel.tunnel.destination = "4.3.2.1" tunnel.tunnel.bandwidth.receive = 100000 tunnel.tunnel.bandwidth.transmit = 100000 native.interface.tunnel.append(tunnel) crud_service = CRUDService(); crud_service.create(provider, native)
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)
class SanityTest(unittest.TestCase): @classmethod def setUpClass(self): # Need to keep a local reference for repo to keep it alive, # as the first argument for OpenDaylightServiceProvider in libydk # is a reference. repo_path = os.path.dirname(__file__) repo_path = os.path.join(repo_path, '..', '..', '..', 'cpp', 'core', 'tests', 'models') self.repo = Repository(repo_path) self.odl = OpenDaylightServiceProvider(self.repo, 'localhost', 'admin', 'admin', 12306, EncodingFormat.JSON) self.crud = CRUDService() def test_read_ODL(self): bgp_filter = oc_bgp.Bgp() node_provider = self.odl.get_node_provider('xr') bgp_read = self.crud.read_config(node_provider, bgp_filter) self.assertEqual(bgp_read.global_.config.as_, 65172) self.assertEqual(bgp_read.global_.config.router_id, '1.2.3.4') def test_create_ODL(self): bgp = oc_bgp.Bgp() bgp.global_.config.as_ = 65172 bgp.global_.config.router_id = '1.2.3.4' neighbor = oc_bgp.Bgp.Neighbors.Neighbor() neighbor.neighbor_address = '6.7.8.9' neighbor.config.neighbor_address = '6.7.8.9' neighbor.config.peer_as = 65001 neighbor.config.local_as = 65001 neighbor.config.peer_group = 'IBGP' bgp.neighbors.neighbor.append(neighbor) peer_group = oc_bgp.Bgp.PeerGroups.PeerGroup() peer_group.peer_group_name = 'IBGP' peer_group.config.peer_group_name = 'IBGP' peer_group.config.description = 'test description' peer_group.config.peer_as = 65001 peer_group.config.local_as = 65001 bgp.peer_groups.peer_group.append(peer_group) node_provider = self.odl.get_node_provider('xr') self.crud.create(node_provider, bgp) bgp_read = self.crud.read_config(node_provider, oc_bgp.Bgp()) self.assertEqual(bgp_read, bgp)
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() telemetry_model_driven = xr_telemetry_model_driven_cfg.TelemetryModelDriven() # create object config_telemetry_model_driven(telemetry_model_driven) # add object configuration # create configuration on NETCONF device crud.create(provider, telemetry_model_driven) exit() # End of script
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 config_sr(sr) # add object configuration # create configuration on NETCONF device crud.create(provider, sr) exit() # End of script
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() native = xe_native.Native() # create object config_native(native) # add object configuration # create configuration on NETCONF device crud.create(provider, native) #provider.close() exit() # End of script
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_oam = xr_mpls_oam_cfg.MplsOam() # create object config_mpls_oam(mpls_oam) # add object configuration # create configuration on NETCONF device crud.create(provider, mpls_oam) exit() # End of script
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() clock = xr_infra_infra_clock_linux_cfg.Clock() # create object config_clock(clock) # add object configuration # create configuration on NETCONF device crud.create(provider, clock) exit() # End of script
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() ospfv3 = xr_ipv6_ospfv3_cfg.Ospfv3() # create object config_ospfv3(ospfv3) # add object configuration # create configuration on NETCONF device crud.create(provider, ospfv3) 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.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 config object config_locale(locale) # add object configuration crud.create(provider, locale) # create object on NETCONF device provider.close() exit() # End of script
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 config_ip_domain(ip_domain) # add object configuration # create configuration on NETCONF device crud.create(provider, ip_domain) exit() # End of script
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() native = xe_native.Native() # create object config_native(native) # add object configuration # create configuration on NETCONF device crud.create(provider, native) exit() # End of script
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() keychains = xr_lib_keychain_cfg.Keychains() # create object config_keychains(keychains) # add object configuration # create configuration on NETCONF device crud.create(provider, keychains) exit() # End of script
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() bgp = xr_ipv4_bgp_cfg.Bgp() # create object config_bgp(bgp) # add object configuration # create configuration on NETCONF device crud.create(provider, bgp) provider.close() exit() # End of script
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 config_syslog_service(syslog_service) # add object configuration # create configuration on NETCONF device crud.create(provider, syslog_service) exit() # End of script
# 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() telemetry_model_driven = xr_telemetry_model_driven_cfg.TelemetryModelDriven( ) # create object config_telemetry_model_driven( telemetry_model_driven) # add object configuration # create configuration on NETCONF device crud.create(provider, telemetry_model_driven) provider.close() 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)
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() # config device with entity a 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): pass def tearDown(self): pass @classmethod def getInitEntity(self): """ Set and return entity with following 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/> <f> <f1>f</f1> </f> <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" # config presence container a.b.f = a.b.F() a.b.f.f1 = 'f' a.b.c = a.b.C() a.b.d.d1 = "some value d1" a.b.d.d2 = "value of d2" a.b.d.d3 = "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): """Use crud read with top level entity returns all data.""" a = ysanity.A() a_read = self.crud.read(self.ncc, a) preconfig_a = self.getInitEntity() self.assertEqual(is_equal(a_read, preconfig_a), True) def test_CASE2(self): """ According to https://tools.ietf.org/html/rfc6241#section-6.2.5, `a.a1` is a content match node. Uses crud read on `a` returns all data. """ a = ysanity.A() a.a1 = "some value" a_read = self.crud.read(self.ncc, a) preconfig_a = self.getInitEntity() self.assertEqual(is_equal(a_read, preconfig_a), True) def test_CASE3(self): """Assign a READ object to `a.a1` should only return data on this leaf.""" a = ysanity.A() a.a1 = READ() a_read = self.crud.read(self.ncc, a) preconfig_a = ysanity.A() preconfig_a.a1 = "some value" self.assertEqual(is_equal(a_read, preconfig_a), True) def test_CASE4(self): """Now `a.b.b1` serves as a content match node.""" a = ysanity.A() a.b.b1 = "some value" a_read = self.crud.read(self.ncc, a) preconfig_a = self.getInitEntity() del preconfig_a.lst[:] preconfig_a.a1 = None preconfig_a.a2 = None preconfig_a.a3 = None self.assertEqual(is_equal(a_read, preconfig_a), True) def test_CASE5(self): """Now `a.b.d.e` serves as a content match node.""" a = ysanity.A() e = a.b.d.e e.e1 = "some value e1" a_read = self.crud.read(self.ncc, a) preconfig_a = ysanity.A() preconfig_a.b.d.e.e1 = "some value e1" preconfig_a.b.d.e.e2 = "value of e2" self.assertEqual(is_equal(a_read, preconfig_a), True) def test_CASE6(self): """Assign `a.b.c` serves as an empty presence container.""" a = ysanity.A() a.b.c = a.b.C() a_read = self.crud.read(self.ncc, a) preconfig_a = ysanity.A() preconfig_a.b.c = preconfig_a.b.C() self.assertEqual(is_equal(a_read, preconfig_a), True) def test_CASE7(self): """`item1.number` and `item2.number` serves as content match nodes.""" a = ysanity.A() item1, item2 = a.Lst(), a.Lst() item1.number, item2.number = 1, 2 a.lst.extend([item1, item2]) a_read = self.crud.read(self.ncc, a) preconfig_a = ysanity.A() item1.value, item2.value = "one", "two" preconfig_a.lst.extend([item1, item2]) self.assertEqual(is_equal(a_read, preconfig_a), True) def test_CASE8(self): """Assign presence class F to `a.b.f`.""" a = ysanity.A() a.b.f = a.b.F() a.b.f.f1 = 'f' a_read = self.crud.read(self.ncc, a) preconfig_a = a self.assertEqual(is_equal(a_read, preconfig_a), True) def test_read_oc_patttern(self): obj_A = oc_pattern.OcA() obj_A.a = 'hello' obj_A.b.b = obj_A.a # 'world' --> YPYServiceProviderError: illegal reference self.crud.create(self.ncc, obj_A) obj_A_read = self.crud.read(self.ncc, oc_pattern.OcA(), True) self.assertEqual(is_equal(obj_A, obj_A_read), 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() grpc = xr_man_ems_cfg.Grpc() # create object config_grpc(grpc) # add object configuration # create configuration on NETCONF device crud.create(provider, grpc) provider.close() exit() # End of script
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) # add object configuration # create configuration on NETCONF device crud.create(provider, syslog) exit() # End of script
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() rsvp = xr_ip_rsvp_cfg.Rsvp() # create object config_rsvp(rsvp) # add object configuration # create configuration on NETCONF device crud.create(provider, rsvp) 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() clock = xr_infra_infra_clock_linux_cfg.Clock() # create config object config_clock(clock) # add object configuration crud.create(provider, clock) # create object on NETCONF device provider.close() exit() # End of script
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 config_arpgmp(arpgmp) # add object configuration # create configuration on NETCONF device crud.create(provider, arpgmp) exit() # End of script
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() network_instances = oc_network_instance.NetworkInstances() config_mpls(network_instances) # add object configuration # create configuration on NETCONF device crud.create(provider, network_instances) exit() # End of script
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() global_interface_configuration = xr_ifmgr_cfg.GlobalInterfaceConfiguration() # create object config_global_interface_configuration(global_interface_configuration) # add object configuration # create configuration on NETCONF device crud.create(provider, global_interface_configuration) provider.close() exit() # End of script
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 config_router_static(router_static) # add object configuration # create configuration on NETCONF device crud.create(provider, router_static) provider.close() exit() # End of script
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 = oc_mpls.Mpls() # create object config_mpls(mpls) # add object configuration # create configuration on NETCONF device crud.create(provider, mpls) exit() # End of script
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) if "router_id" in list(bgp.keys()): protocol.bgp.global_.config.router_id = bgp["router_id"] afi_safi = protocol.bgp.global_.afi_safis.AfiSafi() afi_safi.afi_safi_name = oc_bgp_types.IPV4UNICAST() afi_safi.config.afi_safi_name = oc_bgp_types.IPV4UNICAST() afi_safi.config.enabled = True protocol.bgp.global_.afi_safis.afi_safi.append(afi_safi) if "peer-group-name" in list(bgp.keys()): peer_group = protocol.bgp.peer_groups.PeerGroup() peer_group.peer_group_name = bgp["peer-group-name"] peer_group.config.peer_group_name = bgp["peer-group-name"] if "peer-as" in list(bgp.keys()): peer_group.config.peer_as = int(bgp["peer-as"]) if "peer-group-local-address" in list(bgp.keys()): peer_group.transport.config.local_address = bgp[ "peer-group-local-address"] afi_safi = peer_group.afi_safis.AfiSafi() afi_safi.afi_safi_name = oc_bgp_types.IPV4UNICAST() afi_safi.config.afi_safi_name = oc_bgp_types.IPV4UNICAST() afi_safi.config.enabled = True peer_group.afi_safis.afi_safi.append(afi_safi) protocol.bgp.peer_groups.peer_group.append(peer_group) if "neighbor" in list(bgp.keys()): neighbor = protocol.bgp.neighbors.Neighbor() neighbor.neighbor_address = bgp["neighbor"] neighbor.config.neighbor_address = bgp["neighbor"] #neighbor.config.peer_as = bgp["peer-as"] if "peer-group-name" in list(bgp.keys()): neighbor.config.peer_group = bgp["peer-group-name"] afi_safi = neighbor.afi_safis.AfiSafi() afi_safi.afi_safi_name = oc_bgp_types.IPV4UNICAST() afi_safi.config.afi_safi_name = oc_bgp_types.IPV4UNICAST() afi_safi.config.enabled = True neighbor.afi_safis.afi_safi.append(afi_safi) protocol.bgp.neighbors.neighbor.append(neighbor) 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
class SanityTest(unittest.TestCase): PROVIDER_TYPE = "non-native" @classmethod def setUpClass(self): if SanityTest.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): runner = ysanity.Runner() self.crud.delete(self.ncc, runner) self.ncc.close() def setUp(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_int8_invalid(self): try: runner = self._create_runner() runner.yvalidate = False runner.ytypes.built_in_t.number8 = 8.5 self.crud.create(self.ncc, runner) except YPYServiceProviderError as err: expected_msg = '<error-message xml:lang="en">"8.5" is not a valid value.</error-message>' self.assertTrue(expected_msg in err.message) else: raise Exception( 'YPYServiceProviderError was not raised as expected') def test_uint_invalid(self): try: runner = self._create_runner() runner.ytypes.built_in_t.u_number8 = -1 runner.ytypes.built_in_t.yvalidate = False self.crud.create(self.ncc, runner) except YPYServiceProviderError as err: expected_msg = '<error-message xml:lang="en">"-1" is not a valid value.</error-message>' self.assertTrue(expected_msg in err.message) else: raise Exception( 'YPYServiceProviderError was not raised as expected') def test_string_invalid(self): runner = self._create_runner() runner.ytypes.built_in_t.name = ['name_str'] runner.ytypes.yvalidate = False self.crud.create(self.ncc, runner) def test_empty_invalid(self): try: runner = self._create_runner() runner.ytypes.built_in_t.emptee = 1 runner.ytypes.built_in_t.yvalidate = False self.crud.create(self.ncc, runner) except YPYServiceProviderError as err: expected_msg = '<error-message xml:lang="en">got unexpected data "1" for a container</error-message>' self.assertTrue(expected_msg in err.message.strip()) else: raise Exception( 'YPYServiceProviderError was not raised as expected') def test_enum_invalid(self): try: runner = self._create_runner() runner.ytypes.built_in_t.enum_value = 'not an enum' runner.ytypes.built_in_t.yvalidate = False self.crud.create(self.ncc, runner) except YPYServiceProviderError as err: expected_msg = '<error-message xml:lang="en">"" is an invalid value.</error-message><error-info><bad-element>enum-value</bad-element>' self.assertTrue(expected_msg in err.message) else: raise Exception( 'YPYServiceProviderError was not raised as expected') def test_enum_range_invalid(self): try: runner = self._create_runner() runner.ytypes.built_in_t.enum_int_value = 20000 runner.ytypes.built_in_t.yvalidate = False self.crud.create(self.ncc, runner) except YPYServiceProviderError as err: expected_msg = '<error-message xml:lang="en">"20000" is not a valid value.</error-message>' self.assertTrue(expected_msg in err.message) except YPYError as err: raise Exception('Unexpected exception occured: %s' % err.message.strip()) else: raise Exception( 'YPYServiceProviderError was not raised as expected') def test_str_pattern_invalid(self): try: one = ysanity.Runner.LeafRef.One() one.name_of_one = '1.2.3' one.yvalidate = False self.crud.create(self.ncc, one) except YPYServiceProviderError as err: expected_msg = '<error-message xml:lang="en">"1.2.3" is an invalid value.</error-message>' self.assertTrue(expected_msg in err.message) except YPYError as err: raise Exception('Unexpected exception occured: %s' % err.message.strip()) else: raise Exception( 'YPYServiceProviderError was not raised as expected')
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)
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 = Runner() self.crud.delete(self.ncc, runner) def tearDown(self): runner = Runner() self.crud.delete(self.ncc, runner) def test_one_level_pos(self): # READ r_1, r_2 = Runner(), 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 = Runner(), 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 = 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 = 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 = Runner() r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # UPDATE r_1, r_2 = Runner(), 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 = 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 = 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 = Runner() r_2 = self.crud.read(self.ncc, r_2) self.assertEqual(is_equal(r_1, r_2), True) # UPDATE r_1, r_2 = Runner(), 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 = 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 = Runner(), Runner() e_1, e_2 = Runner.OneList.Ldata(), 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 = Runner(), Runner() e_1, e_2 = Runner.OneList.Ldata(), 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' r_1.one_list.ldata[0].yfilter = DELETE() # 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 = Runner(), Runner() e_1, e_2 = Runner.OneList.Ldata(), 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 = Runner(), Runner() e_1, e_2 = Runner.OneList.Ldata(), 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 = 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 = Runner(), Runner() e_1, e_2 = Runner.TwoList.Ldata(), Runner.TwoList.Ldata() e_11, e_12 = Runner.TwoList.Ldata.Subl1(), 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 = Runner.TwoList.Ldata.Subl1(), 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 = Runner(), Runner() e_1, e_2 = Runner.TwoList.Ldata(), Runner.TwoList.Ldata() e_11, e_12 = Runner.TwoList.Ldata.Subl1(), 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 = Runner.TwoList.Ldata.Subl1(), 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 = 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 = Runner(), Runner() e_1 = Runner.ThreeList.Ldata() e_1.number = 31 e_1.name = 'runner:threelist:ldata[' + str(e_1.number) + ']:name' e_2 = Runner.ThreeList.Ldata() e_2.number = 32 e_2.name = 'runner:threelist:ldata[' + str(e_2.number) + ']:name' e_11 = Runner.ThreeList.Ldata.Subl1() e_12 = 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 = Runner.ThreeList.Ldata.Subl1.SubSubl1() e_112 = 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 = Runner.ThreeList.Ldata.Subl1.SubSubl1() e_122 = 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 = Runner.ThreeList.Ldata.Subl1() e_22 = 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 = Runner.ThreeList.Ldata.Subl1.SubSubl1() e_212 = 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 = Runner.ThreeList.Ldata.Subl1.SubSubl1() e_222 = 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) # DEEPCOPY r_1_copy = copy.deepcopy(r_1) self.assertEqual(is_equal(r_1_copy, r_1), True) self.crud.create(self.ncc, r_1_copy) r_2_copy = self.crud.read(self.ncc, Runner()) self.assertEqual(is_equal(r_2_copy, r_2), True) # UPDATE r_1, r_2 = Runner(), Runner() e_1 = Runner.ThreeList.Ldata() e_1.number = 31 e_1.name = 'runner/threelist/ldata[' + str(e_1.number) + ']/name' e_2 = Runner.ThreeList.Ldata() e_2.number = 32 e_2.name = 'runner/threelist/ldata[' + str(e_2.number) + ']/name' e_11 = Runner.ThreeList.Ldata.Subl1() e_12 = 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 = Runner.ThreeList.Ldata.Subl1.SubSubl1() e_112 = 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 = Runner.ThreeList.Ldata.Subl1.SubSubl1() e_122 = 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 = Runner.ThreeList.Ldata.Subl1() e_22 = 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 = Runner.ThreeList.Ldata.Subl1.SubSubl1() e_212 = 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 = Runner.ThreeList.Ldata.Subl1.SubSubl1() e_222 = 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 = 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 = Runner(), Runner() e_1 = Runner.InbtwList.Ldata() e_2 = 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 = 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 = 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 = 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 = 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 = Runner(), Runner() e_1 = Runner.InbtwList.Ldata() e_2 = 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 = 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 = 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 = 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 = 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 = 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 = Runner(), 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 = Runner(), 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 = 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 = Runner(), Runner() r_1.one.name = 'runner:one:name' r_1.two.sub1.number = 21 r_1.three.sub1.sub2.number = 311 e_1 = Runner.InbtwList.Ldata() e_2 = 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 = Runner.InbtwList.Ldata.Subc.SubcSubl1() e_12 = 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 = Runner.InbtwList.Ldata.Subc.SubcSubl1() e_22 = 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 = Runner(), Runner() r_1.one.name = 'runner/one/name' r_1.two.sub1.number = 21 r_1.three.sub1.sub2.number = 311 e_1 = Runner.InbtwList.Ldata() e_2 = 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 = Runner.InbtwList.Ldata.Subc.SubcSubl1() e_12 = 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 = Runner.InbtwList.Ldata.Subc.SubcSubl1() e_22 = 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 = 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 = Runner(), 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 = Runner(), 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 = 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 = Runner(), Runner() e_1 = Runner.OneList.OneAugList.Ldata() e_2 = 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 = Runner(), Runner() e_1 = Runner.OneList.OneAugList.Ldata() e_2 = 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 = 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 = 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, Runner()) self.assertEqual(is_equal(runner_read, runner), 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.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 = oc_routing_policy.RoutingPolicy() # create object config_routing_policy(routing_policy) # add object configuration # create configuration on NETCONF device crud.create(provider, routing_policy) exit() # End of script
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 gNMI provider repository = Repository(YDK_REPO_DIR + device.hostname) provider = gNMIServiceProvider(repo=repository, address=device.hostname, port=device.port, username=device.username, password=device.password) # create CRUD service crud = CRUDService() lldp = xr_ethernet_lldp_cfg.Lldp() # create object config_lldp(lldp) # add object configuration # create configuration on gNMI device crud.create(provider, lldp) exit() # End of script
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() vrfs = xr_infra_rsi_cfg.Vrfs() # create object config_vrfs(vrfs) # add object configuration # create configuration on NETCONF device crud.create(provider, vrfs) 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 config object config_isis(isis) # add object configuration crud.create(provider, isis) # create object on NETCONF device provider.close() exit() # End of script
# 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() # create config object interface_configurations = xr_ifmgr_cfg.InterfaceConfigurations() # add object configuration config_interface_configurations(interface_configurations) # create object on NETCONF device crud.create(provider, interface_configurations) provider.close() exit() # End of script
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 gNMI provider repository = Repository(YDK_REPO_DIR + device.hostname) provider = gNMIServiceProvider(repo=repository, address=device.hostname, port=device.port, username=device.username, password=device.password) # create CRUD service crud = CRUDService() mpls_lsd = xr_mpls_lsd_cfg.MplsLsd() # create object config_mpls_lsd(mpls_lsd) # add object configuration # create configuration on gNMI device crud.create(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.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() mpls = oc_mpls.Mpls() # create config object config_mpls(mpls) # add object configuration crud.create(provider, mpls) # create object on NETCONF device provider.close() exit() # End of script
# 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 gNMI provider repository = Repository(YDK_REPO_DIR + device.hostname) provider = gNMIServiceProvider(repo=repository, address=device.hostname, port=device.port, username=device.username, password=device.password) # create CRUD service crud = CRUDService() global_interface_configuration = xr_ifmgr_cfg.GlobalInterfaceConfiguration( ) # create object config_global_interface_configuration( global_interface_configuration) # add object configuration # create configuration on gNMI device crud.create(provider, global_interface_configuration) exit() # End of script
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() router_static = xr_ip_static_cfg.RouterStatic() # create object config_router_static(router_static) # add object configuration # create configuration on NETCONF device crud.create(provider, router_static) exit() # End of script
# 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 gNMI provider repository = Repository(YDK_REPO_DIR + device.hostname) provider = gNMIServiceProvider(repo=repository, address=device.hostname, port=device.port, username=device.username, password=device.password) # create CRUD service crud = CRUDService() ipv4_acl_and_prefix_list = xr_ipv4_acl_cfg.Ipv4AclAndPrefixList( ) # create object config_ipv4_acl_and_prefix_list( ipv4_acl_and_prefix_list) # add object configuration # create configuration on gNMI device crud.create(provider, ipv4_acl_and_prefix_list) exit() # End of script
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() banners = xr_infra_infra_cfg.Banners() # create object config_banners(banners) # add object configuration # create configuration on NETCONF device crud.create(provider, banners) exit() # End of script
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 config_isis(isis) # add object configuration # create configuration on NETCONF device crud.create(provider, isis) provider.close() exit() # End of script
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() isis = xr_clns_isis_cfg.Isis() # create object config_isis(isis) # add object configuration # create configuration on NETCONF device crud.create(provider, isis) exit() # End of script
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() interfaces = oc_interfaces.Interfaces() # create object config_interfaces(interfaces, name="GigabitEthernet0/0/0/0", description="Peering with AS65002", address_ip="192.168.0.1", prefix_length=24) # create configuration on NETCONF device crud.create(provider, interfaces) provider.close() exit() # End of script
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 config_aaa(aaa) # add object configuration # create configuration on NETCONF device crud.create(provider, aaa) exit() # End of script
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() host_names = xr_shellutil_cfg.HostNames() # create object config_host_names(host_names) # add object configuration # create configuration on NETCONF device crud.create(provider, host_names) provider.close() exit() # End of script
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 config_ipv4_acl_and_prefix_list(ipv4_acl_and_prefix_list) # add object configuration # create configuration on NETCONF device crud.create(provider, ipv4_acl_and_prefix_list) exit() # End of script
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 config_ntp(ntp) # add object configuration # create configuration on NETCONF device crud.create(provider, ntp) exit() # End of script
device = urllib.parse.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 configuration bgp = oc_bgp.Bgp() config_bgp_peer(bgp, args.local_as, args.peer_address, args.peer_as, args.peer_group) # create configuration on NETCONF device crud.create(provider, bgp) exit() # End of script
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 gNMI provider repository = Repository(YDK_REPO_DIR+device.hostname) provider = gNMIServiceProvider(repo=repository, address=device.hostname, port=device.port, username=device.username, password=device.password) # create CRUD service crud = CRUDService() ntp = xr_ip_ntp_cfg.Ntp() # create object config_ntp(ntp) # add object configuration # create configuration on gNMI device crud.create(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.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 crud.create(provider, router_static) # create object on NETCONF device provider.close() exit() # End of script
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 gNMI provider repository = Repository(YDK_REPO_DIR + device.hostname) provider = gNMIServiceProvider(repo=repository, address=device.hostname, port=device.port, username=device.username, password=device.password) # create CRUD service crud = CRUDService() arp = xr_ipv4_arp_cfg.Arp() # create object config_arp(arp) # add object configuration # create configuration on gNMI device crud.create(provider, arp) exit() # End of script
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() ip_domain = xr_ip_domain_cfg.IpDomain() # create object config_ip_domain(ip_domain) # add object configuration # create configuration on NETCONF device crud.create(provider, ip_domain) provider.close() exit() # End of script