示例#1
0
    def datastore_version_find(cls, datastore_name,
                               datastore_version_name, version_number=None):
        """
        Helper to find a datastore version id for a given
        datastore and datastore version name.
        """
        db_api.configure_db(CONF)
        db_ds_record = DBDatastore.find_by(
            name=datastore_name
        )

        if not version_number:
            db_dsv_records = DBDatastoreVersion.find_all(
                datastore_id=db_ds_record.id,
                name=datastore_version_name,
            )
            if db_dsv_records.count() == 0:
                raise exception.DatastoreVersionNotFound(
                    version=datastore_version_name)
            if db_dsv_records.count() > 1:
                raise exception.DatastoreVersionsNoUniqueMatch(
                    name=datastore_version_name)

            db_dsv_record = db_dsv_records.first()
        else:
            db_dsv_record = DBDatastoreVersion.find_by(
                datastore_id=db_ds_record.id,
                name=datastore_version_name,
                version=version_number
            )

        return db_dsv_record.id
示例#2
0
 def load(cls, id_or_name):
     try:
         return cls(DBDatastoreVersion.find_by(id=id_or_name))
     except exception.ModelNotFoundError:
         try:
             return cls(DBDatastoreVersion.find_by(name=id_or_name))
         except exception.ModelNotFoundError:
             raise exception.DatastoreVersionNotFound(version=id_or_name)
示例#3
0
文件: models.py 项目: zh-f/trove
 def load(cls, datastore, id_or_name):
     try:
         return cls(DBDatastoreVersion.find_by(datastore_id=datastore.id,
                                               id=id_or_name))
     except exception.ModelNotFoundError:
         versions = DBDatastoreVersion.find_all(datastore_id=datastore.id,
                                                name=id_or_name)
         if versions.count() == 0:
             raise exception.DatastoreVersionNotFound(version=id_or_name)
         if versions.count() > 1:
             raise exception.NoUniqueMatch(name=id_or_name)
         return cls(versions.first())
示例#4
0
    def load(cls, datastore, id_or_name, version=None):
        if uuidutils.is_uuid_like(id_or_name):
            return cls(DBDatastoreVersion.find_by(datastore_id=datastore.id,
                                                  id=id_or_name))

        if not version:
            versions = DBDatastoreVersion.find_all(datastore_id=datastore.id,
                                                   name=id_or_name)
            if versions.count() == 0:
                raise exception.DatastoreVersionNotFound(version=id_or_name)
            if versions.count() > 1:
                raise exception.DatastoreVersionsNoUniqueMatch(name=id_or_name)

            db_version = versions.first()
        else:
            try:
                db_version = DBDatastoreVersion.find_by(
                    datastore_id=datastore.id,
                    name=id_or_name,
                    version=version)
            except exception.ModelNotFoundError:
                raise exception.DatastoreVersionNotFound(version=version)

        return cls(db_version)
示例#5
0
 def load_by_uuid(cls, uuid):
     try:
         return cls(DBDatastoreVersion.find_by(id=uuid))
     except exception.ModelNotFoundError:
         raise exception.DatastoreVersionNotFound(version=uuid)