Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
 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])
Ejemplo n.º 3
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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
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()
        # 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)