Want to do the following config but failed... anyone can help to understand how to code it. Many Thanks. Also have another question about how to add "redistribute connected". Can see "connected_routes" under Bgp.Instance.InstanceAs.FourByteAs.Vrfs.Vrf.VrfGlobal.VrfGlobalAfs.VrfGlobalAf but don't know how to construct "_is_presence"
=============================
router bgp 65001
vrf CCTV
rd 65001:211
address-family ipv4 unicast
redistribute connected
=============================
Add the following to the sample config - nc-create-xr-ipv4-bgp-cfg-40-ydk.py:
# add VRF RD | |
bgp_vrf = four_byte_as.vrfs.Vrf() | |
bgp_vrf.vrf_name = "CCTV" | |
bgp_vrf.vrf_global.route_distinguisher.as_ = 65001 | |
bgp_vrf.vrf_global.route_distinguisher.as_index = 211 | |
bgp_vrf.exists = Empty() |
# add VRF address_family name | |
vrf_af_ipv4_unicast = bgp_vrf.vrf_global.vrf_global_afs.VrfGlobalAf() | |
vrf_af_ipv4_unicast.af_name=xr_ipv4_bgp_datatypes.BgpAddressFamilyEnum.IPV4_UNICAST | |
vrf_af_ipv4_unicast.enable = Empty() | |
bgp_vrf.vrf_global.vrf_global_afs.vrf_global_af.append(vrf_af_ipv4_unicast) |
four_byte_as.vrfs.vrf.append(bgp_vrf) | |
instance_as.four_byte_as.append(four_byte_as) | |
instance.instance_as.append(instance_as) | |
bgp.instance.append(instance) |
Error display:
================
raise YPYServiceProviderError(error_code=YPYErrorCode.SERVER_COMMIT_ERR, error_msg=rep) |
ydk.errors.YPYServiceProviderError: Server reported an error while committing change.
error-type: application | |
error-tag: operation-failed | |
error-severity: error | |
error-path: ns1:bgp/ns1:instance[instance-name = 'default']/ns1:instance-as[as = '0']/ns1:four-byte-as[as = '65001']/ns1:vrfs/ns1:vrf[vrf-name = 'CCTV']/ns1:vrf-global/ns1:route-distinguisher/ns1:as | |
error-message: 'BGP' detected the 'warning' condition 'Invalid configuration item.' |
few mistakes. Lines 1-5, lines 11-12, line 15. See:
# global address family global_af = four_byte_as.default_vrf.global_.global_afs.GlobalAf() global_af.af_name = xr_ipv4_bgp_datatypes.BgpAddressFamilyEnum.vp_nv4_unicast global_af.enable = Empty() four_byte_as.default_vrf.global_.global_afs.global_af.append(global_af) # add VRF RD bgp_vrf = four_byte_as.vrfs.Vrf() bgp_vrf.vrf_name = "CCTV" bgp_vrf.vrf_global.route_distinguisher.type = xr_ipv4_bgp_cfg.BgpRouteDistinguisherEnum.as_ bgp_vrf.vrf_global.route_distinguisher.as_xx = 0 bgp_vrf.vrf_global.route_distinguisher.as_ = 65001 bgp_vrf.vrf_global.route_distinguisher.as_index = 211 bgp_vrf.vrf_global.exists = Empty() # add VRF address_family name vrf_af_ipv4_unicast = bgp_vrf.vrf_global.vrf_global_afs.VrfGlobalAf() vrf_af_ipv4_unicast.af_name=xr_ipv4_bgp_datatypes.BgpAddressFamilyEnum.ipv4_unicast vrf_af_ipv4_unicast.enable = Empty() bgp_vrf.vrf_global.vrf_global_afs.vrf_global_af.append(vrf_af_ipv4_unicast) four_byte_as.vrfs.vrf.append(bgp_vrf)
- Note that I'm running YDK 0.5.2, so the Enum capitalization is slightly different.
- ==========<Removed App log>========
You need to instantiate the presence class described in the documentation. See https://goo.gl/2mmaiT
This line creates the right config object:
vrf_af_ipv4_unicast.connected_routes = vrf_af_ipv4_unicast.ConnectedRoutes()
Your IPv4 unicast config for the VRF would look:
# add VRF RD bgp_vrf = four_byte_as.vrfs.Vrf() bgp_vrf.vrf_name = "CCTV" bgp_vrf.vrf_global.route_distinguisher.type = xr_ipv4_bgp_cfg.BgpRouteDistinguisherEnum.as_ bgp_vrf.vrf_global.route_distinguisher.as_xx = 0 bgp_vrf.vrf_global.route_distinguisher.as_ = 65001 bgp_vrf.vrf_global.route_distinguisher.as_index = 211 bgp_vrf.vrf_global.exists = Empty() # add VRF address_family name vrf_af_ipv4_unicast = bgp_vrf.vrf_global.vrf_global_afs.VrfGlobalAf() vrf_af_ipv4_unicast.af_name=xr_ipv4_bgp_datatypes.BgpAddressFamilyEnum.ipv4_unicast vrf_af_ipv4_unicast.enable = Empty() vrf_af_ipv4_unicast.connected_routes = vrf_af_ipv4_unicast.ConnectedRoutes()
Comments
0 comments
Please sign in to leave a comment.