diff --git a/src/device/service/drivers/openconfig/OpenConfigDriver.py b/src/device/service/drivers/openconfig/OpenConfigDriver.py index 452f2f7c816e4f7bf2222a41dd185e52c99cb0e8..476c2f0ccc4e80854b641ca2f0f8285509b71ddd 100644 --- a/src/device/service/drivers/openconfig/OpenConfigDriver.py +++ b/src/device/service/drivers/openconfig/OpenConfigDriver.py @@ -227,11 +227,8 @@ def edit_config( chk_length(str_resource_name, resource, min_length=2, max_length=2) resource_key,resource_value = resource chk_string(str_resource_name + '.key', resource_key, allow_empty=False) - str_config_messages = compose_config( # get template for configuration - resource_key, resource_value, delete=delete, vendor=netconf_handler.vendor, message_renderer='pyangbind') - # str_config_messages = compose_config( # get template for configuration - # resource_key, resource_value, delete=delete, vendor=netconf_handler.vendor, message_renderer=netconf_handler.message_renderer) + resource_key, resource_value, delete=delete, vendor=netconf_handler.vendor, message_renderer=netconf_handler.message_renderer) for str_config_message in str_config_messages: # configuration of the received templates if str_config_message is None: raise UnsupportedResourceKeyException(resource_key) logger.debug('[{:s}] str_config_message[{:d}] = {:s}'.format( diff --git a/src/device/service/drivers/openconfig/templates/__init__.py b/src/device/service/drivers/openconfig/templates/__init__.py index 87eea1f0b6673c4bff3222598d81a16b383b4c3b..b1d8de5113edd6ec6c91bd66d8bed73ebe5eab97 100644 --- a/src/device/service/drivers/openconfig/templates/__init__.py +++ b/src/device/service/drivers/openconfig/templates/__init__.py @@ -121,7 +121,7 @@ def compose_config( # template generation templates.append(JINJA_ENV.get_template('acl/acl-set/acl-entry/edit_config.xml')) templates.append(JINJA_ENV.get_template('acl/interfaces/ingress/edit_config.xml')) data : Dict[str, Any] = json.loads(resource_value) - operation = 'delete' if delete else 'merge' + operation = 'delete' if delete else '' return [ '<config>{:s}</config>'.format( diff --git a/src/device/service/drivers/openconfig/templates/interface/subinterface/edit_config.xml b/src/device/service/drivers/openconfig/templates/interface/subinterface/edit_config.xml index e441004006e4cdd445f1d0244a9582b57956af40..9cff1afd3375c34f8f9d2c3e8447b7b1172b40e5 100644 --- a/src/device/service/drivers/openconfig/templates/interface/subinterface/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/interface/subinterface/edit_config.xml @@ -30,19 +30,6 @@ </match> </vlan> {% endif %} - {% if address_ip is defined %} - <oc-ip:ipv4> - <oc-ip:addresses> - <oc-ip:address> - <oc-ip:ip>{{address_ip}}</oc-ip:ip> - <oc-ip:config> - <oc-ip:ip>{{address_ip}}</oc-ip:ip> - <oc-ip:prefix-length>{{address_prefix}}</oc-ip:prefix-length> - </oc-ip:config> - </oc-ip:address> - </oc-ip:addresses> - </oc-ip:ipv4> - {% endif %} </subinterface> </subinterfaces> {% endif %} diff --git a/src/device/service/drivers/openconfig/templates/network_instance/edit_config.xml b/src/device/service/drivers/openconfig/templates/network_instance/edit_config.xml index 6b6b733dab12a107bf0420907da9c9683173faeb..891881867f66f52ad87cc8d539be31502dddc48c 100644 --- a/src/device/service/drivers/openconfig/templates/network_instance/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/network_instance/edit_config.xml @@ -1,5 +1,5 @@ <network-instances xmlns="http://openconfig.net/yang/network-instance"> - <network-instance{% if operation is defined %} xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" nc:operation="{{operation}}"{% endif %}> + <network-instance{% if operation is defined %} xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" nc:operation="{{operation}}"{% endif %}> <name>{{name}}</name> {% if operation is not defined or operation != 'delete' %} <config> diff --git a/src/device/service/drivers/openconfig/templates/network_instance/interface/edit_config.xml b/src/device/service/drivers/openconfig/templates/network_instance/interface/edit_config.xml index 855f321b4a69ba1e660487c108a05d0ec4b5d475..96e13cc37b2783879df762a568be918ff95b2453 100644 --- a/src/device/service/drivers/openconfig/templates/network_instance/interface/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/network_instance/interface/edit_config.xml @@ -1,6 +1,10 @@ <network-instances xmlns="http://openconfig.net/yang/network-instance"> <network-instance> <name>{{name}}</name> + <config> + <name>{{name}}</name> + <type xmlns:oc-ni-types="http://openconfig.net/yang/network-instance-types">oc-ni-types:L3VRF</type> + </config> <interfaces> <interface{% if operation is defined %} xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0" nc:operation="{{operation}}"{% endif %}> <id>{{id}}</id> @@ -13,3 +17,33 @@ </interfaces> </network-instance> </network-instances> +<interfaces xmlns="http://openconfig.net/yang/interfaces"> + <interface> + <name>{{interface}}</name> + <config> + <name>{{interface}}</name> + </config> + <subinterfaces> + <subinterface> + <index>{{subinterface}}</index> + <config> + <index>{{subinterface}}</index> + </config> + <ipv4 xmlns="http://openconfig.net/yang/interfaces/ip"> + <config> + <mtu>1500</mtu> + </config> + <addresses> + <address> + <ip>{{address_ip}}</ip> + <config> + <ip>{{address_ip}}</ip> + <prefix-length>{{address_prefix}}</prefix-length> + </config> + </address> + </addresses> + </ipv4> + </subinterface> + </subinterfaces> + </interface> +</interfaces> diff --git a/src/device/service/drivers/openconfig/templates/network_instance/protocols/edit_config.xml b/src/device/service/drivers/openconfig/templates/network_instance/protocols/edit_config.xml index c9c068e480c0569cfe5f97b78b28fbe03e2595f8..da66d97f053f509a1a595cdb1abc0bd1791ad0bc 100644 --- a/src/device/service/drivers/openconfig/templates/network_instance/protocols/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/network_instance/protocols/edit_config.xml @@ -9,15 +9,37 @@ <config> <identifier xmlns:oc-pol-types="http://openconfig.net/yang/policy-types">oc-pol-types:{{identifier}}</identifier> <name>{{protocol_name}}</name> + <enabled>true</enabled> </config> {% if identifier=='BGP' %} <bgp> + <name>{{as}}</name> <global> <config> <as>{{as}}</as> <router-id>{{router_id}}</router-id> </config> </global> + {% if neighbors is defined %} + <neighbors> + {% for neighbor in neighbors %} + <neighbor> + <neighbor-address>{{neighbor['ip_address']}}</neighbor-address> + <afi-safis> + <afi-safi xmlns:oc-bgp-types="http://openconfig.net/yang/bgp-types"> + <afi-safi-name>oc-bgp-types:IPV4_UNICAST</afi-safi-name> + <enabled>true</enabled> + </afi-safi> + </afi-safis> + <config> + <neighbor-address>{{neighbor['ip_address']}}</neighbor-address> + <enabled>true</enabled> + <peer-as>{{as}}</peer-as> + </config> + </neighbor> + {% endfor %} + </neighbors> + {% endif %} </bgp> {% endif %} {% endif %} diff --git a/src/device/service/drivers/openconfig/templates/network_instance/table_connections/edit_config.xml b/src/device/service/drivers/openconfig/templates/network_instance/table_connections/edit_config.xml index 46bf5e387789c7efc800ad96ed759748273bed34..bd1dac1b326c9d14645d059bafefd73319497593 100644 --- a/src/device/service/drivers/openconfig/templates/network_instance/table_connections/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/network_instance/table_connections/edit_config.xml @@ -11,6 +11,7 @@ <src-protocol xmlns:oc-pol-types="http://openconfig.net/yang/policy-types">oc-pol-types:{{src_protocol}}</src-protocol> <dst-protocol xmlns:oc-pol-types="http://openconfig.net/yang/policy-types">oc-pol-types:{{dst_protocol}}</dst-protocol> <address-family xmlns:oc-types="http://openconfig.net/yang/openconfig-types">oc-types:{{address_family}}</address-family> + <dst-instance xmlns="http://www.ipinfusion.com/yang/ocnos/ipi-oc-ni-augments">{{as}}</dst-instance> {% if default_import_policy is defined %}<default-import-policy>{{default_import_policy}}</default-import-policy>{% endif %} </config> {% endif %} diff --git a/src/device/service/drivers/openconfig/templates/routing_policy/policy_definition/statement/edit_config.xml b/src/device/service/drivers/openconfig/templates/routing_policy/policy_definition/statement/edit_config.xml index eda2d99c9f6299f7345767db8bed8e8cc58284ae..1bf1cf3220342d1c0aa98e18c53ed7b954a16e27 100644 --- a/src/device/service/drivers/openconfig/templates/routing_policy/policy_definition/statement/edit_config.xml +++ b/src/device/service/drivers/openconfig/templates/routing_policy/policy_definition/statement/edit_config.xml @@ -8,9 +8,9 @@ </config> <statements> <statement> - <name>{{statement_name}}</name> + <name>{{sequence_id}}</name> <config> - <name>{{statement_name}}</name> + <name>{{sequence_id}}</name> </config> <conditions> <config> diff --git a/src/service/service/service_handlers/l3nm_openconfig/ConfigRules.py b/src/service/service/service_handlers/l3nm_openconfig/ConfigRules.py index cee44641a73853597844b4de2c1e643fd900ad2a..87556c36b92fc59a0f24539518c08990e84f84ca 100644 --- a/src/service/service/service_handlers/l3nm_openconfig/ConfigRules.py +++ b/src/service/service/service_handlers/l3nm_openconfig/ConfigRules.py @@ -195,6 +195,7 @@ def setup_config_rules( 'dst_protocol' : 'BGP', 'address_family' : 'IPV4', 'default_import_policy': 'ACCEPT_ROUTE', + 'as' : bgp_as, }), json_config_rule_set( @@ -204,6 +205,7 @@ def setup_config_rules( 'dst_protocol' : 'BGP', 'address_family' : 'IPV4', 'default_import_policy': 'ACCEPT_ROUTE', + 'as' : bgp_as, }), ]