Esempio n. 1
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 / mac (config-l2vpn-bg-bd-mac)
                with configurations.submode_context('mac', cancel_empty=True):

                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / aging (config-l2vpn-bg-bd-mac-aging)
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / aging / time 300
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / aging / type absolute
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / aging / type inactivity
                    with configurations.submode_context('aging',
                                                        cancel_empty=True):
                        configurations.append_line(
                            attributes.format('time {aging_time}'))

                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / learning
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / learning disable
                    v = attributes.value('learning_disable')
                    if v is True:
                        configurations.append_line('learning disable')
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / limit (config-l2vpn-bg-bd-mac-limit)
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / limit / action flood
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / limit / action no-flood
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / limit / action none
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / limit / action shutdown
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / limit / maximum 1
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / limit / notification both
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / limit / notification none
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / limit / notification syslog
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / limit / notification trap
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / port-down flush
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / port-down flush disable
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / secure (config-l2vpn-bg-bd-mac-secure)
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / secure / action none
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / secure / action restrict
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / secure / action shutdown
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / secure / disable
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / secure / logging
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / secure / logging disable
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / static-address aaaa.bbbb.cccc drop
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / withdraw access-pw disable
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / withdraw disable
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / withdraw optimize
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / withdraw relay
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / mac / withdraw state-down

                    pass

                return str(configurations)
Esempio 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)
                    if unconfig and attributes.iswildcard:
                        with configurations.submode_context(
                                attributes.format('vni {evpn_vni} l2',
                                                  force=True)):

                            configurations.submode_unconfig()
                            # nxos: rd "auto"
                            if attributes.value('evpn_vni_rd'):
                                configurations.append_line(
                                    attributes.format('rd {evpn_vni_rd}'))

                            for sub, attributes2 in attributes.mapping_values(
                                    'route_target_attr',
                                    sort=True,
                                    keys=self.route_target_attr):
                                configurations.append_block(
                                    sub.build_config(apply=False,
                                                     attributes=attributes2,
                                                     unconfig=unconfig))
                    else:
                        with configurations.submode_context(
                                attributes.format('vni {evpn_vni} l2',
                                                  force=True)):
                            # nxos: rd "auto"
                            if attributes.value('evpn_vni_rd'):
                                configurations.append_line(
                                    attributes.format('rd {evpn_vni_rd}'))

                            for sub, attributes2 in attributes.mapping_values(
                                    'route_target_attr',
                                    sort=True,
                                    keys=self.route_target_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)
Esempio n. 3
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 (config-l2vpn)
            submode_stack = contextlib.ExitStack()
            if not contained:
                submode_stack.enter_context(
                    configurations.submode_context('l2vpn'))

            # 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()

                # iosxr: l2vpn / pw-class someword / backup disable delay <0-180>
                # iosxr: l2vpn / pw-class someword / backup disable never

                # iosxr: l2vpn / pw-class someword / encapsulation l2tpv3 (config-l2vpn)
                # iosxr: l2vpn / pw-class someword / encapsulation mpls (config-l2vpn)
                ns, attributes2 = attributes.namespace('encapsulation')
                if ns is not None:
                    configurations.append_block(
                        str(
                            ns.build_config(apply=False,
                                            attributes=attributes2,
                                            unconfig=unconfig)))

                # iosxr: l2vpn / pw-class someword / mac-withdraw
                if attributes.value('mac_withdraw'):
                    configurations.append_line('mac-withdraw')

            submode_stack.close()
            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)
Esempio n. 4
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)
Esempio 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)

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

                # iosxe: interface <intf> (config-if)
                with configurations.submode_context(attributes.format('interface {interface.name}',force=True),cancel_empty=True):
                    for sub, attributes2 in attributes.mapping_values('address_family_attr',keys=self.address_families, sort=True):
                        if sub.address_family.name.startswith('ipv4'):
                            configurations.append_line(attributes.format('ip router isis {pid}',force=True))
                        if sub.address_family.name.startswith('ipv6'):
                            configurations.append_line(attributes.format('ipv6 router isis {pid}',force=True))

                    # iosxe: interface <intf> / isis network point-to-point
                    if attributes.value('point_to_point'):
                        configurations.append_line(attributes.format('isis network point-to-point'))

                    # iosxe: interface <intf> / isis circuit-type level-1
                    # iosxe: interface <intf> / isis circuit-type level-2-only
                    # iosxe: interface <intf> / isis circuit-type level-1-2
                    configurations.append_line(attributes.format('isis circuit-type {circuit_type}', transform={
                        _Isis.IsType.level_1: 'level-1',
                        _Isis.IsType.level_2: 'level-2-only',
                        _Isis.IsType.level_1_2: 'level-1-2',
                    }))

                    # iosxe: interface <intf> / isis metric 10
                    configurations.append_line(attributes.format('isis metric {metric}'))

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

                with configurations.submode_context(attributes.format('interface {interface_name}', force=True, cancel_empty=True)):

                    # iosxe: interface GigabitEthernet0/0/0 / mpls ip
                    if attributes.iswildcard:
                        configurations.append_line('mpls ip')
                    
                    # iosxe: interface GigabitEthernet0/0/0 / mpls ldp igp autoconfig
                    if attributes.value('igp_autoconfig'):
                        configurations.append_line('mpls ldp igp autoconfig')

                    # iosxe: interface GigabitEthernet0/0/0 / mpls ldp igp sync
                    if attributes.value('igp_sync'):
                        configurations.append_line('mpls ldp igp sync')

                    # iosxe: interface GigabitEthernet0/0/0 / mpls ldp igp sync time 5
                    configurations.append_line(attributes.format('mpls ldp igp sync delay {igp_sync_delay_time}'))

                    # iosxe: interface GigabitEthernet0/0/0 / mpls ldp discovery transport-address 10.12.1.1
                    configurations.append_line(attributes.format('mpls ldp discovery transport-address {transport_address}'))

                return str(configurations)
