Ejemplo n.º 1
0
        def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs):
            assert not kwargs
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)

            with configurations.submode_context(attributes.format('vrf definition {name}', force=True)):
                if unconfig and attributes.iswildcard:
                    configurations.submode_unconfig()

                if attributes.value('shutdown'):
                    warnings.warn('vrf shutdown', UnsupportedAttributeWarning)

                # iosxe: vrf definition vrf1 / vpn id 0:0
                configurations.append_line(attributes.format('vpn id {vpn_id}'))
                # iosxr: vrf vrf1 / description some line data
                configurations.append_line(attributes.format('description {description}'))
                configurations.append_line(attributes.format('rd {rd}'))

                # iosxr: vrf vrf1 / address-family ipv4 unicast (config-vrf-af)
                for key, sub, attributes2 in attributes.mapping_items(
                        'address_family_attr', keys=self.address_family_attr, sort=True):
                    configurations.append_block(
                        sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig))

                # iosxe: vrf vrf1 / vpn id 0:0
                configurations.append_line(attributes.format('vpn id {vpn_id}'))

            if apply:
                if configurations:
                    self.device.configure(configurations)
            else:
                return CliConfig(device=self.device, unconfig=unconfig,
                                 cli_config=configurations)
Ejemplo n.º 2
0
        def build_config(self,
                         apply=True,
                         attributes=None,
                         unconfig=False,
                         **kwargs):
            assert not kwargs
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)
            vrfs = xr_infra_rsi_cfg.Vrfs()
            if not unconfig:
                vrf = vrfs.Vrf()
                if attributes.value('name'):
                    vrf.vrf_name = attributes.value('name')
                vrf.create = Empty()

                vrfs.vrf.append(vrf)
                #crud_service = CRUDService()
                #ncp = NetconfServiceProvider(self.device)
                #x = crud_service.read(ncp, vrf)
                #abc = YangConfig(device=self.device, ydk_obj=x, ncp=ncp, crud_service=crud_service)
                #print(abc)
                # iosxr: vrf vrf1 / address-family ipv4 unicast (config-vrf-af)
                for key, sub, attributes2 in attributes.mapping_items(
                        'address_family_attr',
                        keys=self.address_families,
                        sort=True):
                    sub.build_config(apply=False,
                                     attributes=attributes2,
                                     unconfig=unconfig,
                                     vrf=vrf)

            # instantiate crud service
            crud_service = CRUDService()
            if apply:

                # create netconf connection
                ncp = NetconfServiceProvider(self.device)

                crud_service.create(ncp, vrfs)

                if unconfig:
                    crud_service.delete(ncp, vrfs)
            else:
                if unconfig:
                    return YangConfig(device=self.device,
                                      ydk_obj=vrfs,
                                      ncp=NetconfServiceProvider,
                                      crud_service=crud_service.delete)
                else:
                    return YangConfig(device=self.device,
                                      ydk_obj=vrfs,
                                      ncp=NetconfServiceProvider,
                                      crud_service=crud_service.create)
Ejemplo n.º 3
0
    def build_config(self, devices=None, apply=True, attributes=None):
        #TODO add interfaces
        attributes = AttributesHelper(self, attributes)
        cfgs = {}

        for key, sub, attributes2 in attributes.mapping_items('device_attr',
                                                              keys=devices,
                                                              sort=True):
            cfgs[key] = sub.build_config(apply=False, attributes=attributes2)

        if apply:
            for device_name, cfg in sorted(cfgs.items()):
                self.testbed.config_on_devices(cfg, fail_invalid=True)
        else:
            return cfgs
Ejemplo n.º 4
0
    def build_config(self, devices=None, apply=True, attributes=None):
        cfgs = {}
        attributes = AttributesHelper(self, attributes)
        if devices is None:
            devices = self.devices
        devices = set(devices)

        for key, sub, attributes2 in attributes.mapping_items(
                'device_attr', sort=True):
            cfgs[key] = sub.build_config(apply=False, attributes=attributes2)
        if apply:
            for device_name, cfg in sorted(cfgs.items()):
                self.testbed.config_on_devices(cfg, fail_invalid=True)
        else:
            return cfgs
