Example #1
0
    def test_qos_specs_disassociate(self):
        type_id = volume_types.create(self.ctxt, 'TypeName')['id']
        specs_id = self._create_qos_specs('FakeQos')
        db.volume_type_qos_associate(self.ctxt, type_id, specs_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(res[0]['id'], type_id)
        self.assertEqual(res[0]['qos_specs_id'], specs_id)

        db.qos_specs_disassociate(self.ctxt, specs_id, type_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(len(res), 0)
        res = db.volume_type_get(self.ctxt, type_id)
        self.assertEqual(res['qos_specs_id'], None)
Example #2
0
    def test_qos_specs_disassociate(self):
        type_id = volume_types.create(self.ctxt, 'TypeName')['id']
        specs_id = self._create_qos_specs('FakeQos')
        db.volume_type_qos_associate(self.ctxt, type_id, specs_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(type_id, res[0]['id'])
        self.assertEqual(specs_id, res[0]['qos_specs_id'])

        db.qos_specs_disassociate(self.ctxt, specs_id, type_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(0, len(res))
        res = db.volume_type_get(self.ctxt, type_id)
        self.assertIsNone(res['qos_specs_id'])
Example #3
0
    def test_qos_specs_disassociate(self):
        type_id = volume_types.create(self.ctxt, "TypeName")["id"]
        specs_id = self._create_qos_specs("FakeQos")
        db.volume_type_qos_associate(self.ctxt, type_id, specs_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(res[0]["id"], type_id)
        self.assertEqual(res[0]["qos_specs_id"], specs_id)

        db.qos_specs_disassociate(self.ctxt, specs_id, type_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(len(res), 0)
        res = db.volume_type_get(self.ctxt, type_id)
        self.assertIsNone(res["qos_specs_id"])
Example #4
0
    def test_qos_specs_disassociate_all(self):
        specs_id = self._create_qos_specs('FakeQos')
        type1_id = volume_types.create(self.ctxt, 'Type1Name')['id']
        type2_id = volume_types.create(self.ctxt, 'Type2Name')['id']
        type3_id = volume_types.create(self.ctxt, 'Type3Name')['id']
        db.volume_type_qos_associate(self.ctxt, type1_id, specs_id)
        db.volume_type_qos_associate(self.ctxt, type2_id, specs_id)
        db.volume_type_qos_associate(self.ctxt, type3_id, specs_id)

        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(len(res), 3)

        db.qos_specs_disassociate_all(self.ctxt, specs_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(len(res), 0)
Example #5
0
    def test_qos_specs_disassociate_all(self):
        specs_id = self._create_qos_specs("FakeQos")
        type1_id = volume_types.create(self.ctxt, "Type1Name")["id"]
        type2_id = volume_types.create(self.ctxt, "Type2Name")["id"]
        type3_id = volume_types.create(self.ctxt, "Type3Name")["id"]
        db.volume_type_qos_associate(self.ctxt, type1_id, specs_id)
        db.volume_type_qos_associate(self.ctxt, type2_id, specs_id)
        db.volume_type_qos_associate(self.ctxt, type3_id, specs_id)

        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(len(res), 3)

        db.qos_specs_disassociate_all(self.ctxt, specs_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(len(res), 0)
Example #6
0
    def test_qos_specs_disassociate_all(self):
        specs_id = self._create_qos_specs('FakeQos')
        type1_id = volume_types.create(self.ctxt, 'Type1Name')['id']
        type2_id = volume_types.create(self.ctxt, 'Type2Name')['id']
        type3_id = volume_types.create(self.ctxt, 'Type3Name')['id']
        db.volume_type_qos_associate(self.ctxt, type1_id, specs_id)
        db.volume_type_qos_associate(self.ctxt, type2_id, specs_id)
        db.volume_type_qos_associate(self.ctxt, type3_id, specs_id)

        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(3, len(res))

        db.qos_specs_disassociate_all(self.ctxt, specs_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(0, len(res))
Example #7
0
 def test_associate_type_with_qos(self):
     self.assertRaises(exception.VolumeTypeNotFound,
                       db.volume_type_qos_associate, self.ctxt,
                       fake.VOLUME_ID, fake.QOS_SPEC_ID)
     type_id = volume_types.create(self.ctxt, 'TypeName')['id']
     specs_id = self._create_qos_specs('FakeQos')
     db.volume_type_qos_associate(self.ctxt, type_id, specs_id)
     res = db.qos_specs_associations_get(self.ctxt, specs_id)
     self.assertEqual(1, len(res))
     self.assertEqual(type_id, res[0]['id'])
     self.assertEqual(specs_id, res[0]['qos_specs_id'])
Example #8
0
    def test_qos_associations_get(self):
        self.assertRaises(exception.QoSSpecsNotFound, db.qos_specs_associations_get, self.ctxt, "Fake-UUID")

        type_id = volume_types.create(self.ctxt, "TypeName")["id"]
        specs_id = self._create_qos_specs("FakeQos")
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(len(res), 0)

        db.volume_type_qos_associate(self.ctxt, type_id, specs_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(len(res), 1)
        self.assertEqual(res[0]["id"], type_id)
        self.assertEqual(res[0]["qos_specs_id"], specs_id)

        type0_id = volume_types.create(self.ctxt, "Type0Name")["id"]
        db.volume_type_qos_associate(self.ctxt, type0_id, specs_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(len(res), 2)
        self.assertEqual(res[0]["qos_specs_id"], specs_id)
        self.assertEqual(res[1]["qos_specs_id"], specs_id)
Example #9
0
 def test_associate_type_with_qos(self):
     self.assertRaises(
         exception.VolumeTypeNotFound, db.volume_type_qos_associate, self.ctxt, "Fake-VOLID", "Fake-QOSID"
     )
     type_id = volume_types.create(self.ctxt, "TypeName")["id"]
     specs_id = self._create_qos_specs("FakeQos")
     db.volume_type_qos_associate(self.ctxt, type_id, specs_id)
     res = db.qos_specs_associations_get(self.ctxt, specs_id)
     self.assertEqual(len(res), 1)
     self.assertEqual(res[0]["id"], type_id)
     self.assertEqual(res[0]["qos_specs_id"], specs_id)
Example #10
0
 def test_associate_type_with_qos(self):
     self.assertRaises(exception.VolumeTypeNotFound,
                       db.volume_type_qos_associate, self.ctxt,
                       'Fake-VOLID', 'Fake-QOSID')
     type_id = volume_types.create(self.ctxt, 'TypeName')['id']
     specs_id = self._create_qos_specs('FakeQos')
     db.volume_type_qos_associate(self.ctxt, type_id, specs_id)
     res = db.qos_specs_associations_get(self.ctxt, specs_id)
     self.assertEqual(len(res), 1)
     self.assertEqual(res[0]['id'], type_id)
     self.assertEqual(res[0]['qos_specs_id'], specs_id)
Example #11
0
 def test_associate_type_with_qos(self):
     self.assertRaises(exception.VolumeTypeNotFound,
                       db.volume_type_qos_associate,
                       self.ctxt, 'Fake-VOLID', 'Fake-QOSID')
     type_id = volume_types.create(self.ctxt, 'TypeName')['id']
     specs_id = self._create_qos_specs('FakeQos')
     db.volume_type_qos_associate(self.ctxt, type_id, specs_id)
     res = db.qos_specs_associations_get(self.ctxt, specs_id)
     self.assertEqual(1, len(res))
     self.assertEqual(type_id, res[0]['id'])
     self.assertEqual(specs_id, res[0]['qos_specs_id'])
Example #12
0
    def test_qos_associations_get(self):
        self.assertRaises(exception.QoSSpecsNotFound,
                          db.qos_specs_associations_get, self.ctxt,
                          fake.WILL_NOT_BE_FOUND_ID)

        type_id = volume_types.create(self.ctxt, 'TypeName')['id']
        specs_id = self._create_qos_specs('FakeQos')
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(0, len(res))

        db.volume_type_qos_associate(self.ctxt, type_id, specs_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(1, len(res))
        self.assertEqual(type_id, res[0]['id'])
        self.assertEqual(specs_id, res[0]['qos_specs_id'])

        type0_id = volume_types.create(self.ctxt, 'Type0Name')['id']
        db.volume_type_qos_associate(self.ctxt, type0_id, specs_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(2, len(res))
        self.assertEqual(specs_id, res[0]['qos_specs_id'])
        self.assertEqual(specs_id, res[1]['qos_specs_id'])
Example #13
0
    def test_qos_associations_get(self):
        self.assertRaises(exception.QoSSpecsNotFound,
                          db.qos_specs_associations_get,
                          self.ctxt, 'Fake-UUID')

        type_id = volume_types.create(self.ctxt, 'TypeName')['id']
        specs_id = self._create_qos_specs('FakeQos')
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(0, len(res))

        db.volume_type_qos_associate(self.ctxt, type_id, specs_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(1, len(res))
        self.assertEqual(type_id, res[0]['id'])
        self.assertEqual(specs_id, res[0]['qos_specs_id'])

        type0_id = volume_types.create(self.ctxt, 'Type0Name')['id']
        db.volume_type_qos_associate(self.ctxt, type0_id, specs_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(2, len(res))
        self.assertEqual(specs_id, res[0]['qos_specs_id'])
        self.assertEqual(specs_id, res[1]['qos_specs_id'])
Example #14
0
    def test_qos_associations_get(self):
        self.assertRaises(exception.QoSSpecsNotFound,
                          db.qos_specs_associations_get, self.ctxt,
                          'Fake-UUID')

        type_id = volume_types.create(self.ctxt, 'TypeName')['id']
        specs_id = self._create_qos_specs('FakeQos')
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(len(res), 0)

        db.volume_type_qos_associate(self.ctxt, type_id, specs_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(len(res), 1)
        self.assertEqual(res[0]['id'], type_id)
        self.assertEqual(res[0]['qos_specs_id'], specs_id)

        type0_id = volume_types.create(self.ctxt, 'Type0Name')['id']
        db.volume_type_qos_associate(self.ctxt, type0_id, specs_id)
        res = db.qos_specs_associations_get(self.ctxt, specs_id)
        self.assertEqual(len(res), 2)
        self.assertEqual(res[0]['qos_specs_id'], specs_id)
        self.assertEqual(res[1]['qos_specs_id'], specs_id)
Example #15
0
def get_associations(context, specs_id):
    """Get all associations of given qos specs."""
    try:
        # query returns a list of volume types associated with qos specs
        associates = db.qos_specs_associations_get(context, specs_id)
    except db_exc.DBError as e:
        LOG.exception(_('DB error: %s') % e)
        msg = _('Failed to get all associations of ' 'qos specs %s') % specs_id
        LOG.warn(msg)
        raise exception.CinderException(message=msg)

    result = {}
    for vol_type in associates:
        result[vol_type['name']] = vol_type['id']

    return {specs_id: result}
Example #16
0
def get_associations(context, specs_id):
    """Get all associations of given qos specs."""
    try:
        # query returns a list of volume types associated with qos specs
        associates = db.qos_specs_associations_get(context, specs_id)
    except db_exc.DBError as e:
        LOG.exception(_('DB error: %s') % e)
        msg = _('Failed to get all associations of '
                'qos specs %s') % specs_id
        LOG.warn(msg)
        raise exception.CinderException(message=msg)

    result = {}
    for vol_type in associates:
        result[vol_type['name']] = vol_type['id']

    return {specs_id: result}
Example #17
0
def get_associations(context, specs_id):
    """Get all associations of given qos specs."""
    try:
        # query returns a list of volume types associated with qos specs
        associates = db.qos_specs_associations_get(context, specs_id)
    except db_exc.DBError as e:
        LOG.exception(_LE("DB error: %s") % e)
        msg = _("Failed to get all associations of " "qos specs %s") % specs_id
        LOG.warn(msg)
        raise exception.CinderException(message=msg)

    result = []
    for vol_type in associates:
        member = dict(association_type="volume_type")
        member.update(dict(name=vol_type["name"]))
        member.update(dict(id=vol_type["id"]))
        result.append(member)

    return result
Example #18
0
def get_associations(context, specs_id):
    """Get all associations of given qos specs."""
    try:
        # query returns a list of volume types associated with qos specs
        associates = db.qos_specs_associations_get(context, specs_id)
    except db_exc.DBError as e:
        LOG.exception(_('DB error: %s') % e)
        msg = _('Failed to get all associations of ' 'qos specs %s') % specs_id
        LOG.warn(msg)
        raise exception.CinderException(message=msg)

    result = []
    for vol_type in associates:
        member = dict(association_type='volume_type')
        member.update(dict(name=vol_type['name']))
        member.update(dict(id=vol_type['id']))
        result.append(member)

    return result
def get_associations(context, specs_id):
    """Get all associations of given qos specs."""
    try:
        # query returns a list of volume types associated with qos specs
        associates = db.qos_specs_associations_get(context, specs_id)
    except db_exc.DBError:
        LOG.exception(_LE('DB error:'))
        msg = _('Failed to get all associations of '
                'qos specs %s') % specs_id
        LOG.warning(msg)
        raise exception.CinderException(message=msg)

    result = []
    for vol_type in associates:
        member = dict(association_type='volume_type')
        member.update(dict(name=vol_type['name']))
        member.update(dict(id=vol_type['id']))
        result.append(member)

    return result
Example #20
0
def delete(context, qos_specs_id, force=False):
    """Marks qos specs as deleted.

    'force' parameter is a flag to determine whether should destroy
    should continue when there were entities associated with the qos specs.
    force=True indicates caller would like to mark qos specs as deleted
    even if there was entities associate with target qos specs.
    Trying to delete a qos specs still associated with entities will
    cause QoSSpecsInUse exception if force=False (default).
    """
    if qos_specs_id is None:
        msg = _("id cannot be None")
        raise exception.InvalidQoSSpecs(reason=msg)

    # check if there is any entity associated with this qos specs
    res = db.qos_specs_associations_get(context, qos_specs_id)
    if res and not force:
        raise exception.QoSSpecsInUse(specs_id=qos_specs_id)
    elif res and force:
        # remove all association
        db.qos_specs_disassociate_all(context, qos_specs_id)

    db.qos_specs_delete(context, qos_specs_id)
Example #21
0
def delete(context, qos_specs_id, force=False):
    """Marks qos specs as deleted.

    'force' parameter is a flag to determine whether should destroy
    should continue when there were entities associated with the qos specs.
    force=True indicates caller would like to mark qos specs as deleted
    even if there was entities associate with target qos specs.
    Trying to delete a qos specs still associated with entities will
    cause QoSSpecsInUse exception if force=False (default).
    """
    if qos_specs_id is None:
        msg = _("id cannot be None")
        raise exception.InvalidQoSSpecs(reason=msg)

    # check if there is any entity associated with this qos specs
    res = db.qos_specs_associations_get(context, qos_specs_id)
    if res and not force:
        raise exception.QoSSpecsInUse(specs_id=qos_specs_id)
    elif res and force:
        # remove all association
        db.qos_specs_disassociate_all(context, qos_specs_id)

    db.qos_specs_delete(context, qos_specs_id)
Example #22
0
 def get_all_types_for_qos(cls, context, qos_id):
     types = db.qos_specs_associations_get(context, qos_id)
     return base.obj_make_list(context, cls(context), objects.VolumeType,
                               types)