Esempio n. 8
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(
                        attributes.format(
                            'evpn multisite border-gateway {evpn_msite_bgw}',
                            force=True)):
                    if unconfig and attributes.iswildcard:
                        configurations.submode_unconfig()

                    # nxos : delay-restore time <int 30-1000>
                    if attributes.value('evpn_msite_bgw_delay_restore_time'):
                        configurations.append_line(\
                            attributes.format('delay-restore time {evpn_msite_bgw_delay_restore_time}'))

                    # nxos : dci-advertise-pip
                    if attributes.value('evpn_msite_dci_advertise_pip'):
                        configurations.append_line( \
                            attributes.format('dci-advertise-pip'))

                    # nxos: split-horizon per-site
                    if attributes.value('evpn_msite_split_horizon_per_site'):
                        configurations.append_line( \
                            attributes.format('split-horizon per-site'))

                return str(configurations)
Esempio n. 9
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(
                        attributes.format(
                            'dot1x credential {credential_profile}',
                            force=True)):

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

                    # username <credential_username>
                    configurations.append_line(
                        attributes.format('username {credential_username}'))

                    # password [<credential_pwd_type>] <credential_secret>
                    if attributes.value('credential_pwd_type'):
                        configurations.append_line(
                            attributes.format(
                                'password {credential_pwd_type} {credential_secret}'
                            ))
                    else:
                        configurations.append_line(
                            attributes.format('password {credential_secret}'))

                return str(configurations)
Esempio n. 10
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)
Esempio n. 11
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(
                                attributes.format('interface {interface.name}',
                                                  force=True)):

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

                            # ======
                            # if_enable
                            # ======
                            if attributes.value('if_enable'):
                                configurations.append_line(
                                    attributes.format('enable'))

                        return str(configurations)
Esempio n. 12
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)
Esempio n. 13
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)
Esempio n. 14
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 / redundancy / iccp group 1 / interface Bundle-Ether1 (config-l2vpn)
                with configurations.submode_context(
                        attributes.format('interface {interface_name}',
                                          force=True)):
                    if unconfig and attributes.iswildcard:
                        configurations.submode_unconfig()

                    # iosxr: l2vpn / redundancy / iccp group 1 / interface Bundle-Ether1 / mac-flush stp-tcn
                    configurations.append_line(
                        attributes.format('mac-flush {mac_flush}'))

                    # iosxr: l2vpn / redundancy / iccp group 1 / interface Bundle-Ether1 / primary vlan someword
                    configurations.append_line(
                        attributes.format('primary vlan {primary_vlan}'))

                    # iosxr: l2vpn / redundancy / iccp group 1 / interface Bundle-Ether1 / recovery delay 30
                    configurations.append_line(
                        attributes.format('recovery delay {recovery_delay}'))

                    # iosxr: l2vpn / redundancy / iccp group 1 / interface Bundle-Ether1 / secondary vlan someword
                    configurations.append_line(
                        attributes.format('secondary vlan {secondary_vlan}'))

                return str(configurations)
Esempio n. 15
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)
Esempio 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)

            # 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)
Esempio 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)

            # 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)
Esempio 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: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol ldp (config-l2vpn-bg-bd-vfi-ad-sig)
                with configurations.submode_context('signaling-protocol ldp'):
                    if not attributes.value('enabled', force=True):
                        configurations.submode_cancel()

                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol ldp / load-balancing flow-label both
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol ldp / load-balancing flow-label both static
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol ldp / load-balancing flow-label receive
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol ldp / load-balancing flow-label receive static
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol ldp / load-balancing flow-label transmit
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol ldp / load-balancing flow-label transmit static

                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol ldp / vpls-id 1.2.3.4:1
                    # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol ldp / vpls-id 100:200000
                    configurations.append_line(
                        attributes.format('vpls-id {vpls_id}'))

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

                            self.vlan = kwargs['vlan_id']

                            # only add vlan_id in attributes when
                            # unconfig for specific attributes is enable
                            if unconfig and attributes.attributes:
                                attributes.attributes['vlan'] = None

                            # the interface should have vrf(name = vrf_name) attached
                            with configurations.submode_context(
                                    attributes.format(
                                        'interface {interface_name}',
                                        force=True)):
                                # spanning-tree mst <mst_id> cost <m_inst_if_cost>
                                configurations.append_line(
                                    attributes.format(
                                        'spanning-tree vlan {vlan} cost {v_if_cost}'
                                    ))

                                # spanning-tree vlan <vlan_id> port-priority <v_if_port_priority>
                                configurations.append_line(
                                    attributes.format(
                                        'spanning-tree vlan {vlan} port-priority {v_if_port_priority}'
                                    ))

                            return str(configurations)
