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

            # require_router_alert
            if attributes.value('require_router_alert'):
                configurations.append_line('ip igmp enforce-router-alert')

            # VrfAttributes
            for sub, attributes2 in attributes.mapping_values(
                    'vrf_attr', sort=True, keys=self.vrf_attr):
                configurations.append_block(
                    sub.build_config(apply=False,
                                     attributes=attributes2,
                                     unconfig=unconfig))

            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, kwargs
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)

            # ip pim bidir-enable
            if attributes.value('enabled_bidir'):
                configurations.append_line(
                    attributes.format('ip pim bidir-enable'))

            # VrfAttributes
            for sub, attributes2 in attributes.mapping_values(
                    'vrf_attr', sort=True, keys=self.vrf_attr):
                configurations.append_block(
                    sub.build_config(apply=False,
                                     attributes=attributes2,
                                     unconfig=unconfig))

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

                with configurations.submode_context(
                        None if self.vrf_name == 'default' else attributes.
                        format('vrf context {vrf_id}', force=True)):

                    # AddressFamilyAttributes
                    for sub, attributes2 in attributes.mapping_values(
                            'address_family_attr',
                            sort=True,
                            keys=self.address_family_attr):
                        configurations.append_block(
                            sub.build_config(apply=False,
                                             attributes=attributes2,
                                             unconfig=unconfig))

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

            # iosxr: router hsrp
            configurations.append_line(
                attributes.format('router hsrp', force=True))

            # loop over all interfaces
            for sub, attributes2 in attributes.mapping_values(
                    'interface_attr', keys=self.interface_attr.keys()):
                configurations.append_block(
                    sub.build_config(apply=False,
                                     attributes=attributes2,
                                     unconfig=unconfig,
                                     **kwargs))

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

            if attributes.value('enabled'):

                sub, attributes2 = attributes.namespace(
                    'signaling_protocol_ldp')
                if sub is not None:
                    configurations.append_block(
                        sub.build_config(apply=False,
                                         attributes=attributes2,
                                         unconfig=unconfig))

                sub, attributes2 = attributes.namespace(
                    'signaling_protocol_bgp')
                if sub is not None:
                    configurations.append_block(
                        sub.build_config(apply=False,
                                         attributes=attributes2,
                                         unconfig=unconfig))

            return str(configurations)
Ejemplo n.º 6
0
        def build_config(self,
                         links=None,
                         apply=True,
                         attributes=None,
                         unconfig=False,
                         **kwargs):
            '''Device build config'''
            assert not apply
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)

            if attributes.iswildcard:
                # iosxe : mpls traffic-eng tunnels
                configurations.append_line('mpls traffic-eng tunnels', \
                                            unconfig_cmd = 'default mpls traffic-eng tunnels')

            if attributes.value('advertise_expnull'):
                configurations.append_line(
                    'mpls traffic-eng signalling advertise explicit-null')

            # Add per-interface config
            for sub, attributes2 in attributes.mapping_values(
                    'interface_attr', keys=self.interfaces, sort=True):
                configurations.append_block(
                    sub.build_config(apply=False,
                                     attributes=attributes2,
                                     unconfig=unconfig,
                                     **kwargs))

            return CliConfig(device=self.device,
                             unconfig=unconfig,
                             cli_config=configurations)
Ejemplo n.º 7
0
        def build_config(self,
                         apply=True,
                         attributes=None,
                         unconfig=False,
                         **kwargs):
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)

            # virtual neighbor 70.70.70.70 pw-id 17300005
            with configurations.submode_context(
                    attributes.format('virtual neighbor {ip} pw-id {pw_id}',
                                      force=True)):
                if unconfig and attributes.iswildcard:
                    configurations.submode_unconfig()

                # iosxr: evpn / virtual neighbor 70.70.70.70 pw-id 17300005 / ethernet-segment (config-evpn-ac-es)
                ns, attributes2 = attributes.namespace('ethernet_segment')
                if ns is not None:
                    configurations.append_block(
                        ns.build_config(apply=False,
                                        attributes=attributes2,
                                        unconfig=unconfig,
                                        **kwargs))

            return str(configurations)
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)

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

                # VrfAttributes
                for sub, attributes2 in attributes.mapping_values(
                        'vrf_attr', sort=True, keys=self.vrf_attr):
                    configurations.append_block(
                        sub.build_config(apply=False,
                                         attributes=attributes2,
                                         unconfig=unconfig))

            if apply:
                if configurations:
                    self.device.configure(configurations)
            else:
                return CliConfig(device=self.device,
                                 unconfig=unconfig,
                                 cli_config=configurations)
Ejemplo n.º 9
0
                def build_config(self,
                                 devices=None,
                                 apply=True,
                                 attributes=None,
                                 unconfig=False,
                                 **kwargs):
                    attributes = AttributesHelper(self, attributes)
                    configurations = CliConfigBuilder(unconfig=unconfig)
                    with configurations.submode_context(
                            attributes.format('instance-id {instance_id}',
                                              force=True)):
                        if unconfig and attributes.iswildcard:
                            configurations.submode_unconfig()
                        for sub, attributes2 in attributes.mapping_values(
                                'service_attr',
                                keys=self.service_attr.keys(),
                                inherited=False):
                            configurations.append_block(
                                sub.build_config(apply=False,
                                                 attributes=attributes2,
                                                 unconfig=unconfig,
                                                 **kwargs))
                        for sub, attributes2 in attributes.mapping_values(
                                'dynamic_eid_attr',
                                keys=self.dynamic_eid_attr.keys(),
                                inherited=False):
                            configurations.append_block(
                                sub.build_config(apply=False,
                                                 attributes=attributes2,
                                                 unconfig=unconfig,
                                                 **kwargs))

                    return str(configurations)
Ejemplo n.º 10
0
def _build_attributes_cli(base, attrobj, attributes):
    configurations = CliConfigBuilder()

    for cond, attributes2 in attributes.sequence_values('conditions'):
        configurations.append_block(
            _build_condition_cli(base, cond, attributes=attributes2))

    configurations.append_block(attributes.format('{custom_config_cli}'))

    # iosxr: route-policy <rtepol> / set label-index ...
    configurations.append_line(
        attributes.format('set label-index {set_label_index}'))

    # iosxr: route-policy <rtepol> / set community ...
    v = attributes.value('set_community')
    if v is not None:
        if isinstance(v, CommunitySet):
            v = v.name
        configurations.append_line('set community {}'.format(v))

    # iosxr: route-policy <rtepol> / set next-hop ...
    configurations.append_line(attributes.format('set next-hop {set_nexthop}'))

    # iosxr: route-policy <rtepol> / pass
    if attributes.value('pass_on'):
        configurations.append_line('pass')

    # iosxr: route-policy <rtepol> / drop
    if attributes.value('drop_on'):
        configurations.append_line('drop')

    return configurations
Ejemplo n.º 11
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)

            # iosxr: l2vpn / pw-class someword (config-l2vpn)
            with configurations.submode_context(
                    attributes.format('pw-class {name}', force=True)):
                if unconfig and attributes.iswildcard:
                    configurations.submode_unconfig()

                ns, attributes2 = attributes.namespace('encapsulation')
                if ns is not None:
                    configurations.append_block(
                        ns.build_config(apply=False,
                                        attributes=attributes2,
                                        unconfig=unconfig))

            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.º 12
0
            def build_config(self,
                             apply=True,
                             attributes=None,
                             unconfig=False,
                             **kwargs):
                assert not apply
                assert not kwargs, kwargs
                attributes = AttributesHelper(self, attributes)
                configurations = CliConfigBuilder(unconfig=unconfig)

                # mac address-table learning vlan <vlan_id>
                if attributes.value('vlan_mac_learning'):
                    configurations.append_line(
                        attributes.format(
                            'mac address-table learning vlan {vlan_id}',
                            force=True))

                # mac address-table aging-time <vlan_mac_aging_time> vlan <vlan_id>
                configurations.append_line(
                    attributes.format(
                        'mac address-table aging-time '
                        '{vlan_mac_aging_time} vlan {vlan_id}',
                        force=True))

                # mac_address_attr
                for sub, attributes2 in attributes.mapping_values(
                        'mac_address_attr', sort=True,
                        keys=self.mac_address_attr):
                    configurations.append_block(
                        sub.build_config(apply=False,
                                         attributes=attributes2,
                                         unconfig=unconfig))

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

            # mac address-table aging-time <mac_aging_time>
            configurations.append_line(
                attributes.format(
                    'mac address-table aging-time {mac_aging_time}'))

            # vlan attributes
            for sub, attributes2 in attributes.mapping_values(
                    'vlan_attr', sort=True, keys=self.vlan_attr):
                configurations.append_block(
                    sub.build_config(apply=False,
                                     attributes=attributes2,
                                     unconfig=unconfig))
            if apply:
                if configurations:
                    self.device.configure(configurations)
            else:
                return CliConfig(device=self.device,
                                 unconfig=unconfig,
                                 cli_config=configurations)
