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
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