diff --git a/src/service/service/service_handlers/l3nm_openconfig/ConfigRules.py b/src/service/service/service_handlers/l3nm_openconfig/ConfigRules.py index 596126d1e26998740e0ebb69e0cea2018a081d75..3f31f1ddf24b88e4bad762938d757642b58af7c1 100644 --- a/src/service/service/service_handlers/l3nm_openconfig/ConfigRules.py +++ b/src/service/service/service_handlers/l3nm_openconfig/ConfigRules.py @@ -107,7 +107,30 @@ def setup_config_rules( 'protocol_name': 'STATIC', }), - #Create interface with subinterface + #Create interface with subinterface (without IP address) + json_config_rule_set( + '/interface[{:s}]/subinterface[{:d}]'.format(if_subif_name, sub_interface_index), { + 'name' : if_subif_name, + 'type' :'ethernetCsmacd', + 'mtu' : mtu, + 'index' : sub_interface_index, + 'description': network_subinterface_desc, + 'vlan_id' : vlan_id, + }), + + #Associate interface to network instance + json_config_rule_set( + '/network_instance[{:s}]/interface[{:s}]'.format(network_instance_name, if_subif_name), { + 'name' : network_instance_name, + 'type' : 'L3VRF', + 'id' : if_subif_name, + 'interface' : if_subif_name, + 'subinterface' : sub_interface_index, + 'address_ip' : address_ip, + 'address_prefix': address_prefix, + }), + + #Create interface with subinterface (with IP address) json_config_rule_set( '/interface[{:s}]/subinterface[{:d}]'.format(if_subif_name, sub_interface_index), { 'name' : if_subif_name, @@ -120,20 +143,10 @@ def setup_config_rules( 'address_prefix': address_prefix, }), - #Associate interface to network instance - json_config_rule_set( - '/network_instance[{:s}]/interface[{:s}]'.format(network_instance_name, if_subif_name), { - 'name' : network_instance_name, - 'id' : if_subif_name, - 'interface' : if_subif_name, - 'subinterface': sub_interface_index, - 'address_ip' : address_ip, - 'address_prefix': address_prefix, - }), - json_config_rule_set( '/network_instance[{:s}]/interface[{:s}]'.format(network_instance_name, self_bgp_if_name), { 'name' : network_instance_name, + 'type' : 'L3VRF', 'id' : self_bgp_if_name, 'interface' : self_bgp_if_name, 'subinterface': bgp_sub_interface_index, @@ -151,10 +164,9 @@ def setup_config_rules( # pylint: disable=duplicate-string-formatting-argument '/routing_policy/policy_definition[{:s}_import]/statement[{:s}]'.format(policy_import, policy_import), { 'policy_name' : policy_import, - 'statement_name' : 'stm_{:s}'.format(policy_import), + 'statement_name' : 'stm_{:s}'.format(policy_import), # OCNOS: '10', 'ext_community_set_name': 'set_{:s}'.format(policy_import), 'policy_result' : 'ACCEPT_ROUTE', - 'sequence_id' : '10' }), #Associate routing policy to network instance @@ -174,10 +186,9 @@ def setup_config_rules( # pylint: disable=duplicate-string-formatting-argument '/routing_policy/policy_definition[{:s}_export]/statement[{:s}]'.format(policy_export, policy_export), { 'policy_name' : policy_export, - 'statement_name' : 'stm_{:s}'.format(policy_export), + 'statement_name' : 'stm_{:s}'.format(policy_export), # OCNOS: '10', 'ext_community_set_name': 'set_{:s}'.format(policy_export), 'policy_result' : 'ACCEPT_ROUTE', - 'sequence_id' : '10' }), #Associate routing policy to network instance @@ -262,10 +273,9 @@ def teardown_config_rules( # pylint: disable=duplicate-string-formatting-argument '/routing_policy/policy_definition[{:s}_export]/statement[{:s}]'.format(policy_export, policy_export), { 'policy_name' : policy_export, - 'statement_name' : 'stm_{:s}'.format(policy_export), + 'statement_name' : 'stm_{:s}'.format(policy_export), # OCNOS: '10', 'ext_community_set_name': 'set_{:s}'.format(policy_export), 'policy_result' : 'ACCEPT_ROUTE', - 'sequence_id' : '10' }), json_config_rule_delete( '/routing_policy/bgp_defined_set[{:s}_rt_export][{:s}]'.format(policy_export, route_distinguisher), { @@ -277,10 +287,9 @@ def teardown_config_rules( # pylint: disable=duplicate-string-formatting-argument '/routing_policy/policy_definition[{:s}_import]/statement[{:s}]'.format(policy_import, policy_import), { 'policy_name' : policy_import, - 'statement_name' : 'stm_{:s}'.format(policy_import), + 'statement_name' : 'stm_{:s}'.format(policy_import), # OCNOS: '10', 'ext_community_set_name': 'set_{:s}'.format(policy_import), 'policy_result' : 'ACCEPT_ROUTE', - 'sequence_id' : '10' }), json_config_rule_delete( '/routing_policy/bgp_defined_set[{:s}_rt_import][{:s}]'.format(policy_import, route_distinguisher), {