Пример #1
0
 def test_calc(self):
     self.assertEqual(
         self.expected,
         sc_util.calculate_new_capacity(self.current, self.adjustment,
                                        self.adjustment_type,
                                        self.min_adjustment_step,
                                        self.minimum, self.maximum))
Пример #2
0
 def test_calc(self):
     self.assertEqual(self.expected,
                      sc_util.calculate_new_capacity(
                          self.current, self.adjustment,
                          self.adjustment_type,
                          self.min_adjustment_step,
                          self.minimum, self.maximum))
Пример #3
0
    def adjust(self, adjustment,
               adjustment_type=sc_util.CFN_CHANGE_IN_CAPACITY,
               min_adjustment_step=None, signal=False):
        """Adjust the size of the scaling group if the cooldown permits."""
        if not self._is_scaling_allowed():
            LOG.info(_LI("%(name)s NOT performing scaling adjustment, "
                         "cooldown %(cooldown)s"),
                     {'name': self.name,
                      'cooldown': self.properties[self.COOLDOWN]})
            if signal:
                raise exception.NoActionRequired()
            else:
                return

        capacity = grouputils.get_size(self)
        lower = self.properties[self.MIN_SIZE]
        upper = self.properties[self.MAX_SIZE]

        new_capacity = sc_util.calculate_new_capacity(capacity, adjustment,
                                                      adjustment_type,
                                                      min_adjustment_step,
                                                      lower, upper)

        changed_size = new_capacity != capacity
        # send a notification before, on-error and on-success.
        notif = {
            'stack': self.stack,
            'adjustment': adjustment,
            'adjustment_type': adjustment_type,
            'capacity': capacity,
            'groupname': self.FnGetRefId(),
            'message': _("Start resizing the group %(group)s") % {
                'group': self.FnGetRefId()},
            'suffix': 'start',
        }
        notification.send(**notif)
        try:
            self.resize(new_capacity)
        except Exception as resize_ex:
            with excutils.save_and_reraise_exception():
                try:
                    notif.update({'suffix': 'error',
                                  'message': six.text_type(resize_ex),
                                  'capacity': grouputils.get_size(self),
                                  })
                    notification.send(**notif)
                except Exception:
                    LOG.exception(_LE('Failed sending error notification'))
        else:
            notif.update({
                'suffix': 'end',
                'capacity': new_capacity,
                'message': _("End resizing the group %(group)s") % {
                    'group': notif['groupname']},
            })
            notification.send(**notif)
        finally:
            self._finished_scaling("%s : %s" % (adjustment_type, adjustment),
                                   changed_size=changed_size)
        return changed_size
Пример #4
0
    def adjust(self, adjustment,
               adjustment_type=sc_util.CFN_CHANGE_IN_CAPACITY,
               min_adjustment_step=None, signal=False):
        """Adjust the size of the scaling group if the cooldown permits."""
        if self._cooldown_inprogress():
            LOG.info(_LI("%(name)s NOT performing scaling adjustment, "
                         "cooldown %(cooldown)s"),
                     {'name': self.name,
                      'cooldown': self.properties[self.COOLDOWN]})
            if signal:
                raise exception.NoActionRequired()
            else:
                return

        capacity = grouputils.get_size(self)
        lower = self.properties[self.MIN_SIZE]
        upper = self.properties[self.MAX_SIZE]

        new_capacity = sc_util.calculate_new_capacity(capacity, adjustment,
                                                      adjustment_type,
                                                      min_adjustment_step,
                                                      lower, upper)

        # send a notification before, on-error and on-success.
        notif = {
            'stack': self.stack,
            'adjustment': adjustment,
            'adjustment_type': adjustment_type,
            'capacity': capacity,
            'groupname': self.FnGetRefId(),
            'message': _("Start resizing the group %(group)s") % {
                'group': self.FnGetRefId()},
            'suffix': 'start',
        }
        notification.send(**notif)
        try:
            self.resize(new_capacity)
        except Exception as resize_ex:
            with excutils.save_and_reraise_exception():
                try:
                    notif.update({'suffix': 'error',
                                  'message': six.text_type(resize_ex),
                                  'capacity': grouputils.get_size(self),
                                  })
                    notification.send(**notif)
                except Exception:
                    LOG.exception(_LE('Failed sending error notification'))
        else:
            notif.update({
                'suffix': 'end',
                'capacity': new_capacity,
                'message': _("End resizing the group %(group)s") % {
                    'group': notif['groupname']},
            })
            notification.send(**notif)
        finally:
            self._cooldown_timestamp("%s : %s" % (adjustment_type,
                                                  adjustment))
Пример #5
0
 def _get_new_capacity(self, capacity,
                       adjustment,
                       adjustment_type=sc_util.CFN_EXACT_CAPACITY,
                       min_adjustment_step=None):
     lower = self.properties[self.MIN_SIZE]
     upper = self.properties[self.MAX_SIZE]
     return sc_util.calculate_new_capacity(capacity, adjustment,
                                           adjustment_type,
                                           min_adjustment_step,
                                           lower, upper)
Пример #6
0
 def _get_new_capacity(self, capacity,
                       adjustment,
                       adjustment_type=sc_util.CFN_EXACT_CAPACITY,
                       min_adjustment_step=None):
     lower = self.properties[self.MIN_SIZE]
     upper = self.properties[self.MAX_SIZE]
     return sc_util.calculate_new_capacity(capacity, adjustment,
                                           adjustment_type,
                                           min_adjustment_step,
                                           lower, upper)