Beispiel #1
0
    def connection_success(self, success, job):
        """
        Connection with firewall is successfull, so we result True to
        admin client, and schedule the request starting.
        """

        firewall = Firewall(self, self.core, self.NAME, job.name, {'state':Firewall.REGISTERING, 'last_seen':0, 'hostname' : job.hostname})
        self.firewalls[job.name] = firewall
        job.firewall = firewall
        scheduleOnce(0, self.start_request, job)
        return True
Beispiel #2
0
 def init_done(self):
     self.states_path = os.path.join(
         self.core.config.get("CORE", "vardir"), "supervisor.xml")
     try:
         self.states.load(self.states_path)
     except ConfigError:
         for reaction_function in reaction_functions:
             self.states.set(reaction_function.__name__, 0)
     # Launch the first check in 10 seconds. The callback function will
     # schedule itself with a delay of delay_seconds seconds at the end of
     # its body.
     scheduleOnce(10, self.check_and_react)
Beispiel #3
0
    def loadConfig(self):
        """
        Load configuration of PKI, OpenVPN and firewalls.
        """

        d = succeed("done")
        d.addCallback(self.pki.loadPki)
        d.addCallback(self.setFirewallRules)
        d.addCallback(self.createOpenVPNCertificate)
        d.addCallback(self.loadCategories)
        d.addCallback(self.loadFirewalls)
        d.addCallback(lambda x: scheduleOnce(3, self.loadTransport))
        d.addErrback(self.loadError)
        return d
Beispiel #4
0
    def reschedule(self, sched_options):
        self.task_retry_time = sched_options["retry_time"]
        self.sched_options = sched_options
        if self.task_retry_time < 5:
            self.task_retry_time = 5
        self.task_stop_on_success = sched_options["stop_on_success"]

        start_date = sched_options["start_date"]
        if start_date != 0:
            start_date = start_date - time.time()
            now = datetime.datetime.now()
            now += datetime.timedelta(seconds=start_date)
            self.status = tr(u"Starting on %s") % now.strftime("%x %X")
        else:
            self.sched_options["start_date"] = time.time()

        if start_date <= 0:
            self.firstStart()
        else:
            self.delayed_task = scheduleOnce(start_date, self.firstStart)
Beispiel #5
0
 def scheduleHello(self, sleep_time):
     if self.hello_task_id is not None:
         self.hello_task_id.cancel()
     self.debug('schedule call to hello on primary node (%s)' % sleep_time)
     self.hello_task_id = scheduleOnce(sleep_time, self.hello)
Beispiel #6
0
 def checkTransport(self, status):
     if not status:
         scheduleOnce(self.TRANSPORT_INTERVAL, self.startTransport)
Beispiel #7
0
    @inlineCallbacks
    def check_and_react(self, manual_purge=False):
        yield deferToThread(self._check_and_react, manual_purge)
        try:
            if self.registered_for_mail.new_alerts:
                body = self.registered_for_mail.make_body()
                context = Context.fromComponent(self)
                yield self.core.callService(context, 'contact', 'sendMailToAdmin',
                                      subjects.get(self.config.language,
                                                   subjects["en"]),
                                      body)
        except Exception, err:
            self.writeError(err, "Error while sending alert e-mail")

        if not manual_purge:
            scheduleOnce(delay_seconds, self.check_and_react)

    def _check_and_react(self, manual_purge=False):
        self.purging = True
        system_data = data_gatherer(self)
        self.registered_for_mail.clear()
        self._execute_reactions(system_data, manual_purge)
        self.purging = False

    ############
    # Services #
    ############

    def service_purge(self, context):
        if self.purging:
            return False