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 kwargs attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) vrfs = xr_infra_rsi_cfg.Vrfs() if not unconfig: vrf = vrfs.Vrf() if attributes.value('name'): vrf.vrf_name = attributes.value('name') vrf.create = Empty() vrfs.vrf.append(vrf) #crud_service = CRUDService() #ncp = NetconfServiceProvider(self.device) #x = crud_service.read(ncp, vrf) #abc = YangConfig(device=self.device, ydk_obj=x, ncp=ncp, crud_service=crud_service) #print(abc) # iosxr: vrf vrf1 / address-family ipv4 unicast (config-vrf-af) for key, sub, attributes2 in attributes.mapping_items( 'address_family_attr', keys=self.address_families, sort=True): sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig, vrf=vrf) # instantiate crud service crud_service = CRUDService() if apply: # create netconf connection ncp = NetconfServiceProvider(self.device) crud_service.create(ncp, vrfs) if unconfig: crud_service.delete(ncp, vrfs) else: if unconfig: return YangConfig(device=self.device, ydk_obj=vrfs, ncp=NetconfServiceProvider, crud_service=crud_service.delete) else: return YangConfig(device=self.device, ydk_obj=vrfs, ncp=NetconfServiceProvider, crud_service=crud_service.create)
def build_config(self, devices=None, apply=True, attributes=None): #TODO add interfaces attributes = AttributesHelper(self, attributes) cfgs = {} for key, sub, attributes2 in attributes.mapping_items('device_attr', keys=devices, sort=True): cfgs[key] = sub.build_config(apply=False, attributes=attributes2) if apply: for device_name, cfg in sorted(cfgs.items()): self.testbed.config_on_devices(cfg, fail_invalid=True) else: return cfgs
def build_config(self, devices=None, apply=True, attributes=None): cfgs = {} attributes = AttributesHelper(self, attributes) if devices is None: devices = self.devices devices = set(devices) for key, sub, attributes2 in attributes.mapping_items( 'device_attr', sort=True): cfgs[key] = sub.build_config(apply=False, attributes=attributes2) if apply: for device_name, cfg in sorted(cfgs.items()): self.testbed.config_on_devices(cfg, fail_invalid=True) else: return cfgs
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('vrf {name}', force=True)): if unconfig and attributes.iswildcard: configurations.submode_unconfig() if attributes.value('shutdown'): warnings.warn('vrf shutdown', UnsupportedAttributeWarning) # iosxr: vrf vrf1 / description some line data configurations.append_line(attributes.format('description {description}')) # iosxr: vrf vrf1 / address-family ipv4 unicast (config-vrf-af) for key, sub, attributes2 in attributes.mapping_items( 'address_family_attr', keys=self.address_families, sort=True): configurations.append_block( sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig)) # iosxr: vrf vrf1 / fallback-vrf vrf2 configurations.append_line(attributes.format('fallback-vrf {fallback_vrf.name}')) # iosxr: vrf vrf1 / mhost ipv4 default-interface GigabitEthernet0/0/0/0 configurations.append_line(attributes.format('mhost ipv4 default-interface {mhost_ipv4_default_interface.name}')) # iosxr: vrf vrf1 / mhost ipv6 default-interface GigabitEthernet0/0/0/0 configurations.append_line(attributes.format('mhost ipv6 default-interface {mhost_ipv6_default_interface.name}')) # iosxr: vrf vrf1 / mode big configurations.append_line(attributes.format('mode {scale_mode}')) # iosxr: vrf vrf1 / remote-route-filtering disable if attributes.value('remote_route_filtering') is False: configurations.append_line('remote-route-filtering disable') # iosxr: vrf vrf1 / vpn id 0:0 configurations.append_line(attributes.format('vpn id {vpn_id}')) 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 attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) ydk_obj = ned.Native.Vrf() vrf_obj = ydk_obj.Definition() ydk_obj.definition.append(vrf_obj) if attributes.value('name'): vrf_obj.name = attributes.value('name') # iosxr: vrf vrf1 / address-family ipv4 unicast (config-vrf-af) for key, sub, attributes2 in attributes.mapping_items( 'address_family_attr', keys=self.address_families, sort=True): sub.build_config(apply=False, attributes=attributes2, unconfig=unconfig, vrf_obj=vrf_obj) # instantiate crud service crud_service = CRUDService() if apply: # create netconf connection ncp = NetconfServiceProvider(self.device) crud_service.create(ncp, ydk_obj) if unconfig: crud_service.delete(ncp, ydk_obj) else: if unconfig: return YangConfig(device=self.device, ydk_obj=ydk_obj, ncp=NetconfServiceProvider, crud_service=crud_service.delete) else: return YangConfig(device=self.device, ydk_obj=ydk_obj, ncp=NetconfServiceProvider, crud_service=crud_service.create)
def build_unconfig(self, devices=None, apply=True, attributes=None, **kwargs): cfgs = {} attributes = AttributesHelper(self, attributes) if devices is None: devices = self.devices devices = set(devices) for key, sub, attributes2 in attributes.mapping_items( 'device_attr', keys=devices, sort=True): cfgs[key] = sub.build_unconfig(apply=False, attributes=attributes2) if apply: self.testbed.config_on_devices(cfgs, fail_invalid=True) else: return cfgs
def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): assert not kwargs, kwargs attributes = AttributesHelper(self, attributes) configurations = CliConfigBuilder(unconfig=unconfig) # iosxe: segment-routing mpls with configurations.submode_context('segment-routing mpls'): if unconfig and attributes.iswildcard: configurations.submode_unconfig() if attributes.value('shutdown'): configurations.append_line('shutdown') # iosxe: segment-routing mpls / set-attributes with configurations.submode_context('set-attributes',cancel_empty=True): for address_family,address_family_sub,address_family_attributes in \ attributes.mapping_items('address_family_attr', keys=self.address_families, sort=True): if address_family == AddressFamily.ipv4_unicast: context_cli = 'address-family ipv4' else: context_cli = address_family_attributes.format('address-family {address_family.value}', force = True) with configurations.submode_context(context_cli,cancel_empty=True): if address_family_attributes.value('sr_label_preferred'): configurations.append_line('sr-label-preferred') if address_family_attributes.value('explicit_null'): configurations.append_line('explicit-null') # iosxe: segment-routing mpls / 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])) # iosxe: segment-routing mpls / connected-prefix-sid-map with configurations.submode_context('connected-prefix-sid-map',cancel_empty=True): for address_family,address_family_sub,address_family_attributes in \ attributes.mapping_items('address_family_attr', keys=self.address_families, sort=True): if address_family == AddressFamily.ipv4_unicast: context_cli = 'address-family ipv4' else: context_cli = address_family_attributes.format('address-family {address_family.value}', force = True) with configurations.submode_context(context_cli,cancel_empty=True): for entry,attributes2 in address_family_attributes.sequence_values('connected_prefix_sid_map'): configurations.append_line(attributes2.format('{prefix} index {index} range {range}')) # iosxe: segment-routing mpls / mapping-server / prefix-sid-map if attributes.value('mapping_server'): with configurations.submode_context('mapping server'): with configurations.submode_context('prefix-sid-map',cancel_empty=True): for address_family,address_family_sub,address_family_attributes in \ attributes.mapping_items('address_family_attr', keys=self.address_families, sort=True): if address_family == AddressFamily.ipv4_unicast: context_cli = 'address-family ipv4' else: context_cli = address_family_attributes.format('address-family {address_family.value}', force = True) with configurations.submode_context(context_cli,cancel_empty=True): for entry,attributes2 in address_family_attributes.sequence_values('prefix_sid_map'): if attributes2.value('attach'): configurations.append_line(attributes2.format('{prefix} index {index} range {range} attach')) else: configurations.append_line(attributes2.format('{prefix} index {index} range {range}')) if apply: if configurations: self.device.configure(configurations, fail_invalid=True) else: #return str(configurations) return CliConfig(device=self.device, unconfig=unconfig, cli_config=configurations, fail_invalid=True)
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) with configurations.submode_context( attributes.format('l2vpn xconnect context {name}', force=True, cancel_empty=True)): if attributes.value('redundancy_predictive'): configurations.append_line('redundancy predictive enable') for interface, attributes2 in attributes.sequence_values( 'interfaces', sort=True): if isinstance(interface, EFPInterface): configurations.append_line('member {parent_interface} service-instance {service_instance}'.format\ (parent_interface = interface.parent_interface.name,\ service_instance = interface.service_instance)) elif isinstance(interface, EthernetInterface): configurations.append_line('member {interface} '.format\ (interface = interface.name)) for neighbor, neighbor_sub, neighbor_attributes in attributes.mapping_items( 'neighbor_attr', keys=self.pseudowire_neighbors, sort=True): if getattr(neighbor, 'pseudowire_interface', None) is not None: if neighbor_attributes.value( 'redundancy_group' ) is None and neighbor_attributes.value( 'redundancy_priority') is None: configurations.append_line( 'member %s' % neighbor.pseudowire_interface.name) elif neighbor_attributes.value( 'redundancy_group' ) is not None and neighbor_attributes.value( 'redundancy_priority') is None: configurations.append_line( neighbor_attributes.format( 'member %s group {redundancy_group}' % neighbor.pseudowire_interface.name, force=True)) elif neighbor_attributes.value( 'redundancy_group' ) is not None and neighbor_attributes.value( 'redundancy_priority') is not None: configurations.append_line(neighbor_attributes.format('member %s group {redundancy_group} priority {redundancy_priority}' \ % neighbor.pseudowire_interface.name,force=True)) if apply: if configurations: self.device.configure(str(configurations), fail_invalid=True) else: 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) # nxos: vrf context vrf1 (config-vrf) with configurations.submode_context( attributes.format('vrf context {name}', force=True)): if unconfig and attributes.iswildcard: configurations.submode_unconfig() # nxos: vrf context vrf1 / rd 1.2:1 v = attributes.value('rd') if v is not None: # if v != 'auto': # v = format(v, 'd.d:d') configurations.append_line('rd {}'.format(v)) # nxos: vrf context vrf1 / vni 1-16777214 if attributes.value('vni'): configurations.append_line(attributes.format('vni {vni}')) # nxos: vrf context vrf1 / address-family ipv4 unicast (config-vrf-af-ipv4) # nxos: vrf context vrf1 / address-family ipv6 unicast (config-vrf-af-ipv6) 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)) # nxos: vrf context vrf1 / amt flush-routes if attributes.value('amt_flush_routes'): configurations.append_line('amt flush-routes') # nxos: vrf context vrf1 / amt pseudo-interface Ethernet1/1 configurations.append_line( attributes.format( 'amt pseudo-interface {amt_pseudo_interface.name}')) # nxos: vrf context vrf1 / description some line data configurations.append_line( attributes.format('description {description}')) # nxos: vrf context vrf1 / ip ... -> StaticRouting/TODO # nxos: vrf context vrf1 / ipv6 ... -> StaticRouting/TODO # nxos: vrf context vrf1 / shutdown if attributes.value('shutdown'): configurations.append_line('shutdown') # nxos: vrf context vrf1 / vni 4096 topology 1 # comment out due to impot issue (this is from old configuration) # --- ImportError: cannot import name 'ESI' # for vni, attributes2 in attributes.sequence_values('vnis'): # configurations.append_line('vni {}'.format(vni.vni_id)) if apply: if configurations: self.device.configure(configurations, fail_invalid=True) else: return CliConfig(device=self.device, unconfig=unconfig, cli_config=configurations)