[EDGEPOD-151] Modification in Fabric Switch and Switch Port Synchronizer to use fabric per site
Change-Id: I8dd412003c30315e04455fa049ceaf36d8353f91
diff --git a/xos/synchronizer/steps/helpers.py b/xos/synchronizer/steps/helpers.py
index 3ac04fe..e3308f6 100644
--- a/xos/synchronizer/steps/helpers.py
+++ b/xos/synchronizer/steps/helpers.py
@@ -13,6 +13,10 @@
# limitations under the License.
from __future__ import absolute_import
+from xosconfig import Config
+from multistructlog import create_logger
+
+log = create_logger(Config().get('logging'))
class Helpers():
@staticmethod
@@ -23,8 +27,25 @@
return 'http://%s' % url
@staticmethod
- def get_onos_fabric_service(model_accessor):
- # FIXME do not select by name but follow ServiceDependency
- fabric_service = model_accessor.Service.objects.get(name="fabric")
- onos_fabric_service = fabric_service.provider_services[0].leaf_model
+ def get_onos_fabric_service(model_accessor, switch=None):
+ fabric = None
+ if switch:
+ fabric = model_accessor.Service.objects.get(id=switch.fabric_id)
+ else:
+ fabric = model_accessor.Service.objects.get(name="fabric")
+ onos_fabric_service = fabric.provider_services[0].leaf_model
return onos_fabric_service
+
+ @staticmethod
+ def get_onos(model, model_accessor, onos=None):
+ if(model.fabric != None):
+ onos = Helpers.get_onos_fabric_service(model_accessor, model)
+ else:
+ fabric_service = model_accessor.FabricService.objects.all()
+ if(len(fabric_service) == 1):
+ onos = Helpers.get_onos_fabric_service(model_accessor)
+
+ if not onos:
+ log.error("Configuration error. Fabric Service without ONOS is not possible.")
+ raise Exception("Configuration error. Fabric Service without ONOS is not possible.")
+ return onos