SEBA-108 call acquire_service_instance on fc service

Change-Id: I1cc26b8a25eefbf6b9f49f17326b0f23608e80d6
diff --git a/xos/synchronizer/model_policies/test_model_policy_voltserviceinstance.py b/xos/synchronizer/model_policies/test_model_policy_voltserviceinstance.py
index e6fb171..f129de5 100644
--- a/xos/synchronizer/model_policies/test_model_policy_voltserviceinstance.py
+++ b/xos/synchronizer/model_policies/test_model_policy_voltserviceinstance.py
@@ -88,9 +88,14 @@
         with patch.object(ServiceInstanceLink, "save", autospec=True) as save_link, \
             patch.object(VSGServiceInstance, "save", autospec=True) as save_vsg:
 
+            subscriber_si = Mock()
+
             link = Mock()
             link.provider_service.get_service_instance_class_name.return_value = "VSGServiceInstance"
             link.provider_service.name = "FabricCrossconnect"
+            link.provider_service.validate_links = Mock(return_value=[])
+            link.provider_service.acquire_service_instance = Mock(return_value=subscriber_si)
+            link.provider_service.leaf_model = link.provider_service
 
             si = Mock()
             si.subscribed_links.all.return_value = []
@@ -98,17 +103,30 @@
 
             self.policy.create_eastbound_instance(si)
 
-            # Should have created a vsg
+            link.provider_service.validate_links.assert_called_with(si)
+            link.provider_service.acquire_service_instance.assert_called_with(si)
 
-            self.assertEqual(save_vsg.call_count, 1)
-            vsg = save_vsg.call_args[0][0]
+    def test_create_vsg_already_exists(self):
+        with patch.object(ServiceInstanceLink, "save", autospec=True) as save_link, \
+            patch.object(VSGServiceInstance, "save", autospec=True) as save_vsg:
 
-            # Should have created a link from OLT to vsg
+            subscriber_si = Mock()
 
-            self.assertEqual(save_link.call_count, 1)
-            link = save_link.call_args[0][0]
-            self.assertEqual(link.provider_service_instance, vsg)
-            self.assertEqual(link.subscriber_service_instance, si)
+            link = Mock()
+            link.provider_service.get_service_instance_class_name.return_value = "VSGServiceInstance"
+            link.provider_service.name = "FabricCrossconnect"
+            link.provider_service.validate_links = Mock(return_value=subscriber_si)
+            link.provider_service.acquire_service_instance = Mock()
+            link.provider_service.leaf_model = link.provider_service
+
+            si = Mock()
+            si.subscribed_links.all.return_value = []
+            si.owner.subscribed_dependencies.all.return_value = [link]
+
+            self.policy.create_eastbound_instance(si)
+
+            link.provider_service.validate_links.assert_called_with(si)
+            link.provider_service.acquire_service_instance.assert_not_called()
 
     def test_associate_onu(self):
         with patch.object(ServiceInstance.objects, "get") as get_si, \