Created
March 1, 2016 22:38
-
-
Save akutz/4adac243c967f095f518 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"id": "https://github.com/emccode/libstorage", | |
"$schema": "http://json-schema.org/draft-04/schema#", | |
"$ref": "#/definitions/serviceInfo", | |
"definitions": { | |
"volume": { | |
"properties": { | |
"id": { | |
"type": "string", | |
"description": "The volume ID." | |
}, | |
"name": { | |
"type": "string", | |
"description": "The volume name." | |
}, | |
"type": { | |
"type": "string", | |
"description": "The volume type." | |
}, | |
"attachments": { | |
"type": "array", | |
"description": "The volume's attachments.", | |
"items": { "$ref": "#/definitions/volumeAttachment" } | |
}, | |
"availabilityZone": { | |
"type": "string", | |
"description": "The zone for which the volume is available." | |
}, | |
"iops": { | |
"type": "number", | |
"description": "The volume IOPs." | |
}, | |
"networkName": { | |
"type": "string", | |
"description": "The name of the network on which the volume resides." | |
}, | |
"size": { | |
"type": "number", | |
"description": "The volume size (GB)." | |
}, | |
"status": { | |
"type": "string", | |
"description": "The volume status." | |
}, | |
"fields": { "$ref": "#/definitions/fields" } | |
}, | |
"required": [ "id", "name", "size" ], | |
"additionalProperties": false | |
}, | |
"volumeAttachment": { | |
"properties": { | |
"instanceID": { "$ref": "#/definitions/instanceID" }, | |
"deviceName": { | |
"type": "string", | |
"description": "The name of the device on which the volume to which the object is attached is mounted." | |
}, | |
"status": { | |
"type": "string", | |
"description": "The status of the attachment." | |
}, | |
"volumeID": { | |
"type": "string", | |
"description": "The ID of the volume to which the attachment belongs." | |
}, | |
"fields": { "$ref": "#/definitions/fields" } | |
}, | |
"required": [ "instanceID", "deviceName", "volumeID" ], | |
"additionalProperties": false | |
}, | |
"instanceID": { | |
"properties": { | |
"id": { | |
"type": "string", | |
"description": "The instance ID." | |
}, | |
"metadata": { | |
"type": "object", | |
"description": "Extra information about the instance ID." | |
} | |
}, | |
"required": [ "id" ], | |
"additionalProperties": false | |
}, | |
"instance": { | |
"properties": { | |
"instanceID": { "$ref": "#/definitions/instanceID" }, | |
"name": { | |
"type": "string", | |
"description": "The name of the instance." | |
}, | |
"providerName": { | |
"type": "string", | |
"description": "The name of the provider that owns the object." | |
}, | |
"region": { | |
"type": "string", | |
"description": "The region from which the object originates." | |
}, | |
"fields": { "$ref": "#/definitions/fields" } | |
}, | |
"required": [ "id" ], | |
"additionalProperties": false | |
}, | |
"snapshot": { | |
"properties": { | |
"id": { | |
"type": "string", | |
"description": "The snapshot's ID." | |
}, | |
"name": { | |
"type": "string", | |
"description": "The name of the snapshot." | |
}, | |
"description": { | |
"type": "string", | |
"description": "A description of the snapshot." | |
}, | |
"startTime": { | |
"type": "number", | |
"description": "The time (epoch) at which the request to create the snapshot was submitted." | |
}, | |
"status": { | |
"type": "string", | |
"description": "The status of the snapshot." | |
}, | |
"volumeID": { | |
"type": "string", | |
"description": "The ID of the volume to which the snapshot belongs." | |
}, | |
"volumeSize": { | |
"type": "number", | |
"description": "The size of the volume to which the snapshot belongs." | |
}, | |
"fields": { "$ref": "#/definitions/fields" } | |
}, | |
"required": [ "id" ], | |
"additionalProperties": false | |
}, | |
"serviceInfo": { | |
"properties": { | |
"name": { | |
"type": "string", | |
"description": "Name is the service's name." | |
}, | |
"driver": { "$ref": "#/definitions/driverInfo" } | |
}, | |
"required": [ "name", "driver" ], | |
"additionalProperties": false | |
}, | |
"driverInfo": { | |
"properties": { | |
"name": { | |
"type": "string", | |
"description": "Ignore is a flag that indicates whether the client logic should invoke the GetNextAvailableDeviceName function prior to submitting an AttachVolume request to the server." | |
}, | |
"type": { | |
"type": "string", | |
"description": "Type is the type of storage the driver provides: block, nas, object." | |
}, | |
"nextDevice": { "$ref": "#/definitions/nextDeviceInfo" }, | |
"executors": { | |
"type": "array", | |
"description": "Executors is information about the driver's client-side executors.", | |
"items": { "$ref": "#/definitions/executorInfo" } | |
} | |
}, | |
"required": [ "name", "type" ] | |
}, | |
"executorInfo": { | |
"properties": { | |
"ignore": { | |
"type": "boolean", | |
"description": "Ignore is a flag that indicates whether the client logic should invoke the GetNextAvailableDeviceName function prior to submitting an AttachVolume request to the server." | |
}, | |
"prefix": { | |
"type": "string", | |
"description": "Prefix is the first part of a device path's value after the \"/dev/\" portion. For example, the prefix in \"/dev/xvda\" is \"xvd\"." | |
}, | |
"pattern": { | |
"type": "string", | |
"description": "Pattern is the regex to match the part of a device path after the prefix." | |
} | |
} | |
}, | |
"nextDeviceInfo": { | |
"properties": { | |
"ignore": { | |
"type": "boolean", | |
"description": "Ignore is a flag that indicates whether the client logic should invoke the GetNextAvailableDeviceName function prior to submitting an AttachVolume request to the server." | |
}, | |
"prefix": { | |
"type": "string", | |
"description": "Prefix is the first part of a device path's value after the \"/dev/\" portion. For example, the prefix in \"/dev/xvda\" is \"xvd\"." | |
}, | |
"pattern": { | |
"type": "string", | |
"description": "Pattern is the regex to match the part of a device path after the prefix." | |
} | |
} | |
}, | |
"fields": { | |
"description": "Fields are additional properties that can be defined for this type.", | |
"patternProperties": { | |
".+": { "type": "string" } | |
}, | |
"additionalProperties": true | |
}, | |
"volumeMap": { | |
"patternProperties": { | |
"^[a-zA-Z].+$": { "$ref": "#/definitions/volume" } | |
}, | |
"additionalProperties": false | |
}, | |
"snapshotMap": { | |
"patternProperties": { | |
"^[a-zA-Z].+$": { "$ref": "#/definitions/snapshot" } | |
}, | |
"additionalProperties": false | |
}, | |
"serviceInfoMap": { | |
"patternProperties": { | |
"^[a-zA-Z].+$": { "$ref": "#/definitions/serviceInfo" } | |
}, | |
"additionalProperties": false | |
}, | |
"driverInfoMap": { | |
"patternProperties": { | |
"^[a-zA-Z].+$": { "$ref": "#/definitions/driverInfo" } | |
}, | |
"additionalProperties": false | |
}, | |
"serviceVolumeMap": { | |
"patternProperties": { | |
"^[a-zA-Z].+$": { "$ref": "#/definitions/volumeMap" } | |
}, | |
"additionalProperties": false | |
}, | |
"serviceSnapshotMap": { | |
"patternProperties": { | |
"^[a-zA-Z].+$": { "$ref": "#/definitions/snapshotMap" } | |
}, | |
"additionalProperties": false | |
}, | |
"opts": { | |
"description": "Opts are additional properties that can be defined for POST requests.", | |
"patternProperties": { | |
".+": { "$ref": "#/definitions/opts" } | |
}, | |
"additionalProperties": true | |
}, | |
"volumeCreateRequest": { | |
"properties": { | |
"name": { | |
"type": "string" | |
}, | |
"availabilityZone": { | |
"type": "string" | |
}, | |
"iops": { | |
"type": "number" | |
}, | |
"size": { | |
"type": "number" | |
}, | |
"type": { | |
"type": "string" | |
}, | |
"opts": { "$ref" : "#/definitions/opts" } | |
}, | |
"required": [ "name" ], | |
"additionalProperties": false | |
}, | |
"volumeCreateFromSnapshotRequest": { | |
"properties": { | |
"volumeName": { | |
"type": "string" | |
}, | |
"opts": { "$ref" : "#/definitions/opts" } | |
}, | |
"required": [ "volumeName" ], | |
"additionalProperties": false | |
}, | |
"volumeCopyRequest": { | |
"properties": { | |
"volumeName": { | |
"type": "string" | |
}, | |
"opts": { "$ref" : "#/definitions/opts" } | |
}, | |
"required": [ "volumeName" ], | |
"additionalProperties": false | |
}, | |
"volumeSnapshotRequest": { | |
"properties": { | |
"snapshotName": { | |
"type": "string" | |
}, | |
"opts": { "$ref" : "#/definitions/opts" } | |
}, | |
"required": [ "snapshotName" ], | |
"additionalProperties": false | |
}, | |
"volumeRemoveRequest": { | |
"properties": { | |
"opts": { "$ref" : "#/definitions/opts" } | |
}, | |
"additionalProperties": false | |
}, | |
"volumeAttachRequest": { | |
"properties": { | |
"nextDeviceName": { | |
"type": "string" | |
}, | |
"opts": { "$ref" : "#/definitions/opts" } | |
}, | |
"required": [ "nextDeviceName" ], | |
"additionalProperties": false | |
}, | |
"volumeDetachRequest": { | |
"properties": { | |
"opts": { "$ref" : "#/definitions/opts" } | |
}, | |
"additionalProperties": false | |
}, | |
"volumeDetachAllRequest": { | |
"properties": { | |
"opts": { "$ref" : "#/definitions/opts" } | |
}, | |
"additionalProperties": false | |
}, | |
"snapshotCopyRequest": { | |
"properties": { | |
"snapshotName": { | |
"type": "string" | |
}, | |
"destinationID": { | |
"type": "string" | |
}, | |
"opts": { "$ref" : "#/definitions/opts" } | |
}, | |
"required": [ "snapshotName", "destinationID" ], | |
"additionalProperties": false | |
}, | |
"snapshotRemoveRequest": { | |
"properties": { | |
"opts": { "$ref" : "#/definitions/opts" } | |
}, | |
"additionalProperties": false | |
}, | |
"error": { | |
"properties": { | |
"type": { | |
"type": "string", | |
"pattern": "^.{10,}|.*[Ee]rror$" | |
}, | |
"httpStatus": { | |
"type": "number", | |
"minimum": 400, | |
"maximum": 599 | |
}, | |
"message": { | |
"type": "string", | |
"pattern": "^.{20,}$" | |
} | |
}, | |
"required": [ "type", "httpStatus", "message" ], | |
"additionalProperties": false | |
}, | |
"invalidRequestError": { | |
"$ref" : "#/definitions/error", | |
"properties": { | |
"type": { | |
"type": "string", | |
"enum": [ "invalidRequest" ] | |
}, | |
"httpStatus": { | |
"type": "number", | |
"enum": [ 400 ] | |
} | |
} | |
}, | |
"unauthorizedRequestError": { | |
"$ref" : "#/definitions/error", | |
"properties": { | |
"type": { | |
"type": "string", | |
"enum": [ "unauthorizedRequest" ] | |
}, | |
"httpStatus": { | |
"type": "number", | |
"enum": [ 401, 403 ] | |
} | |
} | |
}, | |
"resourceNotFoundError": { | |
"$ref" : "#/definitions/error", | |
"properties": { | |
"type": { | |
"type": "string", | |
"enum": [ "resourceNotFound" ] | |
}, | |
"httpStatus": { | |
"type": "number", | |
"enum": [ 404 ] | |
} | |
} | |
}, | |
"internalServerError": { | |
"$ref" : "#/definitions/error", | |
"properties": { | |
"type": { | |
"type": "string", | |
"enum": [ "internalServerError" ] | |
}, | |
"httpStatus": { | |
"type": "number", | |
"enum": [ 500 ] | |
} | |
} | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{ | |
"name": "testservice3", | |
"driver": { | |
"name": "mockDriver3", | |
"type": "block", | |
"nextDevice": { | |
"ignore": false, | |
"prefix": "xvd", | |
"pattern": "\\w" | |
}, | |
"executors": [ | |
{ | |
"md5checksum": "", | |
"name": "mockDriver3-executor.sh" | |
} | |
] | |
} | |
}, | |
{ | |
"name": "testservice1", | |
"driver": { | |
"name": "mockDriver1", | |
"type": "block", | |
"nextDevice": { | |
"ignore": false, | |
"prefix": "xvd", | |
"pattern": "\\w" | |
}, | |
"executors": [ | |
{ | |
"md5checksum": "", | |
"name": "mockDriver1-executor.sh" | |
} | |
] | |
} | |
}, | |
{ | |
"name": "testservice2", | |
"driver": { | |
"name": "mockDriver2", | |
"type": "block", | |
"nextDevice": { | |
"ignore": true, | |
"prefix": "xvd", | |
"pattern": "\\w" | |
}, | |
"executors": [ | |
{ | |
"md5checksum": "", | |
"name": "mockDriver2-executor.sh" | |
} | |
] | |
} | |
} | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment