CORD-1010 refactor openstack synchronizer to use new_base

Change-Id: I4eb4e5131275faf69e1da05efc81a3d8d0d12296
diff --git a/xos/synchronizer/model_policies/model_policy_Controller.py b/xos/synchronizer/model_policies/model_policy_Controller.py
index c62b612..2ff25d4 100644
--- a/xos/synchronizer/model_policies/model_policy_Controller.py
+++ b/xos/synchronizer/model_policies/model_policy_Controller.py
@@ -1,8 +1,7 @@
+from collections import defaultdict
+from synchronizers.new_base.modelaccessor import *
 
 def handle(controller):
-    from core.models import Controller, Site, ControllerSite, Slice, ControllerSlice, User, ControllerUser, ControllerImages, ControllerNetwork, Image, Network
-    from collections import defaultdict
-
     # relations for all sites
     ctrls_by_site = defaultdict(list)
     ctrl_sites = ControllerSite.objects.all()
diff --git a/xos/synchronizer/model_policies/model_policy_ControllerSite.py b/xos/synchronizer/model_policies/model_policy_ControllerSite.py
index 4b76080..3b7a037 100644
--- a/xos/synchronizer/model_policies/model_policy_ControllerSite.py
+++ b/xos/synchronizer/model_policies/model_policy_ControllerSite.py
@@ -1,6 +1,6 @@
+from synchronizers.new_base.modelaccessor import *
+
 def handle(controller_site):
-    from core.models import ControllerSite, Site
-   
     try:
         my_status_code = int(controller_site.backend_status[0])
         try:
diff --git a/xos/synchronizer/model_policies/model_policy_ControllerSlice.py b/xos/synchronizer/model_policies/model_policy_ControllerSlice.py
index bfe7995..3c6d54f 100644
--- a/xos/synchronizer/model_policies/model_policy_ControllerSlice.py
+++ b/xos/synchronizer/model_policies/model_policy_ControllerSlice.py
@@ -1,6 +1,6 @@
+from synchronizers.new_base.modelaccessor import *
+
 def handle(controller_slice):
-    from core.models import ControllerSlice, Slice
-   
     try:
         my_status_code = int(controller_slice.backend_status[0])
         try:
diff --git a/xos/synchronizer/model_policies/model_policy_ControllerUser.py b/xos/synchronizer/model_policies/model_policy_ControllerUser.py
index b69c9b8..895ebf8 100644
--- a/xos/synchronizer/model_policies/model_policy_ControllerUser.py
+++ b/xos/synchronizer/model_policies/model_policy_ControllerUser.py
@@ -1,6 +1,6 @@
+from synchronizers.new_base.modelaccessor import *
+
 def handle(controller_user):
-    from core.models import ControllerUser, User
-   
     try:
         my_status_code = int(controller_user.backend_status[0])
         try:
diff --git a/xos/synchronizer/model_policies/model_policy_Image.py b/xos/synchronizer/model_policies/model_policy_Image.py
index c77d5bb..6d6982e 100644
--- a/xos/synchronizer/model_policies/model_policy_Image.py
+++ b/xos/synchronizer/model_policies/model_policy_Image.py
@@ -1,7 +1,6 @@
-def handle(image):
-    from core.models import Controller, ControllerImages, Image
-    from collections import defaultdict
+from synchronizers.new_base.modelaccessor import *
 
+def handle(image):
     if (image.kind == "container"):
         # container images do not get instantiated
         return
diff --git a/xos/synchronizer/model_policies/model_policy_Instance.py b/xos/synchronizer/model_policies/model_policy_Instance.py
index dd1a8d5..c810a96 100644
--- a/xos/synchronizer/model_policies/model_policy_Instance.py
+++ b/xos/synchronizer/model_policies/model_policy_Instance.py
@@ -1,6 +1,6 @@
-def handle_container_on_metal(instance):
-        from core.models import Instance, Flavor, Port, Image
+from synchronizers.new_base.modelaccessor import *
 
+def handle_container_on_metal(instance):
         print "MODEL POLICY: instance", instance, "handle container_on_metal"
 
         if instance.deleted:
@@ -10,7 +10,7 @@
             # Our current docker-on-metal network strategy requires that there be some
             # VM on the server that connects to the networks, so that
             # the containers can piggyback off of that configuration.
-            if not Instance.objects.filter(slice=instance.slice, node=instance.node, isolation="vm").exists():
+            if not Instance.objects.filter(slice_id=instance.slice.id, node_id=instance.node.id, isolation="vm").exists():
                 flavors = Flavor.objects.filter(name="m1.small")
                 if not flavors:
                     raise XOSConfigurationError("No m1.small flavor")
@@ -35,17 +35,18 @@
             if (network.name.endswith("-nat")):
                 continue
 