Ejemplo n.º 5
0
        def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs):
            assert not kwargs, kwargs
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)

            with configurations.submode_context(attributes.format('vrf {name}', force=True)):
                if unconfig and attributes.iswildcard:
                    configurations.submode_unconfig()

                if attributes.value('shutdown'):
                    warnings.warn('vrf shutdown', UnsupportedAttributeWarning)

                # iosxr: vrf vrf1 / description some line data
                configurations.append_line(attributes.format('description {description}'))

                # iosxr: vrf vrf1 / address-family ipv4 unicast (config-vrf-af)
                for key, sub, attributes2 in attributes.mapping_items(
                        'address_family_attr', keys=self.address_families, sort=True):
                    configurations.append_block(
                        sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig))

                # iosxr: vrf vrf1 / fallback-vrf vrf2
                configurations.append_line(attributes.format('fallback-vrf {fallback_vrf.name}'))

                # iosxr: vrf vrf1 / mhost ipv4 default-interface GigabitEthernet0/0/0/0
                configurations.append_line(attributes.format('mhost ipv4 default-interface {mhost_ipv4_default_interface.name}'))

                # iosxr: vrf vrf1 / mhost ipv6 default-interface GigabitEthernet0/0/0/0
                configurations.append_line(attributes.format('mhost ipv6 default-interface {mhost_ipv6_default_interface.name}'))

                # iosxr: vrf vrf1 / mode big
                configurations.append_line(attributes.format('mode {scale_mode}'))

                # iosxr: vrf vrf1 / remote-route-filtering disable
                if attributes.value('remote_route_filtering') is False:
                    configurations.append_line('remote-route-filtering disable')

                # iosxr: vrf vrf1 / vpn id 0:0
                configurations.append_line(attributes.format('vpn id {vpn_id}'))

            if apply:
                if configurations:
                    self.device.configure(configurations, fail_invalid=True)
            else:
                return CliConfig(device=self.device, unconfig=unconfig,
                                 cli_config=configurations, fail_invalid=True)
Ejemplo n.º 6
0
        def build_config(self,
                         apply=True,
                         attributes=None,
                         unconfig=False,
                         **kwargs):
            assert not kwargs
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)
            ydk_obj = ned.Native.Vrf()
            vrf_obj = ydk_obj.Definition()
            ydk_obj.definition.append(vrf_obj)
            if attributes.value('name'):
                vrf_obj.name = attributes.value('name')

            # iosxr: vrf vrf1 / address-family ipv4 unicast (config-vrf-af)
            for key, sub, attributes2 in attributes.mapping_items(
                    'address_family_attr', keys=self.address_families,
                    sort=True):
                sub.build_config(apply=False,
                                 attributes=attributes2,
                                 unconfig=unconfig,
                                 vrf_obj=vrf_obj)

            # instantiate crud service
            crud_service = CRUDService()
            if apply:

                # create netconf connection
                ncp = NetconfServiceProvider(self.device)

                crud_service.create(ncp, ydk_obj)

                if unconfig:
                    crud_service.delete(ncp, ydk_obj)
            else:
                if unconfig:
                    return YangConfig(device=self.device,
                                      ydk_obj=ydk_obj,
                                      ncp=NetconfServiceProvider,
                                      crud_service=crud_service.delete)
                else:
                    return YangConfig(device=self.device,
                                      ydk_obj=ydk_obj,
                                      ncp=NetconfServiceProvider,
                                      crud_service=crud_service.create)
Ejemplo n.º 7
0
    def build_unconfig(self, devices=None, apply=True, attributes=None,
                       **kwargs):
        cfgs = {}
        attributes = AttributesHelper(self, attributes)

        if devices is None:
            devices = self.devices
        devices = set(devices)

        for key, sub, attributes2 in attributes.mapping_items(
                'device_attr',
                keys=devices, sort=True):
            cfgs[key] = sub.build_unconfig(apply=False, attributes=attributes2)

        if apply:
            self.testbed.config_on_devices(cfgs, fail_invalid=True)
        else:
            return cfgs
