Ejemplo n.º 1
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,}
    """
    LOG.debug('qos_specs.update(): specs %s', specs)

    try:
        utils.validate_dictionary_string_length(specs)
        qos_spec = objects.QualityOfServiceSpecs.get_by_id(
            context, qos_specs_id)

        if 'consumer' in specs:
            qos_spec.consumer = specs['consumer']
            # If we need to modify specs, copy so we don't cause unintended
            # consequences for the caller
            specs = specs.copy()
            del specs['consumer']

        # Update any values in specs dict
        qos_spec.specs.update(specs)

        qos_spec.save()
    except exception.InvalidInput as e:
        raise exception.InvalidQoSSpecs(reason=e)
    except db_exc.DBError:
        LOG.exception('DB error:')
        raise exception.QoSSpecsUpdateFailed(specs_id=qos_specs_id,
                                             qos_specs=specs)

    return qos_spec
Ejemplo n.º 2
0
def return_qos_specs_update(context, id, specs):
    if id == "777":
        raise exception.QoSSpecsNotFound(specs_id=id)
    elif id == "888":
        raise exception.InvalidQoSSpecs(reason=str(id))
    elif id == "999":
        raise exception.QoSSpecsUpdateFailed(specs_id=id, qos_specs=specs)
    pass
Ejemplo n.º 3
0
def return_qos_specs_update(context, id, specs):
    if id == fake.WILL_NOT_BE_FOUND_ID:
        raise exception.QoSSpecsNotFound(specs_id=id)
    elif id == fake.INVALID_ID:
        raise exception.InvalidQoSSpecs(reason=id)
    elif id == fake.UPDATE_FAILED_ID:
        raise exception.QoSSpecsUpdateFailed(specs_id=id, qos_specs=specs)
    pass
Ejemplo n.º 4
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