Example #1
0
    def test_get_volume_type_qos_specs(self):
        qos_ref = qos_specs.create(self.ctxt, 'qos-specs-1', {
            'k1': 'v1',
            'k2': 'v2',
            'k3': 'v3'
        })
        type_ref = volume_types.create(self.ctxt, "type1", {
            "key2": "val2",
            "key3": "val3"
        })
        res = volume_types.get_volume_type_qos_specs(type_ref['id'])
        self.assertIsNone(res['qos_specs'])
        qos_specs.associate_qos_with_type(self.ctxt, qos_ref['id'],
                                          type_ref['id'])

        expected = {
            'qos_specs': {
                'id': qos_ref['id'],
                'name': 'qos-specs-1',
                'consumer': 'back-end',
                'specs': {
                    'k1': 'v1',
                    'k2': 'v2',
                    'k3': 'v3'
                }
            }
        }
        res = volume_types.get_volume_type_qos_specs(type_ref['id'])
        specs = db.qos_specs_get(self.ctxt, qos_ref['id'])
        expected['qos_specs']['created_at'] = specs['created_at']
        self.assertDictEqual(expected, res)
Example #2
0
    def test_qos_specs_get_all(self):
        qos_list = [
            {'name': 'Name1',
             'consumer': 'front-end',
             'specs': {'key1': 'v1', 'key2': 'v2'}},
            {'name': 'Name2',
             'consumer': 'back-end',
             'specs': {'key1': 'v3', 'key2': 'v4'}},
            {'name': 'Name3',
             'consumer': 'back-end',
             'specs': {'key1': 'v5', 'key2': 'v6'}}]

        for index, qos in enumerate(qos_list):
            qos['id'] = self._create_qos_specs(qos['name'],
                                               qos['consumer'],
                                               qos['specs'])
            specs = db.qos_specs_get(self.ctxt, qos['id'])
            qos_list[index]['created_at'] = specs['created_at']

        specs_list_returned = db.qos_specs_get_all(self.ctxt)
        self.assertEqual(len(qos_list), len(specs_list_returned),
                         "Unexpected number of qos specs records")

        for expected_qos in qos_list:
            self.assertIn(expected_qos, specs_list_returned)
Example #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")
Example #4
0
def get_qos_specs(ctxt, id):
    """Retrieves single qos specs by id."""
    if id is None:
        msg = _("id cannot be None")
        raise exception.InvalidQoSSpecs(reason=msg)

    if ctxt is None:
        ctxt = context.get_admin_context()

    return db.qos_specs_get(ctxt, id)
Example #5
0
def get_qos_specs(ctxt, id):
    """Retrieves single qos specs by id."""
    if id is None:
        msg = _("id cannot be None")
        raise exception.InvalidQoSSpecs(reason=msg)

    if ctxt is None:
        ctxt = context.get_admin_context()

    return db.qos_specs_get(ctxt, id)
Example #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-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')
Example #7
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'])
Example #8
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'])
    def test_qos_specs_get(self):
        value = dict(consumer='front-end', key1='foo', key2='bar')
        specs_id = self._create_qos_specs('Name1', value)

        fake_id = 'fake-UUID'
        self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_get,
                          self.ctxt, fake_id)

        specs = db.qos_specs_get(self.ctxt, specs_id)
        value.update(dict(id=specs_id))
        expected = dict(Name1=value)
        self.assertDictMatch(specs, expected)
Example #10
0
    def test_qos_specs_get(self):
        value = dict(consumer="front-end", key1="foo", key2="bar")
        specs_id = self._create_qos_specs("Name1", value)

        fake_id = "fake-UUID"
        self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_get, self.ctxt, fake_id)

        specs = db.qos_specs_get(self.ctxt, specs_id)
        expected = dict(name="Name1", id=specs_id, consumer="front-end")
        del value["consumer"]
        expected.update(dict(specs=value))
        self.assertDictMatch(specs, expected)
    def test_qos_specs_item_delete(self):
        name = str(int(time.time()))
        value = dict(foo='Foo', bar='Bar')
        specs_id = self._create_qos_specs(name, 'front-end', value)

        del value['foo']
        expected = {'name': name,
                    'id': specs_id,
                    'consumer': 'front-end',
                    'specs': value}
        db.qos_specs_item_delete(self.ctxt, specs_id, 'foo')
        specs = db.qos_specs_get(self.ctxt, specs_id)
        self.assertDictEqual(expected, specs)
    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'])
Example #13
0
    def test_qos_specs_get(self):
        value = dict(consumer='front-end', key1='foo', key2='bar')
        specs_id = self._create_qos_specs('Name1', value)

        fake_id = 'fake-UUID'
        self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_get,
                          self.ctxt, fake_id)

        specs = db.qos_specs_get(self.ctxt, specs_id)
        expected = dict(name='Name1', id=specs_id, consumer='front-end')
        del value['consumer']
        expected.update(dict(specs=value))
        self.assertDictMatch(expected, specs)
Example #14
0
    def test_qos_specs_get(self):
        value = dict(consumer='front-end',
                     key1='foo', key2='bar')
        specs_id = self._create_qos_specs('Name1', value)

        fake_id = 'fake-UUID'
        self.assertRaises(exception.QoSSpecsNotFound,
                          db.qos_specs_get, self.ctxt, fake_id)

        specs = db.qos_specs_get(self.ctxt, specs_id)
        value.update(dict(id=specs_id))
        expected = dict(Name1=value)
        self.assertDictMatch(specs, expected)
Example #15
0
    def test_qos_specs_get(self):
        value = dict(consumer='front-end',
                     key1='foo', key2='bar')
        specs_id = self._create_qos_specs('Name1', value)

        fake_id = 'fake-UUID'
        self.assertRaises(exception.QoSSpecsNotFound,
                          db.qos_specs_get, self.ctxt, fake_id)

        specs = db.qos_specs_get(self.ctxt, specs_id)
        expected = dict(name='Name1', id=specs_id, consumer='front-end')
        del value['consumer']
        expected.update(dict(specs=value))
        self.assertDictMatch(expected, specs)
    def test_qos_specs_get(self):
        qos_spec = {'name': 'Name1',
                    'consumer': 'front-end',
                    'specs': {'key1': 'foo', 'key2': 'bar'}}
        specs_id = self._create_qos_specs(qos_spec['name'],
                                          qos_spec['consumer'],
                                          qos_spec['specs'])

        fake_id = fake.WILL_NOT_BE_FOUND_ID
        self.assertRaises(exception.QoSSpecsNotFound,
                          db.qos_specs_get, self.ctxt, fake_id)

        specs_returned = db.qos_specs_get(self.ctxt, specs_id)
        qos_spec['id'] = specs_id
        self.assertDictEqual(qos_spec, specs_returned)
Example #17
0
    def test_qos_specs_item_delete(self):
        name = str(int(time.time()))
        value = dict(foo='Foo', bar='Bar')
        specs_id = self._create_qos_specs(name, 'front-end', value)

        del value['foo']
        expected = {
            'name': name,
            'id': specs_id,
            'consumer': 'front-end',
            'specs': value
        }
        db.qos_specs_item_delete(self.ctxt, specs_id, 'foo')
        specs = db.qos_specs_get(self.ctxt, specs_id)
        self.assertDictMatch(expected, specs)
Example #18
0
    def test_get_all_specs(self):
        qos_specs_list = [{
            'name': 'Specs1',
            'created_at': None,
            'updated_at': None,
            'deleted_at': None,
            'deleted': None,
            'consumer': 'both',
            'specs': {
                'key1': 'value1',
                'key2': 'value2',
                'key3': 'value3'
            }
        }, {
            'name': 'Specs2',
            'created_at': None,
            'updated_at': None,
            'deleted_at': None,
            'deleted': None,
            'consumer': 'both',
            'specs': {
                'key1': 'value1',
                'key2': 'value2',
                'key3': 'value3',
                'key4': 'value4'
            }
        }]

        for index, qos_specs_dict in enumerate(qos_specs_list):
            qos_specs_id = self._create_qos_specs(qos_specs_dict['name'],
                                                  qos_specs_dict['consumer'],
                                                  qos_specs_dict['specs'])
            qos_specs_dict['id'] = qos_specs_id
            specs = db.qos_specs_get(self.ctxt, qos_specs_id)
            qos_specs_list[index]['created_at'] = test_utils.time_format(
                specs['created_at'])

        res = qos_specs.get_all_specs(self.ctxt)
        self.assertEqual(len(qos_specs_list), len(res))

        qos_res_simple_dict = []
        # Need to make list of dictionaries instead of VOs for assertIn to work
        for qos in res:
            qos_res_simple_dict.append(
                qos.obj_to_primitive()['versioned_object.data'])
        for qos_spec in qos_specs_list:
            self.assertIn(qos_spec, qos_res_simple_dict)