Ejemplo n.º 8
0
        def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs):
            assert not kwargs, kwargs
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)

            # iosxe: segment-routing mpls
            with configurations.submode_context('segment-routing mpls'):
                if unconfig and attributes.iswildcard:
                    configurations.submode_unconfig()

                if attributes.value('shutdown'):
                    configurations.append_line('shutdown')

                # iosxe: segment-routing mpls / set-attributes
                with configurations.submode_context('set-attributes',cancel_empty=True):
                    for address_family,address_family_sub,address_family_attributes in \
                        attributes.mapping_items('address_family_attr', keys=self.address_families, sort=True):

                        if address_family == AddressFamily.ipv4_unicast:
                            context_cli = 'address-family ipv4'
                        else:
                            context_cli = address_family_attributes.format('address-family {address_family.value}', force = True)

                        with configurations.submode_context(context_cli,cancel_empty=True):

                            if address_family_attributes.value('sr_label_preferred'):
                                configurations.append_line('sr-label-preferred')

                            if address_family_attributes.value('explicit_null'):
                                configurations.append_line('explicit-null')

                # iosxe: segment-routing mpls / global-block 16000 16001
                v = attributes.value('global_block')
                if v is not None:
                    configurations.append_line('global-block {first} {last}'.format(
                        first=v.start,
                        last=v[-1]))

                # iosxe: segment-routing mpls / connected-prefix-sid-map
                with configurations.submode_context('connected-prefix-sid-map',cancel_empty=True):

                    for address_family,address_family_sub,address_family_attributes in \
                        attributes.mapping_items('address_family_attr', keys=self.address_families, sort=True):

                        if address_family == AddressFamily.ipv4_unicast:
                            context_cli = 'address-family ipv4'
                        else:
                            context_cli = address_family_attributes.format('address-family {address_family.value}', force = True)

                        with configurations.submode_context(context_cli,cancel_empty=True):

                            for entry,attributes2 in address_family_attributes.sequence_values('connected_prefix_sid_map'):
                                configurations.append_line(attributes2.format('{prefix} index {index} range {range}'))

                # iosxe: segment-routing mpls / mapping-server / prefix-sid-map
                if attributes.value('mapping_server'):
                    with configurations.submode_context('mapping server'):
                        with configurations.submode_context('prefix-sid-map',cancel_empty=True):

                            for address_family,address_family_sub,address_family_attributes in \
                                attributes.mapping_items('address_family_attr', keys=self.address_families, sort=True):

                                if address_family == AddressFamily.ipv4_unicast:
                                    context_cli = 'address-family ipv4'
                                else:
                                    context_cli = address_family_attributes.format('address-family {address_family.value}', force = True)

                                with configurations.submode_context(context_cli,cancel_empty=True):

                                    for entry,attributes2 in address_family_attributes.sequence_values('prefix_sid_map'):
                                        if attributes2.value('attach'):
                                            configurations.append_line(attributes2.format('{prefix} index {index} range {range} attach'))
                                        else:
                                            configurations.append_line(attributes2.format('{prefix} index {index} range {range}'))

            if apply:
                if configurations:
                    self.device.configure(configurations, fail_invalid=True)
            else:
                #return str(configurations)
                return CliConfig(device=self.device, unconfig=unconfig,
                                 cli_config=configurations, fail_invalid=True)
