Merge branch 'master' of ssh://git.planet-lab.org/git/plstackapi
[plstackapi.git] / planetstack / observer / steps / sync_networks.py
index e64f0a4..fd42f4e 100644 (file)
@@ -1,52 +1,20 @@
 import os
 import base64
+from django.db.models import F, Q
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
 from core.models.network import *
+from util.logger import Logger, logging
 
-class SyncNetworks(OpenStackSyncStep):
-       provides=[Network]
-       requested_interval = 0
-
-       def save_network(self, network):
-               if not network.network_id:
-                       if network.template.sharedNetworkName:
-                               network.network_id = network.template.sharedNetworkId
-                               (network.subnet_id, network.subnet) = self.driver.get_network_subnet(network.network_id)
-                       else:
-                               network_name = network.name
+logger = Logger(level=logging.INFO)
 
-                               # create network
-                               os_network = self.driver.create_network(network_name, shared=True)
-                               network.network_id = os_network['id']
-
-                               # create router
-                               router = self.driver.create_router(network_name)
-                               network.router_id = router['id']
+class SyncNetworks(OpenStackSyncStep):
+    provides=[Network]
+    requested_interval = 0
 
-                               # create subnet
-                               next_subnet = self.get_next_subnet()
-                               cidr = str(next_subnet.cidr)
-                               ip_version = next_subnet.version
-                               start = str(next_subnet[2])
-                               end = str(next_subnet[-2])
-                               subnet = self.driver.create_subnet(name=network_name,
-                                                                                                  network_id = network.network_id,
-                                                                                                  cidr_ip = cidr,
-                                                                                                  ip_version = ip_version,
-                                                                                                  start = start,
-                                                                                                  end = end)
-                               network.subnet = cidr
-                               network.subnet_id = subnet['id']
+    def fetch_pending(self):
+        return Network.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
 
-       def sync_record(self, site):
-               if network.owner and network.owner.creator:
-                               try:
-                                       # update manager context
-                                       self.driver.init_caller(network.owner.creator, network.owner.name)
-                                       self.save_network(network)
-                                       logger.info("saved network: %s" % (network))
-                               except Exception,e:
-                                       logger.log_exc("save network failed: %s" % network)     
-                                       raise e
+    def sync_record(self, network):
+        network.save()