Schema crashes if the left vn has been deleted(LR/SI was deleted). Guess schema was down when the LR/SI was deleted or so. Not sure about the trigger. Quick fix would be to check for the validity of the VNs.
Traceback (most recent call last):
File "/usr/bin/contrail-schema", line 9, in <module>
load_entry_point('schema-transformer==0.1dev', 'console_scripts', 'contrail-schema')()
File "/usr/lib/python2.7/dist-packages/schema_transformer/to_bgp.py", line 840, in server_main
main()
File "/usr/lib/python2.7/dist-packages/schema_transformer/to_bgp.py", line 834, in main
args)
File "/usr/lib/python2.7/dist-packages/cfgm_common/zkclient.py", line 335, in master_election
self._election.run(func, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/kazoo/recipe/election.py", line 48, in run
func(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/schema_transformer/to_bgp.py", line 815, in run_schema_transformer
transformer = SchemaTransformer(args)
File "/usr/lib/python2.7/dist-packages/schema_transformer/to_bgp.py", line 215, in __init__
self.reinit()
File "/usr/lib/python2.7/dist-packages/schema_transformer/to_bgp.py", line 438, in reinit
RoutingInstanceST.locate(si_ri_name, si_ri_obj)
File "/usr/lib/python2.7/dist-packages/schema_transformer/config_db.py", line 104, in locate
obj = super(DBBaseST, cls).locate(key, *args)
File "/usr/lib/python2.7/dist-packages/cfgm_common/vnc_db.py", line 64, in locate
obj = cls(key, *args)
File "/usr/lib/python2.7/dist-packages/schema_transformer/config_db.py", line 1780, in __init__
self.locate_route_target()
File "/usr/lib/python2.7/dist-packages/schema_transformer/config_db.py", line 1963, in locate_route_target
self.import_default_ri_route_target_to_service_ri()
File "/usr/lib/python2.7/dist-packages/schema_transformer/config_db.py", line 1896, in import_default_ri_route_target_to_service_ri
sc = ServiceChain.get(self.service_chain)
AttributeError: 'NoneType' object has no attribute 'multi_policy_service_chains_enabled'
> /usr/lib/python2.7/dist-packages/schema_transformer/config_db.py(1896)import_default_ri_route_target_to_service_ri()
-> sc = ServiceChain.get(self.service_chain)
(Pdb) list
1891
1892 def import_default_ri_route_target_to_service_ri(self):
1893 if not self.service_chain:
1894 return
1895 import pdb; pdb.set_trace()
1896 -> sc = ServiceChain.get(self.service_chain)
1897 if sc is None or not sc.created:
1898 return
1899 left_vn = VirtualNetworkST.get(sc.left_vn)
1900 right_vn = VirtualNetworkST.get(sc.right_vn)
1901 multi_policy_enabled = (
(Pdb) self.service_chain
u'd0511a9e-bd25-41f6-be3b-c17f8765a8d3'
(Pdb) self.name
u'default-domain:admin:Public:service-d0511a9e-bd25-41f6-be3b-c17f8765a8d3-default-domain_TestPublicTenant_si_1fa30207-8323-48d5-966e-9bf6eec2d389'
(Pdb) self.virtual_network
u'default-domain:admin:Public'
(Pdb) self.service_chain_info.__dict__
{'routing_instance': None, 'source_routing_instance': None, 'prefix': [u'100.64.0.0/29'], 'service_instance': u'default-domain:TestPublicTenant:si_1fa30207-8323-48d5-966e-9bf6eec2d389', 'service_chain_address': None}
(Pdb) n
> /usr/lib/python2.7/dist-packages/schema_transformer/config_db.py(1897)import_default_ri_route_target_to_service_ri()
-> if sc is None or not sc.created:
(Pdb) sc.__dict__
{'direction': u'<>', 'protocol': u'any', 'name': u'd0511a9e-bd25-41f6-be3b-c17f8765a8d3', 'created': True, 'service_list': [u'default-domain:TestPublicTenant
:si_1fa30207-8323-48d5-966e-9bf6eec2d389'], 'partially_created': False, 'sp_list': [<vnc_api.gen.resource_xsd.PortType object at 0x7efe81098ad0>], 'error_msg
': None, 'right_vn': u'default-domain:admin:Public', 'dp_list': [<vnc_api.gen.resource_xsd.PortType object at 0x7efe81098a90>], 'left_vn': u'default-domain:TestPublicTenant:snat-si-left_si_1fa30207-8323-48d5-966e-9bf6eec2d389', 'present_stale': True, 'created_stale': True}
(Pdb) n
> /usr/lib/python2.7/dist-packages/schema_transformer/config_db.py(1899)import_default_ri_route_target_to_service_ri()
-> left_vn = VirtualNetworkST.get(sc.left_vn)
(Pdb) n
> /usr/lib/python2.7/dist-packages/schema_transformer/config_db.py(1900)import_default_ri_route_target_to_service_ri()
-> right_vn = VirtualNetworkST.get(sc.right_vn)
(Pdb) p left_vn
None
(Pdb) n
> /usr/lib/python2.7/dist-packages/schema_transformer/config_db.py(1902)import_default_ri_route_target_to_service_ri()
-> left_vn.multi_policy_service_chains_enabled and
(Pdb) p right_vn
<schema_transformer.config_db.VirtualNetworkST object at 0x7efe80dc5f90>
Review in progress for https:/ /review. opencontrail. org/21023
Submitter: Sachin Bansal (<email address hidden>)