blob: 238b1498abce8aa66d0ba71d24006b04af03aa48 [file] [log] [blame]
import os
import sys
import base64
from django.db.models import F, Q
from xos.config import Config
from synchronizers.base.syncstep import SyncStep
from core.models import Service, ServiceController, ServiceControllerResource
from xos.logger import Logger, logging
# xosbuilder will be in steps/..
parentdir = os.path.join(os.path.dirname(__file__),"..")
sys.path.insert(0,parentdir)
from xosbuilder import XOSBuilder
logger = Logger(level=logging.INFO)
class SyncServiceControllerResource(SyncStep, XOSBuilder):
provides=[ServiceControllerResource]
observes=ServiceControllerResource
requested_interval=0
def __init__(self, **args):
SyncStep.__init__(self, **args)
XOSBuilder.__init__(self)
def sync_record(self, scr):
logger.info("Sync'ing ServiceControllerResource %s" % scr)
self.download_resource(scr)
# TODO: The following should be redone with watchers
if scr.loadable_module and scr.loadable_module.xos:
# Make sure the xos UI is resynced
xos = scr.loadable_module.xos
xos.save(update_fields=["updated"], always_update_timestamp=True)
if (scr.kind=="models") and scr.loadable_module and (scr.loadable_module.name != "openstack"):
# Make sure the openstack controller is restarted. This is necessary
# as the OpenStack controller is the only one that handles model
# policies.
os_scr = ServiceController.objects.filter(name="openstack")
if os_scr:
os_scr = os_scr[0]
os_scr.save(update_fields=["updated"], always_update_timestamp=True)
def delete_record(self, m):
pass
def fetch_pending(self, deleted=False):
pend = super(SyncServiceControllerResource, self).fetch_pending(deleted)
return pend