GET /ctrl/1.0/NetworkPeersList HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"PeerID": {
"networks": {
"NetID": {
"mac": MAC Address
}, ...}
}, ...}
}
List currently active recovery tasks.
GET /ctrl/1.0/TasksList HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": [{
"allObjects": int,
"completedObjects": int,
"diskId": DiskID,
"dispatchedObjects": int,
"transactionId": long,
"unresolvedObjects": int
}, ...]
}
GET /ctrl/1.0/ServicesList HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"clients": {
"CientID": {
"id": CientID,
"nodeId": NodeID,
"status": ClientStatus,
"version": string
}, ...},
"mgmt": {
"id": 65535,
"nodeId": NodeID,
"status": ClientStatus,
"version": string
},
"servers": {
"ServerID": {
"id": ServerID,
"missingDisks": [DiskID, ...],
"nodeId": NodeID,
"pendingDisks": [DiskID, ...],
"status": ServerStatus,
"version": string
}, ...}
}
}
GET /ctrl/1.0/ServersListBlocked HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"clients": {
"CientID": {
"id": CientID,
"nodeId": NodeID,
"status": ClientStatus,
"version": string
}, ...},
"mgmt": {
"id": 65535,
"nodeId": NodeID,
"status": ClientStatus,
"version": string
},
"servers": {
"ServerID": {
"id": ServerID,
"missingDisks": [DiskID, ...],
"nodeId": NodeID,
"pendingDisks": [DiskID, ...],
"status": ServerStatus,
"version": string
}, ...}
}
}
GET /ctrl/1.0/ServersList HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"clients": {
"CientID": {
"id": CientID,
"nodeId": NodeID,
"status": ClientStatus,
"version": string
}, ...},
"mgmt": {
"id": 65535,
"nodeId": NodeID,
"status": ClientStatus,
"version": string
},
"servers": {
"ServerID": {
"id": ServerID,
"missingDisks": [DiskID, ...],
"nodeId": NodeID,
"pendingDisks": [DiskID, ...],
"status": ServerStatus,
"version": string
}, ...}
}
}
GET /ctrl/1.0/ServerDisksList/{serverId} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"DiskID": {
"agAllocated": int,
"agCount": int,
"agFree": int,
"agFreeing": int,
"agFull": int,
"agMaxSizeFull": int,
"agMaxSizePartial": int,
"agPartial": int,
"description": DiskDescritpion,
"device": string,
"empty": bool,
"entriesAllocated": int,
"entriesCount": int,
"entriesFree": int,
"generationLeft": long,
"id": DiskID,
"model": string,
"objectsAllocated": int,
"objectsCount": int,
"objectsFree": int,
"objectsOnDiskSize": long,
"sectorsCount": long,
"serial": string,
"serverId": ServerID,
"softEject": DiskSoftEjectStatus,
"ssd": bool
}, ...}
}
GET /ctrl/1.0/ServerDiskDescribe/{serverId}/{diskId} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"agAllocated": int,
"agCount": int,
"agFree": int,
"agFreeing": int,
"agFull": int,
"agMaxSizeFull": int,
"agMaxSizePartial": int,
"agPartial": int,
"description": DiskDescritpion,
"device": string,
"empty": bool,
"entriesAllocated": int,
"entriesCount": int,
"entriesFree": int,
"generationLeft": long,
"id": DiskID,
"model": string,
"objects": {
"int": {
"generation": long,
"objectId": int,
"onDiskSize": int,
"parentVolume": string,
"state": ObjectState,
"storedSize": int,
"version": long,
"volume": string,
"volumeId": long
}, ...},
"objectsAllocated": int,
"objectsCount": int,
"objectsFree": int,
"objectsOnDiskSize": long,
"sectorsCount": long,
"serial": string,
"serverId": ServerID,
"softEject": DiskSoftEjectStatus,
"ssd": bool
}
}
GET /ctrl/1.0/ClientsConfigDump HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": [{
"clientGeneration": long,
"configStatus": client status,
"delay": int,
"generation": long,
"id": CientID
}, ...]
}
GET /ctrl/1.0/ClientConfigWait/{clientId} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": [{
"clientGeneration": long,
"configStatus": client status,
"delay": int,
"generation": long,
"id": CientID
}, ...]
}
GET /ctrl/1.0/ClientActiveRequests/{clientId} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"clientId": CientID,
"requests": [{
"address": long,
"drOp": string,
"msecActive": int,
"op": RequestOp,
"prevState": string,
"requestId": string,
"requestIdx": int,
"size": int,
"state": string,
"volumeId": long
}, ...]
}
}
GET /ctrl/1.0/DisksList HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"DiskID": {
"agAllocated": int,
"agCount": int,
"agFree": int,
"agFreeing": int,
"agFull": int,
"agMaxSizeFull": int,
"agMaxSizePartial": int,
"agPartial": int,
"description": DiskDescritpion,
"device": string,
"empty": bool,
"entriesAllocated": int,
"entriesCount": int,
"entriesFree": int,
"generationLeft": long,
"id": DiskID,
"model": string,
"objectsAllocated": int,
"objectsCount": int,
"objectsFree": int,
"objectsOnDiskSize": long,
"sectorsCount": long,
"serial": string,
"serverId": ServerID,
"softEject": DiskSoftEjectStatus,
"ssd": bool
}, ...}
}
GET /ctrl/1.0/DiskDescribe/{diskId} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"agAllocated": int,
"agCount": int,
"agFree": int,
"agFreeing": int,
"agFull": int,
"agMaxSizeFull": int,
"agMaxSizePartial": int,
"agPartial": int,
"description": DiskDescritpion,
"device": string,
"empty": bool,
"entriesAllocated": int,
"entriesCount": int,
"entriesFree": int,
"generationLeft": long,
"id": DiskID,
"model": string,
"objects": {
"int": {
"generation": long,
"objectId": int,
"onDiskSize": int,
"parentVolume": string,
"state": ObjectState,
"storedSize": int,
"version": long,
"volume": string,
"volumeId": long
}, ...},
"objectsAllocated": int,
"objectsCount": int,
"objectsFree": int,
"objectsOnDiskSize": long,
"sectorsCount": long,
"serial": string,
"serverId": ServerID,
"softEject": DiskSoftEjectStatus,
"ssd": bool
}
}
GET /ctrl/1.0/DiskGetInfo/{diskId} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"agAllocated": int,
"agCount": int,
"agFree": int,
"agFreeing": int,
"agFull": int,
"agMaxSizeFull": int,
"agMaxSizePartial": int,
"agPartial": int,
"description": DiskDescritpion,
"device": string,
"empty": bool,
"entriesAllocated": int,
"entriesCount": int,
"entriesFree": int,
"generationLeft": long,
"id": DiskID,
"model": string,
"objectStates": {
"ObjectState": int, ...},
"objectsAllocated": int,
"objectsCount": int,
"objectsFree": int,
"objectsOnDiskSize": long,
"sectorsCount": long,
"serial": string,
"serverId": ServerID,
"softEject": DiskSoftEjectStatus,
"ssd": bool,
"volumeInfos": {
"string": {
"name": string,
"objectStates": {
"ObjectState": int, ...},
"objectsCount": long,
"onDiskSize": long,
"storedSize": long
}, ...}
}
}
POST /ctrl/1.0/DiskEject/{diskId} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/DiskForget/{diskId} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/DiskSoftEject/{diskId} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/DiskSoftEjectPause/{diskId} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/DiskSoftEjectCancel/{diskId} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/DiskSetDescription/{diskId} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
{
"description": DiskDescritpion
}
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
GET /ctrl/1.0/DiskActiveRequests/{diskId} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"diskId": DiskID,
"requests": [{
"address": long,
"drOp": string,
"msecActive": int,
"op": RequestOp,
"prevState": string,
"requestId": string,
"requestIdx": int,
"size": int,
"state": string,
"volumeId": long
}, ...]
}
}
GET /ctrl/1.0/VolumesList HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": [{
"bw": Bandwidth,
"creationTimestamp": long,
"flags": int,
"id": long,
"iops": IOPS,
"name": VolumeName,
"objectsCount": int,
"originalParentVolumeId": long,
"parentName": Either("", SnapshotName),
"parentVolumeId": long,
"placeAll": PlacementGroupName,
"placeTail": PlacementGroupName,
"replication": Replication,
"size": Size,
"templateName": Either("", VolumeTemplateName),
"visibleVolumeId": long
}, ...]
}
GET /ctrl/1.0/VolumesGetStatus HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"VolumeName": {
"balancerBlocked": bool,
"decreasedRedundancy": bool,
"downBytes": int,
"downDrives": [DiskID, ...],
"migrating": bool,
"missingDrives": [DiskID, ...],
"missingTargetDrives": [DiskID, ...],
"name": VolumeName,
"onDiskSize": int,
"replication": Replication,
"size": Size,
"softEjectingDrives": [DiskID, ...],
"status": string,
"storedSize": int,
"syncingDataBytes": int,
"syncingMetaObjects": int
}, ...}
}
GET /ctrl/1.0/Volume/{volumeName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": [{
"bw": Bandwidth,
"creationTimestamp": long,
"flags": int,
"id": long,
"iops": IOPS,
"name": VolumeName,
"objectsCount": int,
"originalParentVolumeId": long,
"parentName": Either("", SnapshotName),
"parentVolumeId": long,
"placeAll": PlacementGroupName,
"placeTail": PlacementGroupName,
"replication": Replication,
"size": Size,
"templateName": Either("", VolumeTemplateName),
"visibleVolumeId": long
}, ...]
}
GET /ctrl/1.0/VolumeDescribe/{volumeName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"bw": Bandwidth,
"creationTimestamp": long,
"flags": int,
"id": long,
"iops": IOPS,
"name": VolumeName,
"objects": [[DiskID, ...], ...],
"objectsCount": int,
"originalParentVolumeId": long,
"parentName": Either("", SnapshotName),
"parentVolumeId": long,
"placeAll": PlacementGroupName,
"placeTail": PlacementGroupName,
"replication": Replication,
"size": Size,
"targetDiskSets": [[DiskID, ...], ...],
"templateName": Either("", VolumeTemplateName),
"visibleVolumeId": long
}
}
GET /ctrl/1.0/VolumeGetInfo/{volumeName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"bw": Bandwidth,
"creationTimestamp": long,
"disksCount": int,
"flags": int,
"id": long,
"iops": IOPS,
"name": VolumeName,
"objectsCount": int,
"objectsPerChain": [{
"count": int,
"disks": [DiskID, ...]
}, ...],
"objectsPerDisk": {
"DiskID": int, ...},
"objectsPerDiskSet": [{
"count": int,
"disks": [DiskID, ...]
}, ...],
"originalParentVolumeId": long,
"parentName": Either("", SnapshotName),
"parentVolumeId": long,
"placeAll": PlacementGroupName,
"placeTail": PlacementGroupName,
"replication": Replication,
"size": Size,
"templateName": Either("", VolumeTemplateName),
"visibleVolumeId": long
}
}
GET /ctrl/1.0/VolumeListSnapshots/{volumeName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": [{
"bw": Bandwidth,
"creationTimestamp": long,
"flags": int,
"id": long,
"iops": IOPS,
"name": VolumeName,
"objectsCount": int,
"onVolume": VolumeName,
"originalParentVolumeId": long,
"parentName": Either("", SnapshotName),
"parentVolumeId": long,
"placeAll": PlacementGroupName,
"placeTail": PlacementGroupName,
"replication": Replication,
"size": Size,
"templateName": Either("", VolumeTemplateName),
"visibleVolumeId": long
}, ...]
}
POST /ctrl/1.0/VolumeCreate HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
{
"bw": Optional(Bandwidth),
"iops": Optional(IOPS),
"name": VolumeName,
"parent": Optional(SnapshotName),
"placeAll": Optional(PlacementGroupName),
"placeTail": Optional(PlacementGroupName),
"replication": Optional(Replication),
"size": Size,
"template": Optional(VolumeTemplateName)
}
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/VolumeUpdate/{volumeName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
{
"bw": Optional(Bandwidth),
"iops": Optional(IOPS),
"placeAll": Optional(PlacementGroupName),
"placeTail": Optional(PlacementGroupName),
"rename": Optional(VolumeName),
"replication": Optional(Replication),
"size": Optional(Size),
"sizeAdd": Optional(SizeAdd),
"template": Optional(VolumeTemplateName)
}
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/VolumeFreeze/{volumeName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/VolumeRebase/{volumeName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
{
"parentName": Optional(SnapshotName)
}
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/VolumeDelete/{volumeName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
GET /ctrl/1.0/SnapshotsList HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": [{
"bw": Bandwidth,
"creationTimestamp": long,
"flags": int,
"id": long,
"iops": IOPS,
"name": VolumeName,
"objectsCount": int,
"onVolume": VolumeName,
"originalParentVolumeId": long,
"parentName": Either("", SnapshotName),
"parentVolumeId": long,
"placeAll": PlacementGroupName,
"placeTail": PlacementGroupName,
"replication": Replication,
"size": Size,
"templateName": Either("", VolumeTemplateName),
"visibleVolumeId": long
}, ...]
}
GET /ctrl/1.0/Snapshot/{snapshotName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": [{
"bw": Bandwidth,
"creationTimestamp": long,
"flags": int,
"id": long,
"iops": IOPS,
"name": VolumeName,
"objectsCount": int,
"onVolume": VolumeName,
"originalParentVolumeId": long,
"parentName": Either("", SnapshotName),
"parentVolumeId": long,
"placeAll": PlacementGroupName,
"placeTail": PlacementGroupName,
"replication": Replication,
"size": Size,
"templateName": Either("", VolumeTemplateName),
"visibleVolumeId": long
}, ...]
}
GET /ctrl/1.0/SnapshotDescribe/{snapshotName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"bw": Bandwidth,
"creationTimestamp": long,
"flags": int,
"id": long,
"iops": IOPS,
"name": VolumeName,
"objects": [[DiskID, ...], ...],
"objectsCount": int,
"originalParentVolumeId": long,
"parentName": Either("", SnapshotName),
"parentVolumeId": long,
"placeAll": PlacementGroupName,
"placeTail": PlacementGroupName,
"replication": Replication,
"size": Size,
"targetDiskSets": [[DiskID, ...], ...],
"templateName": Either("", VolumeTemplateName),
"visibleVolumeId": long
}
}
GET /ctrl/1.0/SnapshotGetInfo/{snapshotName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"bw": Bandwidth,
"creationTimestamp": long,
"disksCount": int,
"flags": int,
"id": long,
"iops": IOPS,
"name": VolumeName,
"objectsCount": int,
"objectsPerChain": [{
"count": int,
"disks": [DiskID, ...]
}, ...],
"objectsPerDisk": {
"DiskID": int, ...},
"objectsPerDiskSet": [{
"count": int,
"disks": [DiskID, ...]
}, ...],
"originalParentVolumeId": long,
"parentName": Either("", SnapshotName),
"parentVolumeId": long,
"placeAll": PlacementGroupName,
"placeTail": PlacementGroupName,
"replication": Replication,
"size": Size,
"templateName": Either("", VolumeTemplateName),
"visibleVolumeId": long
}
}
POST /ctrl/1.0/VolumeSnapshot/{volumeName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
{
"name": Optional(VolumeName)
}
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/SnapshotUpdate/{snapshotName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
{
"bw": Optional(Bandwidth),
"iops": Optional(IOPS),
"placeAll": Optional(PlacementGroupName),
"placeTail": Optional(PlacementGroupName),
"rename": Optional(VolumeName),
"replication": Optional(Replication),
"size": Optional(Size),
"sizeAdd": Optional(SizeAdd),
"template": Optional(VolumeTemplateName)
}
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/SnapshotRebase/{snapshotName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
{
"parentName": Optional(SnapshotName)
}
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/SnapshotDelete/{snapshotName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
GET /ctrl/1.0/AttachmentsList HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": [{
"client": CientID,
"pos": AttachmentPos,
"rights": AttachmentRights,
"snapshot": bool,
"volume": VolumeName
}, ...]
}
POST /ctrl/1.0/VolumesReassign HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
[Either({
"detach": Optional(Either("all", [CientID])),
"force": bool, default=False,
"ro": Optional([CientID]),
"rw": Optional([CientID]),
"volume": VolumeName
}, {
"detach": Optional(Either("all", [CientID])),
"force": bool, default=False,
"ro": Optional([CientID]),
"snapshot": SnapshotName
}), ...]
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
GET /ctrl/1.0/PlacementGroupsList HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"PlacementGroupName": {
"disks": [DiskID, ...],
"id": int,
"name": PlacementGroupName,
"servers": [ServerID, ...]
}, ...}
}
GET /ctrl/1.0/PlacementGroupDescribe/{placementGroupName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"disks": [DiskID, ...],
"id": int,
"name": PlacementGroupName,
"servers": [ServerID, ...]
}
}
POST /ctrl/1.0/PlacementGroupUpdate/{placementGroupName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
{
"addDisks": [DiskID, ...],
"addServers": [ServerID, ...],
"rename": Optional(PlacementGroupName),
"rmDisks": [DiskID, ...],
"rmServers": [ServerID, ...]
}
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/PlacementGroupDelete/{placementGroupName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
GET /ctrl/1.0/VolumeTemplatesList HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": [{
"bw": Bandwidth,
"iops": IOPS,
"name": VolumeTemplateName,
"parentName": Either("", SnapshotName),
"placeAll": PlacementGroupName,
"placeTail": PlacementGroupName,
"replication": Either("-", Replication),
"size": Either("-", Size)
}, ...]
}
GET /ctrl/1.0/VolumeTemplateDescribe/{templateName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"bw": Bandwidth,
"iops": IOPS,
"name": VolumeTemplateName,
"parentName": Either("", SnapshotName),
"placeAll": PlacementGroupName,
"placeTail": PlacementGroupName,
"replication": Either("-", Replication),
"size": Either("-", Size)
}
}
POST /ctrl/1.0/VolumeTemplateCreate HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
{
"bw": Optional(Bandwidth),
"iops": Optional(IOPS),
"name": VolumeTemplateName,
"parent": Optional(SnapshotName),
"placeAll": Optional(PlacementGroupName),
"placeTail": Optional(PlacementGroupName),
"replication": Optional(Replication),
"size": Optional(Size)
}
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/VolumeTemplateUpdate/{templateName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
{
"bw": Optional(Bandwidth),
"iops": Optional(IOPS),
"parent": Optional(SnapshotName),
"placeAll": Optional(PlacementGroupName),
"placeTail": Optional(PlacementGroupName),
"rename": Optional(VolumeTemplateName),
"replication": Optional(Replication),
"size": Optional(Size)
}
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/VolumeTemplateDelete/{templateName} HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/VolumeRelocatorOn HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/VolumeRelocatorOff HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
GET /ctrl/1.0/VolumeRelocatorStatus HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"status": RelocatorStatus
}
}
POST /ctrl/1.0/VolumeBalancerOn HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
POST /ctrl/1.0/VolumeBalancerOff HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"generation": long,
"ok": true
}
}
GET /ctrl/1.0/VolumeBalancerStatus HTTP/1.0
Host: SP_API_HOST:SP_API_PORT
Authorization: Storpool v1:SP_AUTH_TOKEN
Content-Length: LENGTH
HTTP/1.0 200 OK
Connection: close
Content-Type: application/json
Cache-control: private
Content-Length: LENGTH
{
"generation": generation,
"data": {
"status": BalancerStatus
}
}