Exemplo n.º 1
0
 def update(self):
     try:
         self.alarm_track.save()
         return self.alarm_track
     except Exception as e:
         LOG.exception(e)
         raise exceptions.AlarmCreateOrUpdateException()
Exemplo n.º 2
0
 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()
Exemplo n.º 3
0
 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()
Exemplo n.º 4
0
    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()
Exemplo n.º 5
0
    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()
Exemplo n.º 6
0
    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()
Exemplo n.º 7
0
    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()
Exemplo n.º 8
0
 def delete(self):
     try:
         self.alarm_track.delete()
     except Exception as e:
         LOG.exception(e)
         raise exceptions.AlarmCreateOrUpdateException()