예제 #1
0
    def test_qos_specs_update(self):
        name = "FakeName"
        specs_id = self._create_qos_specs(name)
        value = dict(key2="new_value2", key3="value3")

        self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_update, self.ctxt, "Fake-UUID", value)
        db.qos_specs_update(self.ctxt, specs_id, value)
        specs = db.qos_specs_get(self.ctxt, specs_id)
        self.assertEqual(specs["specs"]["key2"], "new_value2")
        self.assertEqual(specs["specs"]["key3"], "value3")
예제 #2
0
    def save(self):
        updates = self.cinder_obj_get_changes()
        if updates:
            if "specs_keys_removed" in updates.keys():
                for specs_key_to_remove in updates["specs_keys_removed"]:
                    db.qos_specs_item_delete(self._context, self.id, specs_key_to_remove)
                del updates["specs_keys_removed"]
            db.qos_specs_update(self._context, self.id, updates)

        self.obj_reset_changes()
예제 #3
0
    def test_qos_specs_update(self):
        name = 'FakeName'
        specs_id = self._create_qos_specs(name)
        value = dict(key2='new_value2', key3='value3')

        self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_update,
                          self.ctxt, 'Fake-UUID', value)
        db.qos_specs_update(self.ctxt, specs_id, value)
        specs = db.qos_specs_get(self.ctxt, specs_id)
        self.assertEqual(specs['specs']['key2'], 'new_value2')
        self.assertEqual(specs['specs']['key3'], 'value3')
예제 #4
0
    def test_qos_specs_update(self):
        name = 'FakeName'
        specs_id = self._create_qos_specs(name)
        value = dict(key2='new_value2', key3='value3')

        self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_update,
                          self.ctxt, 'Fake-UUID', value)
        db.qos_specs_update(self.ctxt, specs_id, value)
        specs = db.qos_specs_get(self.ctxt, specs_id)
        self.assertEqual('new_value2', specs['specs']['key2'])
        self.assertEqual('value3', specs['specs']['key3'])
예제 #5
0
    def save(self):
        updates = self.cinder_obj_get_changes()
        if updates:
            if 'specs_keys_removed' in updates.keys():
                for specs_key_to_remove in updates['specs_keys_removed']:
                    db.qos_specs_item_delete(self._context, self.id,
                                             specs_key_to_remove)
                del updates['specs_keys_removed']
            db.qos_specs_update(self._context, self.id, updates)

        self.obj_reset_changes()
예제 #6
0
    def test_qos_specs_update(self):
        name = 'FakeName'
        specs_id = self._create_qos_specs(name)
        value = dict(key2='new_value2', key3='value3')

        self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_update,
                          self.ctxt, fake.WILL_NOT_BE_FOUND_ID, value)
        db.qos_specs_update(self.ctxt, specs_id, value)
        specs = db.qos_specs_get(self.ctxt, specs_id)
        self.assertEqual('new_value2', specs['specs']['key2'])
        self.assertEqual('value3', specs['specs']['key3'])
예제 #7
0
    def test_qos_specs_update(self):
        name = 'FakeName'
        specs_id = self._create_qos_specs(name)
        value = {'consumer': 'both',
                 'specs': {'key2': 'new_value2', 'key3': 'value3'}}

        self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_update,
                          self.ctxt, fake.WILL_NOT_BE_FOUND_ID, value)
        db.qos_specs_update(self.ctxt, specs_id, value)
        specs = db.qos_specs_get(self.ctxt, specs_id)
        self.assertEqual('new_value2', specs['specs']['key2'])
        self.assertEqual('value3', specs['specs']['key3'])
        self.assertEqual('both', specs['consumer'])
예제 #8
0
    def test_qos_specs_update(self):
        name = 'FakeName'
        specs_id = self._create_qos_specs(name)
        value = {
            'consumer': 'both',
            'specs': {
                'key2': 'new_value2',
                'key3': 'value3'
            }
        }

        self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_update,
                          self.ctxt, fake.WILL_NOT_BE_FOUND_ID, value)
        db.qos_specs_update(self.ctxt, specs_id, value)
        specs = db.qos_specs_get(self.ctxt, specs_id)
        self.assertEqual('new_value2', specs['specs']['key2'])
        self.assertEqual('value3', specs['specs']['key3'])
        self.assertEqual('both', specs['consumer'])
예제 #9
0
def update(context, qos_specs_id, specs):
    """Update qos specs.

    :param specs dictionary that contains key/value pairs for updating
    existing specs.
        e.g. {'consumer': 'front-end',
              'total_iops_sec': 500,
              'total_bytes_sec': 512000,}
    """
    # need to verify specs in case 'consumer' is passed
    _verify_prepare_qos_specs(specs, create=False)
    LOG.debug("qos_specs.update(): specs %s" % specs)
    try:
        res = db.qos_specs_update(context, qos_specs_id, specs)
    except db_exc.DBError as e:
        LOG.exception(_LE("DB error: %s") % e)
        raise exception.QoSSpecsUpdateFailed(specs_id=qos_specs_id, qos_specs=specs)

    return res
예제 #10
0
def update(context, qos_specs_id, specs):
    """Update qos specs.

    :param specs dictionary that contains key/value pairs for updating
    existing specs.
        e.g. {'consumer': 'front-end',
              'total_iops_sec': 500,
              'total_bytes_sec': 512000,}
    """
    # need to verify specs in case 'consumer' is passed
    _verify_prepare_qos_specs(specs, create=False)
    LOG.debug('qos_specs.update(): specs %s' % specs)
    try:
        res = db.qos_specs_update(context, qos_specs_id, specs)
    except db_exc.DBError as e:
        LOG.exception(_('DB error: %s') % e)
        raise exception.QoSSpecsUpdateFailed(specs_id=qos_specs_id,
                                             qos_specs=specs)

    return res