Ejemplo n.º 14
0
        def build_config(self, apply=True, attributes=None, unconfig=False):
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)

            # nxos: evpn esi multihoming

            # nxos: evpn (config-evpn)
            with configurations.submode_context('evpn'):
                if unconfig and attributes.iswildcard:
                    configurations.submode_unconfig()

                # nxos: evpn / vni 4096 l2 (config-evpn-evi)
                for sub, attributes2 in attributes.mapping_values(
                        'vni_attr', keys=self.vnis, sort=True):
                    configurations.append_block(
                        sub.build_config(apply=False,
                                         attributes=attributes2,
                                         unconfig=unconfig))

            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.º 15
0
        def build_config(self, apply=True, attributes=None, unconfig=False,
                         **kwargs):
            assert not kwargs, kwargs
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)

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

                for sub, attributes2 in attributes.mapping_values('interface_attr',
                                                                  sort=True,
                                                                  keys=self.interface_attr):
                    configurations.append_block(
                        sub.build_config(apply=False,
                                         attributes=attributes2,
                                         unconfig=unconfig))

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

            # iosxr: router pim (config-pim)
            with configurations.submode_context('router pim'):
                if unconfig and attributes.iswildcard:
                    configurations.submode_unconfig()

                for sub, attributes2 in attributes.mapping_values(
                        'vrf_attr', keys=self.vrf_attr, sort=True):
                    configurations.append_block(
                        sub.build_config(apply=False,
                                         attributes=attributes2,
                                         unconfig=unconfig))

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

                if attributes.value('if_ra_interval'):
                    configurations.append_line(
                        attributes.format('ipv6 nd ra-interval {if_ra_interval}'))
                if attributes.value('if_ra_lifetime'):
                    configurations.append_line(
                        attributes.format('ipv6 nd ra-lifetime {if_ra_lifetime}'))
                if attributes.value('if_ra_suppress') == True:
                    configurations.append_line(
                        attributes.format('ipv6 nd suppress-ra'))

                # NeighborAttributes
                for sub, attributes2 in attributes.mapping_values('neighbor_attr',
                                                                  sort=True,
                                                                  keys=self.neighbor_attr):
                    configurations.append_block(
                        sub.build_config(apply=False,
                                         attributes=attributes2,
                                         unconfig=unconfig))

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

                # iosxr: router pim / vrf someword (config-pim-<vrf>)
                with configurations.submode_context(
                        None if self.vrf_name == 'default' else attributes.
                        format('vrf {vrf_name}', force=True)):
                    if self.vrf_name != 'default' and unconfig and attributes.iswildcard:
                        configurations.submode_unconfig()

                    for sub, attributes2 in attributes.mapping_values(
                            'address_family_attr',
                            keys=self.address_family_attr,
                            sort=True):
                        configurations.append_block(
                            sub.build_config(apply=False,
                                             attributes=attributes2,
                                             unconfig=unconfig))

                return str(configurations)
