def update(self): try: self.alarm_track.save() return self.alarm_track except Exception as e: LOG.exception(e) raise exceptions.AlarmCreateOrUpdateException()
def delete(self): try: if self.alarm_track and self.alarm_track_id: self.alarm_track.delete() super(ResourceAlarm, self).delete() except Exception as e: LOG.exception(e) raise exceptions.AlarmCreateOrUpdateException()
def update(self): try: self._clone_alarm_data() self.alarm_track.update() except exceptions.HealingException as e: LOG.exception(e) raise except Exception as e: LOG.exception(e) raise exceptions.AlarmCreateOrUpdateException()
def delete(self): try: if self.alarm_track and self.alarm_track_id: self.alarm_track.delete() if not self.get_unique_alarm(refresh=True): LOG.warning('Last AlarmTrack, removing ceilometer alarm') super(CeilometerUniqueAlarm, self).delete() except Exception as e: LOG.exception(e) raise exceptions.AlarmCreateOrUpdateException()
def update(self): try: if not self.get_unique_alarm(): raise Exception("Cannot update a singleton alarm" "not already created - parent") if self._something_changed(): LOG.debug("The alarm changed, do the update now.") super(CeilometerUniqueAlarm, self).update() self.alarm_track.save() return self.alarm_track except Exception as e: LOG.exception(e) raise exceptions.AlarmCreateOrUpdateException()
def create(self): """ # Check if already in DB if it's the first one, create it.? search by type """ try: external_created = False if (not self.options.get('project_id') and not self.options.get('resource_id')): raise Exception('missing parameter project_id or resource_id') self.alarm_track.create() if not self.hooks.get(alarm_base.ALARM_HOOK): self.set_default_alarm_hook( {'contract_id': self.alarm_track.contract_id}) #TODO: check if this is needed #if self.options.get('project_id'): # self.add_query('project_id', self.options.get('project_id')) resource = self.options.get('resource_id', self.options.get('project_id')) if resource: self.add_query('resource_id', resource) # DO A WITH with autodelete if fail.. or move external_created # to parent... super(ResourceAlarm, self).create() external_created = True self.alarm_track.save() except exceptions.ExternalAlarmAlreadyExists as e: raise except Exception as e: LOG.exception(e) with excutils.save_and_reraise_exception(): self.alarm_track.delete() # add with rereaise if external_created: super(ResourceAlarm, self).delete() # TODO: add with reraise exception raise exceptions.AlarmCreateOrUpdateException()
def create(self): """ # Check if already in DB if it's the first one, create it.? search by type """ try: external_created = False self.options.pop('project_id', None) # TODO: if duplicated, raise or we expect the caller # to handle that? first_alarm = self._is_first_alarm() self.alarm_track.create() # TODO: id must be unique, so double query but assure # % of success # other way would be to use random, or use # some id . but they can be created outside # we may use contract id only if it 1<->1 if first_alarm: LOG.debug("Creating unique external alarm") if not self.hooks.get(alarm_base.ALARM_HOOK): self.set_default_alarm_hook() super(CeilometerUniqueAlarm, self).create() external_created = True else: LOG.debug('Creating object only') self.alarm_id = self.unique_alarm_obj.alarm_id self.alarm_track.save() except exceptions.ExternalAlarmAlreadyExists as e: LOG.exception(e) raise except Exception as e: LOG.exception(e) with excutils.save_and_reraise_exception(): self.alarm_track.delete() if external_created: super(CeilometerUniqueAlarm, self).delete() raise exceptions.AlarmCreateOrUpdateException()
def delete(self): try: self.alarm_track.delete() except Exception as e: LOG.exception(e) raise exceptions.AlarmCreateOrUpdateException()