def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) ydk_obj = ned.Native.Interface.Gigabitethernet() keep = string.digits + '//' ydk_obj.name = ''.join(i for i in attributes.value('name') if i in keep) shutdown = attributes.value('shutdown') if shutdown is not None: if unconfig: # Special case: unconfiguring always applies shutdown ydk_obj.shutdown = Empty() elif shutdown: ydk_obj.shutdown = Empty() else: ydk_obj.shutdown = DELETE() ipv4 = attributes.value('ipv4') if ipv4: if unconfig: ydk_obj.ip.address.primary.address = DELETE() ydk_obj.ip.address.primary.mask = DELETE() else: ydk_obj.ip.address.primary.address = str(ipv4.ip) ydk_obj.ip.address.primary.mask = str(ipv4.netmask) vrf = attributes.value('vrf') if vrf: if unconfig: ydk_obj.vrf.forwarding = DELETE() else: ydk_obj.vrf.forwarding = vrf.name # instantiate crud service crud_service = CRUDService() if apply: # create netconf connection ncp = NetconfServiceProvider(self.device) crud_service.create(ncp, ydk_obj) else: return YangConfig(device=self.device, ydk_obj=ydk_obj, ncp=NetconfServiceProvider, crud_service=crud_service.create)
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 build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) interface_configurations = xr_ifmgr_cfg.InterfaceConfigurations() interface_configuration = interface_configurations.InterfaceConfiguration( ) interface_configuration.active = "act" interface_configuration.interface_name = attributes.value('name') if unconfig and attributes.iswildcard: interface_configuration = DELETE() else: shutdown = attributes.value('shutdown') if shutdown is not None: if unconfig: # Special case: unconfiguring always applies shutdown interface_configuration.shutdown = Empty() elif shutdown: interface_configuration.shutdown = Empty() else: interface_configuration.shutdown = DELETE() ipv4 = attributes.value('ipv4') primary = interface_configuration.ipv4_network.addresses.Primary() if ipv4: primary.address = str(ipv4.ip) primary.netmask = str(ipv4.netmask) vrf = attributes.value('vrf') if vrf: interface_configuration.vrf = vrf.name # instantiate crud service crud_service = CRUDService() if apply: # create netconf connection ncp = NetconfServiceProvider(self.device) return crud_service.create(ncp, interface_configuration) else: return YangConfig(device=self.device, unconfig=unconfig, ncp=NetconfServiceProvider, interface_configuration=interface_configuration, crud_service=crud_service.create)
def test_delete_object_on_leaf(self): # create runner with two leaves, one and two runner_create = ysanity.Runner() runner_create.one.name = 'one' runner_create.two.name = 'two' self.crud.create(self.ncc, runner_create) runner_read_filter = ysanity.Runner() runner_read = self.crud.read(self.ncc, runner_read_filter) # use DELETE object to remove leaf one runner_delete = runner_read runner_delete.one.name = DELETE() self.crud.update(self.ncc, runner_delete) # manually create remaining runner with leaf two runner_read = self.crud.read(self.ncc, runner_read_filter) runner_left = runner_create runner_left.one.name = None self.assertEqual(is_equal(runner_read, runner_left), True)
def test_delete_object_on_leaflist(self): # create runner with a leaf and a leaflist runner_create = ysanity.Runner() runner_create.one.name = 'one' runner_create.ytypes.built_in_t.llstring = [str(i) for i in range(5)] self.crud.create(self.ncc, runner_create) runner_read_filter = ysanity.Runner() runner_read = self.crud.read(self.ncc, runner_read_filter) # user DELETE object to remove leaflist runner_delete = runner_read runner_delete.ytypes.built_in_t.llstring = DELETE() self.crud.update(self.ncc, runner_delete) # manually create remaining runner with leaf one runner_read = self.crud.read(self.ncc, runner_read_filter) runner_left = runner_create del runner_left.ytypes.built_in_t.llstring[:] self.assertEqual(is_equal(runner_read, runner_left), True)
def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) interface_configurations = xr_ifmgr_cfg.InterfaceConfigurations() # import pdb;pdb.set_trace() # crud_service = CRUDService() # ncp = NetconfServiceProvider(self.device) # x = crud_service.read(ncp, interface_configurations) # abc = YangConfig(device=self.device, ydk_obj=x, ncp=ncp, crud_service=crud_service) # print(abc) interface_configuration = interface_configurations.InterfaceConfiguration( ) interface_configuration.active = "act" interface_configuration.interface_name = attributes.value('name') shutdown = attributes.value('shutdown') if shutdown is not None: if unconfig: # Special case: unconfiguring always applies shutdown interface_configuration.shutdown = Empty() elif shutdown: interface_configuration.shutdown = Empty() else: interface_configuration.shutdown = DELETE() vrf = attributes.value('vrf') if vrf: if unconfig: interface_configuration.vrf = DELETE() else: interface_configuration.vrf = vrf.name ipv4 = attributes.value('ipv4') if ipv4: primary = interface_configuration.ipv4_network.addresses.Primary() if unconfig: primary.address = DELETE() primary.netmask = DELETE() interface_configuration.ipv4_network.addresses.primary = primary else: primary.address = str(ipv4.ip) primary.netmask = str(ipv4.netmask) interface_configuration.ipv4_network.addresses.primary = primary # In Cisco-IOS-XR-l2-eth-infra-cfg.yang, augmentation section # augment "/a1:interface-configurations/a1:interface-configuration" # container ethernet-service is defined eth_encap_type1 = attributes.value('eth_encap_type1') eth_encap_val1 = attributes.value('eth_encap_val1') # eth_encap_type2 = attributes.value('eth_encap_type2') eth_encap_val2 = attributes.value('eth_encap_val2') if eth_encap_type1: interface_configuration.ethernet_service\ .local_traffic_default_encapsulation\ .outer_tag_type = eth_encap_type1 if eth_encap_val1: interface_configuration.ethernet_service\ .local_traffic_default_encapsulation\ .outer_vlan_id = eth_encap_val1 # if eth_encap_type2: # interface_configuration.encapsulation.encapsulation = \ # eth_encap_type2 if eth_encap_val2: interface_configuration.ethernet_service\ .local_traffic_default_encapsulation\ .inner_vlan_id = eth_encap_val2 # instantiate crud service crud_service = CRUDService() if apply: # create netconf connection ncp = NetconfServiceProvider(self.device) crud_service.create(ncp, interface_configuration) else: return YangConfig(device=self.device, ydk_obj=interface_configuration, ncp=NetconfServiceProvider, crud_service=crud_service.create)