-            if not Port.objects.filter(network=network, instance=instance).exists():
+            if not Port.objects.filter(network_id=network.id, instance_id=instance.id).exists():
                 port = Port(network = network, instance=instance)
                 port.save()
                 print "MODEL POLICY: instance", instance, "created port", port
 
 def handle(instance):
-    from core.models import Controller, ControllerSlice, ControllerNetwork, NetworkSlice
-
     networks = [ns.network for ns in NetworkSlice.objects.filter(slice=instance.slice)]
-    controller_networks = ControllerNetwork.objects.filter(network__in=networks,
-                                                                controller=instance.node.site_deployment.controller)
+    controller_networks = ControllerNetwork.objects.filter(controller=instance.node.site_deployment.controller)
+
+    # a little clumsy because the API ORM doesn't support __in queries
+    network_ids = [x.id for x in networks]
+    controller_networks = [x for x in controller_networks if x.network.id in network_ids]
 
     for cn in controller_networks:
         if (cn.lazy_blocked):
diff --git a/xos/synchronizer/model_policies/model_policy_Network.py b/xos/synchronizer/model_policies/model_policy_Network.py
index 06347c5..b3f45ce 100644
--- a/xos/synchronizer/model_policies/model_policy_Network.py
+++ b/xos/synchronizer/model_policies/model_policy_Network.py
@@ -1,9 +1,7 @@
-from core.models import *
+from synchronizers.new_base.modelaccessor import *
+from collections import defaultdict
 
 def handle(network):
-	from core.models import ControllerSlice,ControllerNetwork, Network
-	from collections import defaultdict
-
         print "MODEL POLICY: network", network
 
         # network = Network.get(network_id)
@@ -27,7 +25,11 @@
 
                         # check and see if some instance already exists
                         for networkslice in network.networkslices.all():
-                            if networkslice.slice.instances.filter(node__site_deployment__controller=expected_controller).exists():
+                            found = False
+                            for instance in networkslice.slice.instances.all():
+                               if instance.node.site_deployment.controller.id == expected_controller.id:
+                                   found = True
+                            if found:
                                print "MODEL_POLICY: network, setting lazy_blocked to false because instance on controller already exists"
                                lazy_blocked=False
 
diff --git a/xos/synchronizer/model_policies/model_policy_Site.py b/xos/synchronizer/model_policies/model_policy_Site.py
index 23010a2..f800092 100644
--- a/xos/synchronizer/model_policies/model_policy_Site.py
+++ b/xos/synchronizer/model_policies/model_policy_Site.py
@@ -1,10 +1,9 @@
+from synchronizers.new_base.modelaccessor import *
 
 def handle(site):
-    from core.models import Controller, ControllerSite, Site 
-
     # site = Site.get(site_id)
     # make sure site has a ControllerSite record for each controller
-    ctrl_sites = ControllerSite.objects.filter(site=site)
+    ctrl_sites = ControllerSite.objects.filter(site_id=site.id)
     existing_controllers = [cs.controller for cs in ctrl_sites]
 
     all_controllers = Controller.objects.all()
diff --git a/xos/synchronizer/model_policies/model_policy_SitePrivilege.py b/xos/synchronizer/model_policies/model_policy_SitePrivilege.py
index d9c6a1e..2218994 100644
--- a/xos/synchronizer/model_policies/model_policy_SitePrivilege.py
+++ b/xos/synchronizer/model_policies/model_policy_SitePrivilege.py
@@ -1,10 +1,10 @@
+from synchronizers.new_base.modelaccessor import *
+
 def handle(site_privilege):
-    from core.models import Controller, SitePrivilege, ControllerSitePrivilege
-    
     # site_privilege = SitePrivilege.get(site_privilege_id)
     # apply site privilage at all controllers
     controller_site_privileges = ControllerSitePrivilege.objects.filter(
-        site_privilege = site_privilege,
+        site_privilege_id = site_privilege.id,
         )
     existing_controllers = [sp.controller for sp in controller_site_privileges]
     all_controllers = Controller.objects.all()
diff --git a/xos/synchronizer/model_policies/model_policy_Slice.py b/xos/synchronizer/model_policies/model_policy_Slice.py
index 088d583..953d2c9 100644
--- a/xos/synchronizer/model_policies/model_policy_Slice.py
+++ b/xos/synchronizer/model_policies/model_policy_Slice.py
@@ -1,22 +1,17 @@
 from xos.config import Config
+from synchronizers.new_base.modelaccessor import *
 
 def handle_delete(slice):
-    from core.models import Controller, ControllerSlice, SiteDeployment, Network, NetworkSlice,NetworkTemplate, Slice
-    from collections import defaultdict
-
     public_nets = []
     private_net = None