Esempio n. 20
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)
Esempio 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)
Esempio 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)

            # iosxr: segment-routing (config-sr)
            with configurations.submode_context('segment-routing'):
                if unconfig and attributes.iswildcard:
                    configurations.submode_unconfig()

                # iosxr: segment-routing / 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]))

            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)
Esempio 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)
Esempio 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)

                # global_max_groups -- not supported on nxos

                with configurations.submode_context(
                    attributes.format('vrf context {vrf_id}' if 
                            self.vrf_id != 'default' else '', force=True)):
                    if unconfig and attributes.iswildcard and self.vrf_id != 'default':
                        configurations.submode_unconfig()

                    # Ssm Attributes under vrf level config
                    for ssm, attributes2 in attributes.sequence_values('ssm', sort=True):
                        if unconfig:
                            configurations.append_block(ssm.build_unconfig(
                                apply=False, attributes=attributes2, **kwargs))
                        else:
                            configurations.append_block(ssm.build_config(
                                apply=False, attributes=attributes2, **kwargs))

                # 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))

                return str(configurations)
Esempio 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)
                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)
            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(
                            'tunnel-encryption peer-ip {peer_ip}',
                            force=True)):
                    if unconfig and attributes.iswildcard:
                        configurations.submode_unconfig()

                    # nxos: keychain and policy
                    if attributes.value('keychain_name'):
                        peerip_cfg = 'keychain {keychain_name} '

                        if attributes.value('tunnelpolicy_name'):
                            peerip_cfg += 'policy {tunnelpolicy_name}'

                    configurations.append_line(attributes.format(peerip_cfg))

                return str(configurations)
Esempio n. 27
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)
            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(
                            'tunnel-encryption policy {policy_name}',
                            force=True)):
                    if unconfig and attributes.iswildcard:
                        configurations.submode_unconfig()

                    # nxos:
                    if attributes.value('cipher_suite'):
                        if attributes.value(
                                'cipher_suite').value == 'gcm-aes-xpn-128':
                            configurations.append_line(
                                attributes.format(
                                    'cipher-suite GCM-AES-XPN-128'))
                        elif attributes.value(
                                'cipher_suite').value == 'gcm-aes-xpn-256':
                            configurations.append_line(
                                attributes.format(
                                    'cipher-suite GCM-AES-XPN-257'))

                    # nxos: auto-recovery reload-delay <value>
                    if attributes.value('sak_rekey_time'):
                        configurations.append_line(
                            attributes.format(
                                'sak-rekey-time {sak_rekey_time}'))
                return str(configurations)
Esempio n. 29
0
            def build_config(self,
                             apply=True,
                             attributes=None,
                             unconfig=False,
                             **kwargs):
                '''Controller build config'''
                assert not apply
                attributes = AttributesHelper(self, attributes)
                configurations = CliConfigBuilder(unconfig=unconfig)

                # iosxr: rsvp / controller <name> (config-rsvp-cntl)
                with configurations.submode_context(
                        attributes.format('controller {interface_name}',
                                          force=True)):

                    # iosxr: rsvp / controller <name> / signalling refresh out-of-band interval 180
                    configurations.append_line(
                        attributes.format(
                            'signalling refresh out-of-band interval {sig_refresh_outofband_interval}'
                        ))

                    # iosxr: rsvp / controller <name> / signalling refresh out-of-band missed 1
                    configurations.append_line(
                        attributes.format(
                            'signalling refresh out-of-band missed {sig_refresh_outofband_missed}'
                        ))

                return str(configurations)
Esempio 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(
                            'ssx exporter {exp_id}', force=True)):
                        if unconfig and attributes.iswildcard:
                            configurations.submode_unconfig()

                        if attributes.value('source_ip'):
                            configurations.append_line(
                                attributes.format('source {source_ip}'))

                        if attributes.value('dest_ip'):
                            configurations.append_line(
                                attributes.format('destination {dest_ip} use-vrf default'))

                        if attributes.value('source_port') and attributes.value('dest_port'):
                            configurations.append_line(
                                attributes.format('transport udp src-port {source_port} dst-port {dest_port}'))

                        if attributes.value('dscp'):
                            configurations.append_line(
                                attributes.format('dscp {dscp}'))

                    return str(configurations)