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, links=None, apply=True, attributes=None, unconfig=False, **kwargs): '''Device build config''' assert not apply attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) if attributes.value('sig_gr', force=True): configurations.append( attributes.format( 'ip rsvp signalling hello graceful-restart mode {sig_gr_mode}' )) configurations.append_line( attributes.format( 'ip rsvp signalling hello graceful-restart refresh interval {sig_hello_gr_refresh_interval}' )) configurations.append_line( attributes.format( 'ip rsvp signalling hello graceful-restart refresh misses {sig_hello_gr_refresh_misses}' )) # Add per-interface config for sub, attributes2 in attributes.mapping_values( 'interface_attr', keys=self.interfaces, sort=True): configurations.append_block( sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig, **kwargs)) # # Add per-neighbor config # for sub, attributes2 in attributes.mapping_values('neighbor_attr', keys=self.neighbors, sort=True): # configurations.append_block(sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig, **kwargs)) # # Add per-controller config # for sub, attributes2 in attributes.mapping_values('controller_attr', keys=self.controllers, sort=True): # configurations.append_block(sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig, **kwargs)) return CliConfig(device=self.device, unconfig=unconfig, cli_config=configurations)
def build_config(self, interfaces=None, apply=True, attributes=None, unconfig=False, **kwargs): assert not apply attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) if interfaces is None: interfaces = set(self.interfaces) else: interfaces = set(self.interfaces).intersection(interfaces) with configurations.submode_context('l2vpn evpn'): if unconfig and attributes.iswildcard: configurations.submode_unconfig() if attributes.value('arp_flooding_suppression') is not None: if attributes.value('arp_flooding_suppression') is False: configurations.append( 'arp flooding-suppression disable') configurations.append_line( attributes.format('replication-type {replication_type}')) configurations.append_line( attributes.format('mpls label mode {label_mode}')) for evi, attributes2 in attributes.sequence_values('evis', sort=True): if unconfig: configurations.append_block( evi.build_unconfig(apply=False, attributes=attributes2)) else: configurations.append_block( evi.build_config(apply=False, attributes=attributes2)) if apply: if configurations: self.device.configure(configurations, fail_invalid=True) else: return str(configurations)