Skip to content

Instantly share code, notes, and snippets.

@akutz
Created March 14, 2016 20:41
Show Gist options
  • Save akutz/c686770145f362f968dd to your computer and use it in GitHub Desktop.
Save akutz/c686770145f362f968dd to your computer and use it in GitHub Desktop.
{
"id": "https://github.com/emccode/libstorage",
"$schema": "http://json-schema.org/draft-04/schema#",
"$ref": "#/definitions/volumeMap",
"definitions": {
"volume": {
"type": "object",
"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": {
"type": "object",
"properties": {
"instanceID": { "$ref": "#/definitions/instanceID" },
"deviceName": {
"type": "string",
"description": "The name of the device on to which the volume 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."
},
"mountPoint": {
"type": "string",
"description": "The file system path to which the volume is mounted."
},
"fields": { "$ref": "#/definitions/fields" }
},
"required": [ "instanceID", "deviceName", "volumeID" ],
"additionalProperties": false
},
"instanceID": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The instance ID."
},
"metadata": {
"type": "object",
"description": "Extra information about the instance ID."
}
},
"required": [ "id" ],
"additionalProperties": false
},
"instance": {
"type": "object",
"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": {
"type": "object",
"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": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name is the service's name."
},
"driver": { "$ref": "#/definitions/driverInfo" }
},
"required": [ "name", "driver" ],
"additionalProperties": false
},
"driverInfo": {
"type": "object",
"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" ],
"additionalProperties": false
},
"executorInfo": {
"type": "object",
"properties": {
"md5checksum": {
"type": "string",
"description": "MD5Checksum is the MD5 checksum of the executor. This can be used to determine if a local copy of the executor needs to be updated."
},
"name": {
"type": "string",
"description": "Name is the file name of the executor, including the file extension."
}
},
"required": [ "md5checksum", "name" ],
"additionalProperties": false
},
"nextDeviceInfo": {
"type": "object",
"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."
}
},
"additionalProperties": false
},
"fields": {
"type": "object",
"description": "Fields are additional properties that can be defined for this type.",
"patternProperties": {
".+": { "type": "string" }
},
"additionalProperties": true
},
"volumeMap": {
"type": "object",
"properties": {
"error": { "$ref": "#/definitions/error" }
},
"patternProperties": {
"^(?!error)[a-zA-Z].+$": { "$ref": "#/definitions/volume" }
},
"additionalProperties": false
},
"snapshotMap": {
"type": "object",
"properties": {
"error": { "$ref": "#/definitions/error" }
},
"patternProperties": {
"^(?!error)[a-zA-Z].+$": { "$ref": "#/definitions/snapshot" }
},
"additionalProperties": false
},
"serviceInfoMap": {
"type": "object",
"patternProperties": {
"^[a-zA-Z].+$": { "$ref": "#/definitions/serviceInfo" }
},
"additionalProperties": false
},
"driverInfoMap": {
"type": "object",
"patternProperties": {
"^[a-zA-Z].+$": { "$ref": "#/definitions/driverInfo" }
},
"additionalProperties": false
},
"serviceVolumeMap": {
"type": "object",
"properties": {
"error": { "$ref": "#/definitions/error" }
},
"patternProperties": {
"^(?!error)[a-zA-Z].+$": { "$ref": "#/definitions/volumeMap" }
},
"additionalProperties": false
},
"serviceSnapshotMap": {
"type": "object",
"properties": {
"error": { "$ref": "#/definitions/error" }
},
"patternProperties": {
"^(?!error)[a-zA-Z].+$": { "$ref": "#/definitions/snapshotMap" }
},
"additionalProperties": false
},
"opts": {
"type": "object",
"description": "Opts are additional properties that can be defined for POST requests.",
"patternProperties": {
".+": {
"anyOf": [
{ "type": "array" },
{ "type": "boolean" },
{ "type": "integer" },
{ "type": "number" },
{ "type": "null" },
{ "type": "string" },
{ "$ref": "#/definitions/opts" }
]
}
},
"additionalProperties": true
},
"volumeCreateRequest": {
"type": "object",
"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": {
"type": "object",
"properties": {
"volumeName": {
"type": "string"
},
"opts": { "$ref" : "#/definitions/opts" }
},
"required": [ "volumeName" ],
"additionalProperties": false
},
"volumeCopyRequest": {
"type": "object",
"properties": {
"volumeName": {
"type": "string"
},
"opts": { "$ref" : "#/definitions/opts" }
},
"required": [ "volumeName" ],
"additionalProperties": false
},
"volumeSnapshotRequest": {
"type": "object",
"properties": {
"snapshotName": {
"type": "string"
},
"opts": { "$ref" : "#/definitions/opts" }
},
"required": [ "snapshotName" ],
"additionalProperties": false
},
"volumeAttachRequest": {
"type": "object",
"properties": {
"nextDeviceName": {
"type": "string"
},
"opts": { "$ref" : "#/definitions/opts" }
},
"additionalProperties": false
},
"volumeDetachRequest": {
"type": "object",
"properties": {
"opts": { "$ref" : "#/definitions/opts" }
},
"additionalProperties": false
},
"volumeDetachAllRequest": {
"type": "object",
"properties": {
"opts": { "$ref" : "#/definitions/opts" }
},
"additionalProperties": false
},
"snapshotCopyRequest": {
"type": "object",
"properties": {
"snapshotName": {
"type": "string"
},
"destinationID": {
"type": "string"
},
"opts": { "$ref" : "#/definitions/opts" }
},
"required": [ "snapshotName", "destinationID" ],
"additionalProperties": false
},
"snapshotRemoveRequest": {
"type": "object",
"properties": {
"opts": { "$ref" : "#/definitions/opts" }
},
"additionalProperties": false
},
"error": {
"type": "object",
"properties": {
"message": {
"type": "string",
"pattern": "^.{10,}|.*[Ee]rror$"
},
"status": {
"type": "number",
"minimum": 400,
"maximum": 599
},
"error": {
"type": "object",
"additionalProperties": true
}
},
"required": [ "message", "status" ],
"additionalProperties": false
}
}
}
{
"mockDriver3-vol-000": {
"availabilityZone": "mockDriver3-zone-000",
"name": "mockDriver3-Volume 0",
"size": 10240,
"id": "mockDriver3-vol-000",
"type": "gold"
},
"mockDriver3-vol-001": {
"availabilityZone": "mockDriver3-zone-001",
"name": "mockDriver3-Volume 1",
"size": 40960,
"id": "mockDriver3-vol-001",
"type": "gold"
},
"mockDriver3-vol-002": {
"availabilityZone": "mockDriver3-zone-002",
"name": "mockDriver3-Volume 2",
"size": 163840,
"id": "mockDriver3-vol-002",
"type": "gold"
},
"error": {
"status": 500,
"message": "unable to contact remote host"
},
"error": {
"status": 500,
"message": "unable to contact remote host"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment