Example #1
0
File: models.py Project: zh-f/trove
def get_datastore_or_version(datastore=None, datastore_version=None):
    """
    Validate that the specified datastore/version exists, and return the
    corresponding ids.  This differs from 'get_datastore_version' in that
    you don't need to specify both - specifying only a datastore will
    return 'None' in the ds_ver field.  Raises DatastoreNoVersion if
    you pass in a ds_ver without a ds.  Originally designed for module
    management.

    :param datastore:           Datastore name or id
    :param datastore_version:   Version name or id
    :return:                    Tuple of ds_id, ds_ver_id if found
    """

    datastore_id = None
    datastore_version_id = None
    if datastore:
        if datastore_version:
            ds, ds_ver = get_datastore_version(
                type=datastore, version=datastore_version)
            datastore_id = ds.id
            datastore_version_id = ds_ver.id
        else:
            ds = Datastore.load(datastore)
            datastore_id = ds.id
    elif datastore_version:
        # Cannot specify version without datastore.
        raise exception.DatastoreNoVersion(
            datastore=datastore, version=datastore_version)
    return datastore_id, datastore_version_id
Example #2
0
def get_datastore_version(type=None, version=None, return_inactive=False,
                          version_number=None):
    datastore = type or CONF.default_datastore
    if not datastore:
        raise exception.DatastoreDefaultDatastoreNotDefined()
    try:
        datastore = Datastore.load(datastore)
    except exception.DatastoreNotFound:
        if not type:
            raise exception.DatastoreDefaultDatastoreNotFound(
                datastore=datastore)
        raise

    version_id = version or datastore.default_version_id
    if not version_id:
        raise exception.DatastoreDefaultVersionNotFound(
            datastore=datastore.name)
    datastore_version = DatastoreVersion.load(datastore, version_id,
                                              version=version_number)
    if datastore_version.datastore_id != datastore.id:
        raise exception.DatastoreNoVersion(datastore=datastore.name,
                                           version=datastore_version.name)
    if not datastore_version.active and not return_inactive:
        raise exception.DatastoreVersionInactive(
            version=datastore_version.name)
    return (datastore, datastore_version)
Example #3
0
def get_datastore_version(type=None, version=None):
    datastore = type or CONF.default_datastore
    if not datastore:
        raise exception.DatastoreDefaultDatastoreNotFound()
    datastore = Datastore.load(datastore)
    version = version or datastore.default_version_id
    if not version:
        raise exception.DatastoreDefaultVersionNotFound(datastore=
                                                        datastore.name)
    datastore_version = DatastoreVersion.load(version)
    if datastore_version.datastore_id != datastore.id:
        raise exception.DatastoreNoVersion(datastore=datastore.name,
                                           version=datastore_version.name)
    if not datastore_version.active:
        raise exception.DatastoreVersionInactive(version=
                                                 datastore_version.name)
    return (datastore, datastore_version)