Example #19
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'])
Example #20
0
    def test_qos_specs_get(self):
        qos_spec = {
            'name': 'Name1',
            'consumer': 'front-end',
            'specs': {
                'key1': 'foo',
                'key2': 'bar'
            }
        }
        specs_id = self._create_qos_specs(qos_spec['name'],
                                          qos_spec['consumer'],
                                          qos_spec['specs'])

        fake_id = fake.WILL_NOT_BE_FOUND_ID
        self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_get,
                          self.ctxt, fake_id)

        specs_returned = db.qos_specs_get(self.ctxt, specs_id)
        qos_spec['id'] = specs_id
        self.assertDictMatch(qos_spec, specs_returned)
Example #21
0
    def test_get_all_specs(self):
        qos_specs_list = [{'name': 'Specs1',
                           'created_at': None,
                           'updated_at': None,
                           'deleted_at': None,
                           'deleted': None,
                           'consumer': 'both',
                           'specs': {'key1': 'value1',
                                     'key2': 'value2',
                                     'key3': 'value3'}},
                          {'name': 'Specs2',
                           'created_at': None,
                           'updated_at': None,
                           'deleted_at': None,
                           'deleted': None,
                           'consumer': 'both',
                           'specs': {'key1': 'value1',
                                     'key2': 'value2',
                                     'key3': 'value3',
                                     'key4': 'value4'}}]

        for index, qos_specs_dict in enumerate(qos_specs_list):
            qos_specs_id = self._create_qos_specs(
                qos_specs_dict['name'],
                qos_specs_dict['consumer'],
                qos_specs_dict['specs'])
            qos_specs_dict['id'] = qos_specs_id
            specs = db.qos_specs_get(self.ctxt, qos_specs_id)
            qos_specs_list[index]['created_at'] = utils.time_format(
                specs['created_at'])

        res = qos_specs.get_all_specs(self.ctxt)
        self.assertEqual(len(qos_specs_list), len(res))

        qos_res_simple_dict = []
        # Need to make list of dictionaries instead of VOs for assertIn to work
        for qos in res:
            qos_res_simple_dict.append(
                qos.obj_to_primitive()['versioned_object.data'])
        for qos_spec in qos_specs_list:
            self.assertIn(qos_spec, qos_res_simple_dict)
Example #22
0
    def test_get_volume_type_qos_specs(self):
        qos_ref = qos_specs.create(self.ctxt, 'qos-specs-1', {'k1': 'v1',
                                                              'k2': 'v2',
                                                              'k3': 'v3'})
        type_ref = volume_types.create(self.ctxt, "type1", {"key2": "val2",
                                                            "key3": "val3"})
        res = volume_types.get_volume_type_qos_specs(type_ref['id'])
        self.assertIsNone(res['qos_specs'])
        qos_specs.associate_qos_with_type(self.ctxt,
                                          qos_ref['id'],
                                          type_ref['id'])

        expected = {'qos_specs': {'id': qos_ref['id'],
                                  'name': 'qos-specs-1',
                                  'consumer': 'back-end',
                                  'specs': {
                                      'k1': 'v1',
                                      'k2': 'v2',
                                      'k3': 'v3'}}}
        res = volume_types.get_volume_type_qos_specs(type_ref['id'])
        specs = db.qos_specs_get(self.ctxt, qos_ref['id'])
        expected['qos_specs']['created_at'] = specs['created_at']
        self.assertDictEqual(expected, res)
Example #23
0
    def test_qos_specs_get_all(self):
        qos_list = [{
            'name': 'Name1',
            'consumer': 'front-end',
            'specs': {
                'key1': 'v1',
                'key2': 'v2'
            }
        }, {
            'name': 'Name2',
            'consumer': 'back-end',
            'specs': {
                'key1': 'v3',
                'key2': 'v4'
            }
        }, {
            'name': 'Name3',
            'consumer': 'back-end',
            'specs': {
                'key1': 'v5',
                'key2': 'v6'
            }
        }]

        for index, qos in enumerate(qos_list):
            qos['id'] = self._create_qos_specs(qos['name'], qos['consumer'],
                                               qos['specs'])
            specs = db.qos_specs_get(self.ctxt, qos['id'])
            qos_list[index]['created_at'] = specs['created_at']

        specs_list_returned = db.qos_specs_get_all(self.ctxt)
        self.assertEqual(len(qos_list), len(specs_list_returned),
                         "Unexpected number of qos specs records")

        for expected_qos in qos_list:
            self.assertIn(expected_qos, specs_list_returned)