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): 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) 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 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)
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)
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): 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)
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)
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)
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)
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)
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)
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) 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 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( '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 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) # 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)
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)
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)
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)
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)
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) 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 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, contained=False, **kwargs): assert not kwargs, kwargs attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) # create vfi configurations for vfi, attributes2 in attributes.sequence_values('vfis'): configurations.append_block( str( vfi.build_config(apply=False, attributes=attributes2, unconfig=unconfig, **kwargs))) with configurations.submode_context( attributes.format('bridge-domain {name}', force=True)): if unconfig and attributes.iswildcard: configurations.submode_unconfig() for evi, attributes2 in attributes.mapping_values( 'evi_attr', keys=self.evis, sort=True): cfg = attributes2.format('member evpn-instance {evi_id}') if cfg: cfg += attributes2.format(' vlan {vlan}', force=True) configurations.append_line(cfg) for vfi, attributes2 in attributes.sequence_values('vfis'): configurations.append_line( attributes2.format('member vfi {name}')) for sub, attributes2 in attributes.mapping_values( 'interface_attr', keys=self.interfaces, sort=True): if isinstance(sub.interface, EFPInterface): configurations.append_line( attributes2.format( 'member {interface.parent_interface.name} service-instance {interface.service_instance}' )) elif isinstance(sub.interface, EthernetInterface): configurations.append_line( attributes2.format('member {interface.name}')) else: raise NotImplementedError(sub.interface) if apply: if configurations: self.device.configure(str(configurations), fail_invalid=True) else: return CliConfig(device=self.device, unconfig=unconfig, cli_config=configurations, fail_invalid=True)
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 access-map {access_map_id}', force=True)): if unconfig and attributes.iswildcard: # Never reached! configurations.submode_unconfig() # No point of configuring access_map_sequence # nxos: vlan access-map <access_map_id> \ # <access_map_sequence> # A workaround that needs to be better handled if attributes.value('access_map_sequence'): configurations.append_line( attributes.format( 'no vlan access-map {access_map_id}')) configurations.append_line( attributes.format( 'vlan access-map {access_map_id} ' '{access_map_sequence}')) # nxos: vlan access-map <access_map_id> / action drop # nxos: vlan access-map <access_map_id> /action forward # nxos: vlan access-map <access_map_id> / action \ # redirect <redirect_interface> if attributes.value('access_map_action') and \ attributes.value('redirect_interface'): configurations.append_line( attributes.format('action {access_map_action} ' '{redirect_interface}')) else: configurations.append_line( attributes.format('action {access_map_action}')) # nxos: vlan access-map <access_map_id> / statistics # nxos: vlan access-map <access_map_id> / exit # nxos: vlan access-map <access_map_id> / match if attributes.value('access_map_match'): if attributes.value('access_list_name'): configurations.append_line( attributes.format('match {access_map_match}' ' address {access_list}')) # nxos: vlan access-map <access_map_id> / no # nxos: vlan access-map <access_map_id> / this # nxos: vlan access-map <access_map_id> / pop # nxos: vlan access-map <access_map_id> / push # nxos: vlan access-map <access_map_id> / where return str(configurations)
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) with configurations.submode_context(attributes.format( 'address-family {address_family.value}', force=True)): if unconfig and attributes.iswildcard: configurations.submode_unconfig() # import_from_global_map if attributes.value('import_from_global_map'): configurations.append_line( attributes.format('import {address_family.value} ' 'map {import_from_global_map}', force=True)) # export_to_global_map if attributes.value('export_to_global_map'): configurations.append_line( attributes.format('export {address_family.value} ' 'map {export_to_global_map}', force=True)) # routing_table_limit_number if attributes.value('routing_table_limit_number') and \ attributes.value('alert_percent_value'): configurations.append_line( attributes.format('maximum routes {routing_table_limit_number} ' '{alert_percent_value}')) elif attributes.value('routing_table_limit_number') and \ attributes.value('simple_alert'): configurations.append_line( attributes.format('maximum routes {routing_table_limit_number} ' 'warning-only')) # keep old handle if self.address_family.value == 'ipv4 unicast': if attributes.value('export_route_targets'): for v, attributes3 in attributes.sequence_values('export_route_targets'): configurations.append_line('route-target export {}'.format(v.route_target)) if attributes.value('import_route_targets'): for v, attributes3 in attributes.sequence_values('import_route_targets'): configurations.append_line('route-target import {}'.format(v.route_target)) if attributes.value('maximum_routes'): configurations.append(attributes.format('maximum routes {maximum_routes}')) # loop over all route-target for sub, attributes2 in attributes.mapping_values( 'route_target_attr', keys=self.route_target_attr.keys(), sort=True): configurations.append_block(sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig, **kwargs)) return str(configurations)
def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): """method to build the configuration based on attributes Api to build the configuration of an `AddressFamilyAttributes` object. This configuration depends of the configurable attributes of this object. Args: kwargs (`dict`): Argument to drive configuration Return: `str` """ attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) with configurations.submode_context( attributes.format( 'address-family {address_family.value}', force=True)): if unconfig and attributes.iswildcard: configurations.submode_unconfig() configurations.append_line( attributes.format( 'default-metric {default_metric}')) configurations.append_line( attributes.format('distance {distance}')) configurations.append_line( attributes.format('maximum-paths {maximum_paths}')) configurations.append_line( attributes.format( 'redistribute lisp route-map {redistribute_lisp_rmap}' )) configurations.append_line( attributes.format( 'redistribute direct route-map {redistribute_direct_rmap}' )) configurations.append_line( attributes.format( 'redistribute static route-map {redistribute_static_rmap}' )) 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)