Ejemplo n.º 9
0
        def build_config(self,
                         apply=True,
                         attributes=None,
                         unconfig=False,
                         contained=False,
                         **kwargs):
            assert not kwargs, kwargs
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)

            with configurations.submode_context(
                    attributes.format('l2vpn xconnect context {name}',
                                      force=True,
                                      cancel_empty=True)):
                if attributes.value('redundancy_predictive'):
                    configurations.append_line('redundancy predictive enable')

                for interface, attributes2 in attributes.sequence_values(
                        'interfaces', sort=True):
                    if isinstance(interface, EFPInterface):
                        configurations.append_line('member {parent_interface} service-instance {service_instance}'.format\
                                                   (parent_interface = interface.parent_interface.name,\
                                                    service_instance = interface.service_instance))
                    elif isinstance(interface, EthernetInterface):
                        configurations.append_line('member {interface} '.format\
                                                   (interface = interface.name))

                for neighbor, neighbor_sub, neighbor_attributes in attributes.mapping_items(
                        'neighbor_attr', keys=self.pseudowire_neighbors,
                        sort=True):
                    if getattr(neighbor, 'pseudowire_interface',
                               None) is not None:
                        if neighbor_attributes.value(
                                'redundancy_group'
                        ) is None and neighbor_attributes.value(
                                'redundancy_priority') is None:
                            configurations.append_line(
                                'member %s' %
                                neighbor.pseudowire_interface.name)
                        elif neighbor_attributes.value(
                                'redundancy_group'
                        ) is not None and neighbor_attributes.value(
                                'redundancy_priority') is None:
                            configurations.append_line(
                                neighbor_attributes.format(
                                    'member %s group {redundancy_group}' %
                                    neighbor.pseudowire_interface.name,
                                    force=True))
                        elif neighbor_attributes.value(
                                'redundancy_group'
                        ) is not None and neighbor_attributes.value(
                                'redundancy_priority') is not None:
                            configurations.append_line(neighbor_attributes.format('member %s group {redundancy_group} priority {redundancy_priority}' \
                                                                                   % neighbor.pseudowire_interface.name,force=True))

            if apply:
                if configurations:
                    self.device.configure(str(configurations),
                                          fail_invalid=True)
            else:
                return str(configurations)
Ejemplo n.º 10
0
        def build_config(self,
                         apply=True,
                         attributes=None,
                         unconfig=False,
                         **kwargs):
            assert not kwargs, kwargs
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)

            # nxos: vrf context vrf1 (config-vrf)
            with configurations.submode_context(
                    attributes.format('vrf context {name}', force=True)):
                if unconfig and attributes.iswildcard:
                    configurations.submode_unconfig()

                # nxos: vrf context vrf1 / rd 1.2:1
                v = attributes.value('rd')
                if v is not None:
                    # if v != 'auto':
                    #     v = format(v, 'd.d:d')
                    configurations.append_line('rd {}'.format(v))

                # nxos: vrf context vrf1 / vni 1-16777214
                if attributes.value('vni'):
                    configurations.append_line(attributes.format('vni {vni}'))

                # nxos: vrf context vrf1 / address-family ipv4 unicast (config-vrf-af-ipv4)
                # nxos: vrf context vrf1 / address-family ipv6 unicast (config-vrf-af-ipv6)
                for key, sub, attributes2 in attributes.mapping_items(
                        'address_family_attr',
                        keys=self.address_family_attr,
                        sort=True):
                    configurations.append_block(
                        sub.build_config(apply=False,
                                         attributes=attributes2,
                                         unconfig=unconfig))

                # nxos: vrf context vrf1 / amt flush-routes
                if attributes.value('amt_flush_routes'):
                    configurations.append_line('amt flush-routes')

                # nxos: vrf context vrf1 / amt pseudo-interface Ethernet1/1
                configurations.append_line(
                    attributes.format(
                        'amt pseudo-interface {amt_pseudo_interface.name}'))

                # nxos: vrf context vrf1 / description some line data
                configurations.append_line(
                    attributes.format('description {description}'))

                # nxos: vrf context vrf1 / ip ... -> StaticRouting/TODO
                # nxos: vrf context vrf1 / ipv6 ... -> StaticRouting/TODO

                # nxos: vrf context vrf1 / shutdown
                if attributes.value('shutdown'):
                    configurations.append_line('shutdown')

                # nxos: vrf context vrf1 / vni 4096 topology 1

                # comment out due to impot issue (this is from old configuration)
                #    --- ImportError: cannot import name 'ESI'
                # for vni, attributes2 in attributes.sequence_values('vnis'):
                #     configurations.append_line('vni {}'.format(vni.vni_id))

            if apply:
                if configurations:
                    self.device.configure(configurations, fail_invalid=True)
            else:
                return CliConfig(device=self.device,
                                 unconfig=unconfig,
                                 cli_config=configurations)