Ejemplo n.º 19
0
        def build_config(self, apply=True, attributes=None, unconfig=False,
                         **kwargs):
            assert not kwargs, kwargs
            attributes = AttributesHelper(self, attributes)
            configurations = CliConfigBuilder(unconfig=unconfig)
            # Seperate CliConfigBuilder for InterfaceAttribute configuration
            self.interface_config = CliConfigBuilder(unconfig=unconfig)

            #  +- DeviceAttributes
            #      +- VrfAttributes
            for sub, attributes2 in attributes.mapping_values('vrf_attr', 
                                                              sort=True, 
                                                              keys=self.vrf_attr):
                configurations.append_block(
                    sub.build_config(apply=False,
                                     attributes=attributes2,
                                     unconfig=unconfig))

            # Add InterfaceAttribute configuration
            configurations.append_block(self.interface_config)

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

                    # instance_attr
                    for sub, attributes2 in attributes.mapping_values(
                            'vlan_attr', sort=True, keys=self.vlan_attr):
                        configurations.append_block(
                            sub.build_config(apply=False,
                                             attributes=attributes2,
                                             unconfig=unconfig))
                    # interface_attr
                    for sub, attributes2 in attributes.mapping_values(
                            'interface_attr', sort=True,
                            keys=self.interface_attr):
                        configurations.append_block(
                            sub.build_config(apply=False,
                                             attributes=attributes2,
                                             unconfig=unconfig))
                    return str(configurations)
Ejemplo n.º 21
0
            def build_config(self,
                             apply=True,
                             attributes=None,
                             unconfig=False,
                             **kwargs):
                assert not apply
                attributes = AttributesHelper(self, attributes)
                configurations = CliConfigBuilder(unconfig=unconfig)

                # iosxr: evpn / virtual vfi ac-vfi-5 / ethernet-segment (config-evpn-ac-es)
                with configurations.submode_context('ethernet-segment'):
                    if not attributes.value('enabled', force=True):
                        configurations.submode_cancel()
                    if unconfig and attributes.iswildcard:
                        configurations.submode_unconfig()

                    # iosxr: evpn / virtual vfi ac-vfi-5 / ethernet-segment / bgp route-target aaaa.bbbb.cccc
                    ns, attributes2 = attributes.namespace('bgp')
                    if ns is not None:
                        configurations.append_block(
                            ns.build_config(apply=False,
                                            attributes=attributes2,
                                            unconfig=unconfig,
                                            **kwargs))

                    # iosxr: evpn / virtual vfi ac-vfi-5 / ethernet-segment / identifier type 0 00.11.22.33.44.55.66.77.88
                    configurations.append_line(
                        attributes.format(
                            'identifier type {esi.type} {esi.dotted}'))

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

                # source_interface
                if attributes.value('source_interface') and \
                   self.vrf_name == 'default':
                    configurations.append_line(
                        attributes.format(
                            'ntp source-interface {source_interface}'))

                # ServerAttributes
                for sub, attributes1 in attributes.mapping_values(
                        'server_attr', sort=True, keys=self.server_attr):
                    configurations.append_block(
                        sub.build_config(apply=False,
                                         attributes=attributes1,
                                         unconfig=unconfig))

                # PeerAttributes
                for sub, attributes2 in attributes.mapping_values(
                        'peer_attr', sort=True, keys=self.peer_attr):
                    configurations.append_block(
                        sub.build_config(apply=False,
                                         attributes=attributes2,
                                         unconfig=unconfig))

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

            # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / multicast p2mp (config-l2vpn-bg-bd-vfi-p2mp)
            with configurations.submode_context('multicast p2mp'):
                if not attributes.value('enabled', force=True):
                    configurations.submode_cancel()

                # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / multicast p2mp / signaling-protocol bgp (config-l2vpn-bg-bd-vfi-p2mp-bgp)
                #sub, attributes2 = attributes.namespace('signaling_protocol_bgp')
                #if sub is not None:
                #    configurations.append_block(
                #        sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig))

                # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / multicast p2mp / transport rsvp-te (config-l2vpn-bg-bd-vfi-p2mp-te)
                sub, attributes2 = attributes.namespace('transport_rsvp_te')
                if sub is not None:
                    configurations.append_block(
                        sub.build_config(apply=False,
                                         attributes=attributes2,
                                         unconfig=unconfig))

            return str(configurations)
