blob: da556e0baddcc13a08c451980f517d1c89d8dd87 [file] [log] [blame]
Matteo Scandoloc3900022016-11-30 16:54:49 -08001import os
2import sys
3import base64
4from django.db.models import F, Q
5from xos.config import Config
6from synchronizers.base.syncstep import SyncStep, DeferredException
7from core.models import XOS, XOSComponent
8from xos.logger import Logger, logging
Sapan Bhatia057794c2017-01-24 19:32:58 +01009from synchronizers.base.ansible_helper import run_template
Matteo Scandoloc3900022016-11-30 16:54:49 -080010
11# xosbuilder will be in steps/..
12parentdir = os.path.join(os.path.dirname(__file__),"..")
13sys.path.insert(0,parentdir)
14
15from xosbuilder import XOSBuilder
16
17logger = Logger(level=logging.INFO)
18
19class SyncXOSComponent(SyncStep, XOSBuilder):
20 provides=[XOSComponent]
21 observes=XOSComponent
22 requested_interval=0
23
24 def __init__(self, **args):
25 SyncStep.__init__(self, **args)
26 XOSBuilder.__init__(self)
27
28 def sync_record(self, sc):
29 logger.info("Sync'ing XOSComponent %s" % sc)
30
31 if sc.xos and (not sc.xos.enable_build):
32 raise DeferredException("XOS build is currently disabled")
33
34 unready = self.check_controller_unready(sc)
35 if unready:
36 raise Exception("Controller %s has unready resources: %s" % (str(sc), ",".join([str(x) for x in unready])))
37
38 # There's nothing to actually do, since there's no synchronizer
39 # container for libraries.
40
41 def delete_record(self, m):
42 pass
43
44 def fetch_pending(self, deleted=False):
45 pend = super(SyncXOSComponent, self).fetch_pending(deleted)
46 return pend
47