-    networks = Network.objects.filter(owner=slice)
+    networks = Network.objects.filter(owner_id=slice.id)
 
     for n in networks:
-        n.delete()	
-    
+        n.delete()
+
     # Note that sliceprivileges and slicecontrollers are autodeleted, through the dependency graph
 
 def handle(slice):
-    from core.models import Controller, ControllerSlice, SiteDeployment, Network, NetworkSlice,NetworkTemplate, Slice
-    from collections import defaultdict
-
     # only create nat_net if not using VTN
     support_nat_net = not getattr(Config(), "networking_use_vtn", False)
 
@@ -24,7 +19,7 @@
 
     # slice = Slice.get(slice_id)
 
-    controller_slices = ControllerSlice.objects.filter(slice=slice)
+    controller_slices = ControllerSlice.objects.filter(slice_id=slice.id)
     existing_controllers = [cs.controller for cs in controller_slices] 
         
     print "MODEL POLICY: slice existing_controllers=", existing_controllers
@@ -47,7 +42,7 @@
         # make sure slice has at least 1 public and 1 private networkd
         public_nets = []
         private_nets = []
-        networks = Network.objects.filter(owner=slice)
+        networks = Network.objects.filter(owner_id=slice.id)
         for network in networks:
             if not network.autoconnect:
                 continue
@@ -82,7 +77,12 @@
         # create slice networks
         public_net_slice = None
         private_net_slice = None
-        net_slices = NetworkSlice.objects.filter(slice=slice, network__in=private_nets+public_nets)
+
+        public_net_ids = [x.id for x in public_nets]
+        private_net_ids = [x.id for x in private_nets]
+        net_slices = NetworkSlice.objects.filter(slice_id=slice.id)
+        net_slices = [x for x in net_slices if x.network_id in public_net_ids+private_net_ids]
+
         for net_slice in net_slices:
             if net_slice.network in public_nets:
                 public_net_slice = net_slice
diff --git a/xos/synchronizer/model_policies/model_policy_SlicePrivilege.py b/xos/synchronizer/model_policies/model_policy_SlicePrivilege.py
index bca7f22..f4fab58 100644
--- a/xos/synchronizer/model_policies/model_policy_SlicePrivilege.py
+++ b/xos/synchronizer/model_policies/model_policy_SlicePrivilege.py
@@ -1,7 +1,7 @@
+from synchronizers.new_base.modelaccessor import *
+
 def handle(slice_privilege):
-    from core.models import Controller, SlicePrivilege, ControllerSlicePrivilege
-   
-    # slice_privilege = SlicePrivilege.get(slice_privilege_id) 
+    # slice_privilege = SlicePrivilege.get(slice_privilege_id)
     # apply slice privilage at all controllers
     controller_slice_privileges = ControllerSlicePrivilege.objects.filter(
         slice_privilege = slice_privilege,
diff --git a/xos/synchronizer/model_policies/model_policy_Sliver.py b/xos/synchronizer/model_policies/model_policy_Sliver.py
index a13428d..2f1f203 100644
--- a/xos/synchronizer/model_policies/model_policy_Sliver.py
+++ b/xos/synchronizer/model_policies/model_policy_Sliver.py
@@ -1,10 +1,10 @@
+from synchronizers.new_base.modelaccessor import *
 
 def handle(instance):
-    from core.models import Controller, ControllerSlice, ControllerNetwork, NetworkSlice
-
-    networks = [ns.network for ns in NetworkSlice.objects.filter(slice=instance.slice)]
-    controller_networks = ControllerNetwork.objects.filter(network__in=networks,
-                                                                controller=instance.node.site_deployment.controller)
+    networks = [ns.network for ns in NetworkSlice.objects.filter(slice_id=instance.slice.id)]
+    network_ids = [x.id for x in networks]
+    controller_networks = ControllerNetwork.objects.filter(controller_id=instance.node.site_deployment.controller.id)
+    controller_networks = [x for x in controller_networks if x.network_id in network_ids]
 
     for cn in controller_networks:
         if (cn.lazy_blocked):	
diff --git a/xos/synchronizer/model_policies/model_policy_User.py b/xos/synchronizer/model_policies/model_policy_User.py
index 8d14244..cc37db1 100644
--- a/xos/synchronizer/model_policies/model_policy_User.py
+++ b/xos/synchronizer/model_policies/model_policy_User.py
@@ -1,7 +1,6 @@
-def handle(user):
-    from core.models import Controller, ControllerSite, ControllerUser, User
-    from collections import defaultdict
+from synchronizers.new_base.modelaccessor import *
 
+def handle(user):
     # user = User.get(user_id)
     
     controller_users = ControllerUser.objects.filter(user=user)