Ejemplo n.º 24
0
            def build_config(self,
                             apply=True,
                             attributes=None,
                             unconfig=False,
                             **kwargs):
                assert not kwargs, kwargs
                attributes = AttributesHelper(self, attributes)
                configurations = CliConfigBuilder(unconfig=unconfig)
                vrf_context = ""
                if attributes.value('vrf') != 'default':
                    vrf_context = attributes.format('vrf context {vrf}',
                                                    force=True)
                # AddressFamilyAttributes
                with configurations.submode_context(vrf_context):
                    for sub, attributes2 in attributes.mapping_values(
                            'address_family_attr',
                            sort=True,
                            keys=self.address_family_attr):
                        configurations.append_block(
                            sub.build_config(apply=False,
                                             attributes=attributes2,
                                             unconfig=unconfig))

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

            # arp entries interface-limit <max_entries>
            if attributes.value('max_entries'):
                configurations.append_line(
                    attributes.format(
                        'arp entries interface-limit {max_entries}'))

            # InterfaceAttributes
            for sub, attributes2 in attributes.mapping_values(
                    'interface_attr', sort=True, keys=self.interface_attr):
                configurations.append_block(
                    sub.build_config(apply=False,
                                     attributes=attributes2,
                                     unconfig=unconfig))

            if apply:
                if configurations:
                    self.device.configure(configurations)
            else:
                return CliConfig(device=self.device,
                                 unconfig=unconfig,
                                 cli_config=configurations)
Ejemplo n.º 26
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.º 27
0
    def build_config(self, apply=True, attributes=None):
        attributes = AttributesHelper(self, attributes)
        configurations = CliConfigBuilder()

        # TODO - logging levels

        # TODO - IOS: no parser cache

        configurations.append_block(super().build_config(
            apply=False, attributes=attributes))

        # nodename
        if attributes.value('nodename'):
            configurations.append_line(
                attributes.format('hostname {nodename}'))

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

                        # iosxr: l2vpn / xconnect group someword / mp2mp someword2 / autodiscovery bgp / signaling-protocol bgp / ce-id 1 (config-l2vpn)
                        with configurations.submode_context(
                                attributes.format('ce-id {ce_id}',
                                                  force=True)):
                            if unconfig and attributes.iswildcard:
                                configurations.submode_unconfig()

                            # iosxr: l2vpn / xconnect group someword / mp2mp someword2 / autodiscovery bgp / signaling-protocol bgp / ce-id 1 / interface Bundle-Ether1 remote-ce-id 1
                            for ns, attributes2 in attributes.mapping_values(
                                    'interface_attr',
                                    keys=self.interfaces,
                                    sort=True):
                                configurations.append_block(
                                    ns.build_config(apply=False,
                                                    unconfig=unconfig,
                                                    attributes=attributes2))

                        return str(configurations)
Ejemplo n.º 29
0
    def build_config(self, apply=True, attributes=None):
        attributes = AttributesHelper(self, attributes)
        configurations = CliConfigBuilder()

        # TODO - logging levels

        # TODO - IOS: no parser cache

        configurations.append_block(super().build_config(
            apply=False, attributes=attributes))

        # TODO
        # enaGetTftpServerInfo arr_tftp_info -router $router -default_sub_dir "hfr-mpls" ;# XXXJST /hfr-mpls ???
        # if { [info exists arr_tftp_info(tftp_addr)] } {
        #     lappend cfgs($router) \
        #         "exception protocol tftp" \
        #         "exception dump $arr_tftp_info(tftp_addr)" \
        #         "exception core-file [file join $arr_tftp_info(sub_dir) $::env(TESTBED)-$router.core]"
        # }
        # nodename
        if attributes.value('nodename'):
            configurations.append_line(
                attributes.format('hostname {nodename}'))

        if apply:
            if configurations:
                self.configure(str(configurations), fail_invalid=True)
        else:
            # Return configuration
            return CliConfig(device=self,
                             unconfig=False,
                             cli_config=configurations,
                             fail_invalid=True)
Ejemplo n.º 30
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('key chain {key_chain}',
                                          force=True)):

                    if unconfig and attributes.iswildcard:
                        configurations.submode_unconfig()

                        # No attributes

                    for sub, attributes2 in attributes.mapping_values(
                            'key_id_attr', sort=True, keys=self.key_id_attr):
                        configurations.append_block(
                            sub.build_config(apply=False,
                                             attributes=attributes2,
                                             unconfig=unconfig))
                return str(configurations)