4. Cloudmesh Multi Cloud Open API Interface¶
Cloudmesh-storage also provides an OpenAPI specification that allows users to run the multi cloud storage services using a single REST service in addition to the command line interface.
The REST service is developed independent of the storage service provider and
users can switch between providers by setting the storage
variable as
follows:
$ cms set storage='azureblob'
Note: azureblob
can be replaced with the desired service in the above command.
To invoke the server, navigate to the OpenAPI folder in the cloudmesh-storage directory and use:
$ cms openapi server start ./openapi_storage.yaml
to start up the server on the default address and port. Once the server is started all cloudmesh-storage functions can be accessed using the following endpoints.
http://localhost:8080//cloudmesh/storage/v1/put
http://localhost:8080//cloudmesh/storage/v1/get
http://localhost:8080//cloudmesh/storage/v1/list
http://localhost:8080//cloudmesh/storage/v1/search
http://localhost:8080//cloudmesh/storage/v1/delete
http://localhost:8080//cloudmesh/storage/v1/create_dir
All of the options described in the cloudmesh-storage
section are available
in the OpenAPI specification as arguments. For example, to list the files
from a specific directory on the service, the following URL can be visited:
http://localhost:8080/cloudmesh/storage/v1/list?service={storage}&directory=%2fapitest&recursive=True
4.1. Pytests¶
A generic pytest is also developed which is available in the following directory
The generic pytest that works accross providers and can be invoked as follows
$ cms set storage=azureblob
$ pytest -v --capture=no tests/test_openapi_storage.py
$ cms set storage=box
$ pytest -v --capture=no tests/test_openapi_storage.py
$ cms set storage=gdrive
$ pytest -v --capture=no tests/test_openapi_storage.py
$ cms set storage=awss3
$ pytest -v --capture=no tests/test_openapi_storage.py