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 {key_id}', force=True)): if unconfig and attributes.iswildcard: configurations.submode_unconfig() # key chain <key_chain> # key <key_id> # key-string [key_enc_type] <key_string> if attributes.value('key_string'): # + key-string key_string_str = 'key-string' # + [key_enc_type] <key_string> if attributes.value('key_enc_type'): key_string_str += attributes.format( ' {key_enc_type} {key_string}') else: key_string_str += attributes.format( ' {key_string}') configurations.append_line( attributes.format(key_string_str)) 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) # auth_key_id, auth_algorithm, auth_key if attributes.value('auth_algorithm') and \ attributes.value('auth_key'): configurations.append_line( attributes.format( 'ntp authentication-key ' '{auth_key_id} {auth_algorithm.value} {auth_key}', force=True)) # auth_trusted_key if attributes.value('auth_trusted_key'): configurations.append_line( attributes.format('ntp trusted-key {auth_key_id}', force=True)) return str(configurations)
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( 'vlan configuration {vlan_configuration_id}', force=True)): if unconfig and attributes.iswildcard: # Never reached! configurations.submode_unconfig() # iosxe: vlan configuration <vlan_configuration_id> / \ # datalink flow monitor if attributes.value('datalink_flow_monitor'): configurations.append_line( attributes.format('datalink flow monitor')) # iosxe: vlan configuration <vlan_configuration_id> / \ # device-tracking # iosxe: vlan configuration <vlan_configuration_id> / \ # action # iosxe: vlan configuration <vlan_configuration_id> / exit # iosxe: vlan configuration <vlan_configuration_id> / ip # iosxe: vlan configuration <vlan_configuration_id> / ipv6 # iosxe: vlan configuration <vlan_configuration_id> / no return str(configurations)
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)
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)
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)
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)
def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): assert not kwargs, kwargs assert not apply attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) # =================================== # join_group # join_group_source_addr # static_group # static_group_source_addr # =================================== if attributes.value('join_group'): cmd_str = 'ip igmp join-group {join_group}' # build up configuration string if attributes.value('join_group_source_addr'): cmd_str += ' source {join_group_source_addr}' configurations.append_line(attributes.format(cmd_str)) elif attributes.value('static_group'): cmd_str = 'ip igmp static-group {static_group}' # build up configuration string if attributes.value('static_group_source_addr'): cmd_str += ' source {static_group_source_addr}' configurations.append_line(attributes.format(cmd_str)) return str(configurations)
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)
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)
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 bgp (config-l2vpn-bg-bd-vfi-ad-sig) with configurations.submode_context('signaling-protocol bgp'): if not attributes.value('enabled', force=True): configurations.submode_cancel() # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol bgp / load-balancing flow-label both # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol bgp / load-balancing flow-label both static # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol bgp / load-balancing flow-label receive # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol bgp / load-balancing flow-label receive static # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol bgp / load-balancing flow-label transmit # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol bgp / load-balancing flow-label transmit static # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol bgp / ve-id 1 configurations.append_line( attributes.format('ve-id {ve_id}')) # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / autodiscovery bgp / signaling-protocol bgp / ve-range 11 configurations.append_line( attributes.format('ve-range {ve_range}')) return str(configurations)
def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) # router ospfv3 1 # address-family ipv6 unicast # area {area-id} filter-list route-map map-name out # area {area-id} filter-list route-map map-name in if attributes.value('routemap_area_id') and attributes.value( 'ar_route_map_in'): configurations.append_line( attributes.format( 'area {routemap_area_id} filter-list route-map {ar_route_map_in} in' )) if attributes.value('routemap_area_id') and attributes.value( 'ar_route_map_out'): configurations.append_line( attributes.format( 'area {routemap_area_id} filter-list route-map {ar_route_map_out} out' )) return str(configurations)
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)
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)
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)
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) self.vlan_id = self.parent.vlan_id # mac address-table static <mac_address> vlan <vlan_id> interface <interface> if attributes.value('interface'): interface = ' '.join(attributes.value('interface')) cmd = 'mac address-table static {mac_address} vlan {vlan_id}' cmd += ' interface {interface}'.format( interface=interface) configurations.append_line( attributes.format(cmd, force=True)) # mac address-table static <mac_address> vlan <vlan_id> drop if attributes.value('drop'): configurations.append_line( attributes.format( 'mac address-table static {mac_address} vlan {vlan_id} drop' )) return str(configurations)
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)
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)
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)
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)
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 {key_id}', force=True)): if unconfig and attributes.iswildcard: configurations.submode_unconfig() # key chain <key_chain> tunnel-encryption # key <key_id> # key-octet-string [key_enc_type] <key_string> [cryptographic-algorithm <crypto_algo>] if attributes.value('key_string'): # + key-octet-string key_string_str = 'key-octet-string' # + [key_enc_type] if attributes.value('key_enc_type'): key_string_str += attributes.format( ' {key_enc_type}') # + <key_string> key_string_str += attributes.format( ' {key_string}') # + [cryptographic-algorithm <crypto_algo>] if attributes.value('crypto_algo'): if attributes.value( 'crypto_algo').value == 'aes-128-cmac': key_string_str += ' cryptographic-algorithm AES_128_CMAC' elif attributes.value( 'crypto_algo').value == 'aes-128-cmac': key_string_str += ' cryptographic-algorithm AES_256_CMAC' configurations.append_line( attributes.format(key_string_str)) # key chain <key_chain> tunnel-encryption # key <key_id> # send-lifetime <lifetime_start> duration <lifetime_duration> if attributes.value( 'lifetime_start') and attributes.value( 'lifetime_duration'): # send-lifetime <lifetime_start> duration <lifetime_duration> lifetime_str = 'send-lifetime {lifetime_start} duration {lifetime_duration}' configurations.append_line( attributes.format(lifetime_str)) return str(configurations)
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) # Set decider key af_name from user set address family self.af_name = self.address_family.value # ====== # enable # ====== if attributes.value('enabled'): if unconfig is False: if self.af_name == 'ipv4': configurations.append_line( attributes.format('feature pim')) elif self.af_name == 'ipv6': configurations.append_line( attributes.format('feature pim6')) elif unconfig is True: if self.af_name == 'ipv4': configurations.append_line('no feature pim', raw=True) elif self.af_name == 'ipv6': configurations.append_line('no feature pim6', raw=True) # ========= # multipath # ========= if attributes.value('multipath'): if unconfig is False: configurations.append_line( attributes.format('ip multicast multipath')) elif unconfig is True: configurations.append_line( 'no ip multicast multipath', raw=True) # Mroute attributes configs for mroute, attributes2 in attributes.sequence_values( 'mroutes', sort=True): kwargs = {'vrf': self.vrf_id, 'af_name': self.af_name} if unconfig: configurations.append_block( mroute.build_unconfig(apply=False, attributes=attributes2, **kwargs)) else: configurations.append_block( mroute.build_config(apply=False, attributes=attributes2, **kwargs)) return str(configurations)
def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): assert not apply attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) # router ospfv3 1 # area 2 virtual-link 7.7.7.7 if attributes.value('vl_router_id') and \ attributes.value('area_type').value != 'stub' and \ attributes.value('area_type').value != 'nssa': with configurations.submode_context( attributes.format( 'area {area} virtual-link {vl_router_id}', force=True)): if unconfig and attributes.iswildcard: configurations.submode_unconfig() # router ospfv3 1 # area 2 virtual-link 7.7.7.7 # hello-interval 55 if attributes.value('vl_hello_interval'): configurations.append_line( attributes.format( 'hello-interval {vl_hello_interval}' )) # router ospfv3 1 # area 2 virtual-link 7.7.7.7 # dead-interval 55 if attributes.value('vl_dead_interval'): configurations.append_line( attributes.format( 'dead-interval {vl_dead_interval}') ) # router ospfv3 1 # area 2 virtual-link 7.7.7.7 # retransmit-interval 55 if attributes.value('vl_retransmit_interval'): configurations.append_line( attributes.format( 'retransmit-interval {vl_retransmit_interval}' )) # router ospfv3 1 # area 2 virtual-link 7.7.7.7 # transmit-delay 55 if attributes.value('vl_transmit_delay'): configurations.append_line( attributes.format( 'transmit-delay {vl_transmit_delay}' )) return str(configurations)
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) # only add vlan_id in attributes when # unconfig for specific attributes is enable if unconfig and attributes.attributes: attributes.attributes['vlan'] = None if attributes.value('vlan_id'): configurations.append_line( attributes.format( 'spanning-tree vlan {vlan_id}')) # spanning-tree vlan <vlan_id> hello-time <v_hello_time> configurations.append_line( attributes.format( 'spanning-tree vlan {vlan} hello-time {v_hello_time}' )) # spanning-tree vlan <vlan_id> max-age <v_max_age> configurations.append_line( attributes.format( 'spanning-tree vlan {vlan} max-age {v_max_age}' )) # spanning-tree vlan <vlan_id> forward-time <v_forwarding_delay> configurations.append_line( attributes.format( 'spanning-tree vlan {vlan} forward-time {v_forwarding_delay}' )) # spanning-tree vlan <vlan_id> priority <v_bridge_priority> configurations.append_line( attributes.format( 'spanning-tree vlan {vlan} priority {v_bridge_priority}' )) # 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, vlan_id=self.vlan)) return str(configurations)
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) # only add mst_id in attributes when # unconfig for specific attributes is enable if unconfig and attributes.attributes: attributes.attributes['mst_id'] = None # the interface should have vrf(name = vrf_name) attached if attributes.value('m_vlans') or \ attributes.value('m_name') or \ attributes.value('m_revision'): with configurations.submode_context( attributes.format( 'spanning-tree mst configuration', force=True)): # instance <mst_id> vlan <m_vlans> configurations.append_line( attributes.format( 'instance {mst_id} vlan {m_vlans}')) # name <m_name> configurations.append_line( attributes.format('name {m_name}')) # revision <m_revision> configurations.append_line( attributes.format('revision {m_revision}')) # spanning-tree mst <mst_id> priority <m_bridge_priority> configurations.append_line( attributes.format( 'spanning-tree mst {mst_id} priority {m_bridge_priority}' )) # 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, mst_id=self.mst_id)) return str(configurations)
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 (config-l2vpn-bg-bd-vfi) if attributes.value('virtual', force=True): title = attributes.format('access-vfi {name}', force=True) else: title = attributes.format('vfi {name}', force=True) with configurations.submode_context(title): if unconfig and attributes.iswildcard: configurations.submode_unconfig() sub, attributes2 = attributes.namespace('autodiscovery_bgp') if sub is not None: configurations.append_block( sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig)) sub, attributes2 = attributes.namespace('multicast_p2mp') 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 / neighbor 1.2.3.4 pw-id 1 (config-l2vpn-bg-bd-vfi-pw) for sub, attributes2 in attributes.mapping_values( 'neighbor_attr', keys=self.pseudowire_neighbors, sort=True): configurations.append_block( sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig)) # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / shutdown if attributes.value('shutdown'): configurations.append_line('shutdown') # iosxr: l2vpn / bridge group someword / bridge-domain someword2 / vfi someword3 / vpn-id 1 configurations.append_line(attributes.format('vpn-id {vpn_id}')) return CliConfig(device=self.device, unconfig=unconfig, cli_config=configurations)
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) # global_max_groups if attributes.value('global_max_groups'): cfg_str = 'ipv6 mld state-limit {global_max_groups}' \ if self.vrf_id == 'default' else \ 'ipv6 mld vrf {vrf_id} state-limit {global_max_groups}' configurations.append_line( attributes.format(cfg_str, force=True)) # ipv6 mld [vrf <vrf>] ssm-map enable if hasattr(attributes.value('ssm'), 'data'): if attributes.value('ssm').data: cfg_str = 'ipv6 mld ssm-map enable' \ if self.vrf_id == 'default' else \ 'ipv6 mld vrf {} ssm-map enable'.format(self.vrf_id) configurations.append_line(attributes.format(cfg_str)) # Ssm Attributes under vrf level config for ssm, attributes2 in attributes.sequence_values('ssm', sort=True): kwargs = {'vrf': self.vrf_id} 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)
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)
def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): assert not apply attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) # =================================== # static_rp_address # static_rp_group_list # static_rp_prefix_list # static_rp_route_map # static_rp_policy # static_rp_bidir # =================================== if attributes.value('static_rp_address'): # ip/ipv6 pim rp-address <static_rp_address> static_str = '{ip} pim rp-address'.format(ip=kwargs['ip_type']) static_str += ' {static_rp_address}' # group-list {static_rp_group_list} | # route-map {static_rp_route_map} | # prefix-list {static_rp_prefix_list} if attributes.value('static_rp_group_list'): static_str += ' group-list {static_rp_group_list}' elif attributes.value('static_rp_route_map'): static_str += ' route-map {static_rp_route_map}' elif attributes.value('static_rp_prefix_list'): static_str += ' prefix-list {static_rp_prefix_list}' else: configurations.append_line(attributes.format(static_str)) static_str = '' if static_str: # bidir if attributes.value('static_rp_bidir'): static_str += ' bidir' # bidir | # override | # bidir override if attributes.value('static_rp_override') and \ kwargs['ip_type'] == 'ipv6': static_str += ' override' configurations.append_line(attributes.format(static_str)) 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) # lldp run if attributes.value('enabled'): configurations.append_line(attributes.format('lldp run')) # lldp timer <hello_timer> if attributes.value('hello_timer'): configurations.append_line( attributes.format('lldp timer {hello_timer}')) # lldp holdtime <hold_timer> if attributes.value('hold_timer'): configurations.append_line( attributes.format('lldp holdtime {hold_timer}')) # lldp reinit <reinit_timer> if attributes.value('reinit_timer'): configurations.append_line( attributes.format('lldp reinit {reinit_timer}')) # tlv select attributes sub, attributes2 = attributes.namespace('tlv_select_attr') if sub is not None: configurations.append_block( sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig)) # interface attributes 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)