Networks deleter for OpenStack
[plstackapi.git] / planetstack / openstack_observer / steps / sync_networks.py
1 import os
2 import base64
3 from django.db.models import F, Q
4 from planetstack.config import Config
5 from observer.openstacksyncstep import OpenStackSyncStep
6 from core.models.network import *
7 from util.logger import Logger, logging
8
9 logger = Logger(level=logging.INFO)
10
11 class SyncNetworks(OpenStackSyncStep):
12     provides=[Network]
13     requested_interval = 0
14
15     def fetch_pending(self, deleted):
16         if (not deleted):
17             objs = Network.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
18         else:
19             objs = Network.deleted_objects.all()
20
21     def sync_record(self, network):
22         network.save()
23
24     def delete_record(self, network):
25         network_deployment_deleter = NetworkDeploymentDeleter()
26         for network_deployment in NetworkDeployments.objects.filter(network=network):
27             try:
28                 network_deployment_deleter(network_deployment.id)    
29             except Exeption,e:
30                 logger.log_exc("Failed to delete network deployment %s" % network_deployment)
31                 raise e
32         network.delete()