Onedata API Reference

REST API references for Onezone, Oneprovider, and Onepanel.

Add storage

POST /provider/storages

Adds additional storage resources to the provider.

Example cURL requests

Add storage

curl -H "X-Auth-Token: $TOKEN" -X POST https://$OP_PANEL_HOST/api/v3/onepanel/provider/storages \
-H "Content-Type: application/json" -d '{
    "My S3 Storage": {
        "type": "s3",
        "hostname": "https://iam.example.com:443",
        "bucketName": "bucket1.iam.example.com"
    },
    "My Posix Storage": {
        "type": "posix",
        "mountPoint": "/volumes/inexistent/path"
    }
}'

{
  "My S3 Storage": {
      "id": "f891d1ddf693232bbf0c11fe3cd9f7e7cheda9"
  },
  "My Posix Storage": {
      "error": {
          "id": "storageTestFailed",
          "description": "Failed to write test file on storage.",
          "details": {
              "operation": "write"
          }
      }
  }
}

Request body

application/json

The configuration details of storage resources to be added to the provider deployment. Must be an object with unique names for the storages as keys and their corresponding configuration (objects) as values - see the request body example.

Property
Type & Description
<key>
object

The storage configuration.

type
discriminator string

The type of storage.

type = "posix"

Any POSIX compatible storage, typically attached over high-throughput local network, such as NFS.

Type of the storage. Must be given explicitly and must match the actual type of subject storage - this redundancy is needed due to limitations of OpenAPI polymorphism.

Type of the storage. Must be given explicitly and must match the actual type of subject storage - this redundancy is needed due to limitations of OpenAPI polymorphism.

Type of the storage. Must be given explicitly and must match the actual type of subject storage - this redundancy is needed due to limitations of OpenAPI polymorphism.

The type of storage.

type = "glusterfs"

GlusterFS volume directly attached to the Oneprovider.

The type of storage.

type = "nulldevice"

POSIX compatible storage which emulates behavior of /dev/null on local filesystem. Allows running various performance tests, which are not impacted by actual storage latency.

Type of the storage. Must be given explicitly and must match the actual type of subject storage - this redundancy is needed due to limitations of OpenAPI polymorphism.

Type of the storage. Must be given explicitly and must match the actual type of subject storage - this redundancy is needed due to limitations of OpenAPI polymorphism.

The type of storage.

type = "nfs"

NFS storage.

Type of the storage. Must be given explicitly and must match the actual type of subject storage - this redundancy is needed due to limitations of OpenAPI polymorphism.

timeout
integer

Storage operation timeout in milliseconds.

lumaFeed
string

Type of feed for LUMA DB. Feed is a source of user/group mappings used to populate the LUMA DB. For more info please read: https://onedata.org/#/home/documentation/doc/administering_onedata/luma.html

Enum:
auto local external
lumaFeedUrl
string

URL of external feed for LUMA DB. Relevant only if lumaFeed equals external.

lumaFeedApiKey
string

API key checked by external service used as feed for LUMA DB. Relevant only if lumaFeed equals external.

qosParameters
object

Map with key-value pairs used for describing storage QoS parameters.

importedStorage
boolean

Defines whether storage contains existing data to be imported.

archiveStorage
boolean

Defines whether storage supports long-term dataset archiving.

readonly
boolean

Defines whether the storage is readonly. If enabled, Oneprovider will block any operation that writes, modifies or deletes data on the storage. Such storage can only be used to import data into the space. Mandatory to ensure proper behaviour if the backend storage is actually configured as readonly. This option is available only for imported storages.

Request Examples

application/json
{
  "s3": {
    "type": "s3",
    "s3Hostname": "https://s3.example.com",
    "iamHostname": "iam.example.com",
    "bucketName": "bucket1.iam.example.com",
    "accessKey": "4efb70ad3e1fc8dd73c721b8f683b2e831503892",
    "secretKey": "fdeac26aedd3a179f9551d7007cc6a6273165782"
  },
  "posix": {
    "type": "posix",
    "mountPoint": "/mnt/posix/onedata-space"
  }
}

Responses

application/json
200

Response consists of map, where keys are names of storages passed in the request, and values respresent id of added storage.

Property
Type & Description
<key>
object
error
object (ErrorDetails)

Object describing an error.

id required
string

String identifying the error type. Does not change between error instances.

description required
string

Human readable error description. May contain information specific to given error instance.

details
object

Details about the error instance. The object schema is specific to each error type.

id
string

Id of added storage.

400

Invalid request. Response consists of map, where keys are names of storages passed in the request, and values respresent id of added storage, or an error describing why the storage has not been added.

Property
Type & Description
<key>
object
error
object (ErrorDetails)

Object describing an error.

id required
string

String identifying the error type. Does not change between error instances.

description required
string

Human readable error description. May contain information specific to given error instance.

details
object

Details about the error instance. The object schema is specific to each error type.

id
string

Id of added storage.

401

Unauthorized request.

403

Forbidden request.

500

Internal server error.

Property
Type & Description
error
object (ErrorDetails)

Object describing an error.

id required
string

String identifying the error type. Does not change between error instances.

description required
string

Human readable error description. May contain information specific to given error instance.

details
object

Details about the error instance. The object schema is specific to each error type.

Example

application/json
{
  "error": {
    "id": "badValueString",
    "details": {
      "key": "name"
    },
    "description": "Bad value: provided \"name\" must be a string."
  }
}
503

Services needed to fulfill this request are not running.