blob: 238b1498abce8aa66d0ba71d24006b04af03aa48 [file] [log] [blame]
Scott Baker7581c252016-05-27 13:12:47 -07001import os
2import sys
3import base64
4from django.db.models import F, Q
5from xos.config import Config
6from synchronizers.base.syncstep import SyncStep
7from core.models import Service, ServiceController, ServiceControllerResource
8from xos.logger import Logger, logging
9
10# xosbuilder will be in steps/..
11parentdir = os.path.join(os.path.dirname(__file__),"..")
12sys.path.insert(0,parentdir)
13
14from xosbuilder import XOSBuilder
15
16logger = Logger(level=logging.INFO)
17
18class SyncServiceControllerResource(SyncStep, XOSBuilder):
19 provides=[ServiceControllerResource]
20 observes=ServiceControllerResource
21 requested_interval=0
22
23 def __init__(self, **args):
24 SyncStep.__init__(self, **args)
25 XOSBuilder.__init__(self)
26
Scott Bakerb0eb23e2016-06-01 16:08:04 -070027 def sync_record(self, scr):
28 logger.info("Sync'ing ServiceControllerResource %s" % scr)
29 self.download_resource(scr)
Scott Baker7581c252016-05-27 13:12:47 -070030
Scott Baker0b2d6092017-01-24 10:22:08 -080031 # TODO: The following should be redone with watchers
32
Scott Bakerb8de6762016-12-05 15:56:32 -080033 if scr.loadable_module and scr.loadable_module.xos:
34 # Make sure the xos UI is resynced
35 xos = scr.loadable_module.xos
36 xos.save(update_fields=["updated"], always_update_timestamp=True)
37
Scott Baker0b2d6092017-01-24 10:22:08 -080038 if (scr.kind=="models") and scr.loadable_module and (scr.loadable_module.name != "openstack"):
39 # Make sure the openstack controller is restarted. This is necessary
40 # as the OpenStack controller is the only one that handles model
41 # policies.
42 os_scr = ServiceController.objects.filter(name="openstack")
43 if os_scr:
44 os_scr = os_scr[0]
45 os_scr.save(update_fields=["updated"], always_update_timestamp=True)
46
Scott Baker7581c252016-05-27 13:12:47 -070047 def delete_record(self, m):
48 pass
49
Scott Bakerb0eb23e2016-06-01 16:08:04 -070050 def fetch_pending(self, deleted=False):
51 pend = super(SyncServiceControllerResource, self).fetch_pending(deleted)
52 return pend
53