def destroy(self, force=False): """Deletes the QoS spec. :param force: when force is True, all volume_type mappings for this QoS are deleted. When force is False and volume_type mappings still exist, a QoSSpecsInUse exception is thrown """ if self.volume_types: if not force: raise exception.QoSSpecsInUse(specs_id=self.id) # remove all association db.qos_specs_disassociate_all(self._context, self.id) updated_values = db.qos_specs_delete(self._context, self.id) self.update(updated_values) self.obj_reset_changes(updated_values.keys())
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)
def return_qos_specs_delete(context, id, force): if id == fake.WILL_NOT_BE_FOUND_ID: raise exception.QoSSpecsNotFound(specs_id=id) elif id == fake.IN_USE_ID: raise exception.QoSSpecsInUse(specs_id=id) pass
def return_qos_specs_delete(context, id, force): if id == "777": raise exception.QoSSpecsNotFound(specs_id=id) elif id == "666": raise exception.QoSSpecsInUse(specs_id=id) pass