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)