Esempio n. 1
0
    def createSystemEvent(self, system, eventType, enableTime=None,
                          eventData=None):
        event = None
        # do not create events for systems that we cannot possibly contact
        if self.getSystemHasHostInfo(system) or \
                eventType.name in self.LaunchWaitForNetworkEvents:
            if not enableTime:
                enableTime = self.now() + timeutils.timedelta(
                    minutes=self.cfg.systemEventsPollDelay)
            if eventData is not None and not isinstance(eventData, basestring):
                pickledData = cPickle.dumps(eventData)
            else:
                pickledData = eventData
            event = models.SystemEvent(system=system, event_type=eventType,
                priority=eventType.priority, time_enabled=enableTime,
                event_data=pickledData)
            event.save()
            self.logSystemEvent(event, enableTime)

            if event.dispatchImmediately():
                self.dispatchSystemEvent(event)
        else:
            systemName = system.name or system.hostname or system.target_system_name
            log.info("Event cannot be created for system %s (%s) '%s' because "
                "there is no host information" % \
                (system.pk, systemName, eventType.description))
            self.log_system(system,
                "Unable to create event '%s': no networking information" %
                    eventType.description)

        system.updateDerivedData()
        return event
Esempio n. 2
0
    def addSystemSystemEvent(self, system_id, systemEvent):
        """Add a system event to a system"""

        if not system_id or not systemEvent:
            return

        system = models.System.objects.get(pk=system_id)
        systemEvent.system = system
        systemEvent.save()

        enable_time = None
        if systemEvent.dispatchImmediately():
            enable_time = self.now()
        else:
            enable_time = self.now() + timeutils.timedelta(minutes=self.cfg.systemEventsPollDelay)

        self.logSystemEvent(systemEvent, enable_time)

        if systemEvent.dispatchImmediately():
            self.dispatchSystemEvent(systemEvent)

        return systemEvent