blob: 53fa9fa408f0c73f3d2c4099b72983cff0e8b5a1 [file] [log] [blame]
Scott Bakeraf599eb2017-03-21 12:43:26 -07001from synchronizers.new_base.modelaccessor import *
Scott Baker46a3ee92017-05-30 16:44:56 -07002from synchronizers.new_base.policy import Policy
Scott Bakerb63ea792016-08-11 10:24:48 -07003
Scott Baker46a3ee92017-05-30 16:44:56 -07004class InstancePolicy(Policy):
5 model_name = "Instance"
Scott Bakerb63ea792016-08-11 10:24:48 -07006
Scott Baker46a3ee92017-05-30 16:44:56 -07007 def handle_create(self, instance):
8 return self.handle_update(instance)
Scott Bakerb63ea792016-08-11 10:24:48 -07009
Scott Baker46a3ee92017-05-30 16:44:56 -070010 def handle_update(self, instance):
11 networks = [ns.network for ns in NetworkSlice.objects.filter(slice_id=instance.slice.id)]
12 controller_networks = ControllerNetwork.objects.filter(controller_id=instance.node.site_deployment.controller.id)
Scott Bakerb63ea792016-08-11 10:24:48 -070013
Scott Baker46a3ee92017-05-30 16:44:56 -070014 # a little clumsy because the API ORM doesn't support __in queries
15 network_ids = [x.id for x in networks]
16 controller_networks = [x for x in controller_networks if x.network.id in network_ids]
Scott Bakerb63ea792016-08-11 10:24:48 -070017
Scott Baker46a3ee92017-05-30 16:44:56 -070018 for cn in controller_networks:
19 if (cn.lazy_blocked):
20 self.logger.info("MODEL POLICY: instance %s unblocking network %s" % (instance, cn.network))
21 cn.lazy_blocked=False
22 cn.backend_register = '{}'
23 cn.save()