[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