"description":"The total number of nodes in {state-combination} state, where {state-combination} is the node daemon and domain states in CSV format, e.g. \"run,ready\", \"stop,flushed\", etc.",
"description":"The total number of OSDs in {state-combination} state, where {state-combination} is the OSD up and in states in CSV format, e.g. \"up,in\", \"down,out\", etc.",
"description":"Note: Normally used only once during cluster bootstrap; checks for the existence of the \"/primary_node\" key before proceeding and returns 400 if found",
"summary":"Log in to the PVC API with an authentication key",
"tags":[
"root"
]
}
},
"/api/v1/logout":{
"post":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"302":{
"description":"Authentication disabled"
}
},
"summary":"Log out of an existing PVC API session",
"tags":[
"root"
]
}
},
"/api/v1/network":{
"get":{
"description":"",
"parameters":[
{
"description":"A VNI or description search limit; fuzzy by default, use ^/$ to force exact matches",
"in":"query",
"name":"limit",
"required":false,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"items":{
"$ref":"#/definitions/network"
},
"type":"array"
}
}
},
"summary":"Return a list of networks in the cluster",
"tags":[
"network"
]
},
"post":{
"description":"",
"parameters":[
{
"description":"The VNI of the network",
"in":"query",
"name":"vni",
"required":true,
"type":"integer"
},
{
"description":"The description of the network",
"in":"query",
"name":"description",
"required":true,
"type":"string"
},
{
"description":"The type of network",
"enum":[
"managed",
"bridged"
],
"in":"query",
"name":"nettype",
"required":true,
"type":"string"
},
{
"description":"The DNS domain of the network (\"managed\" networks only)",
"in":"query",
"name":"domain",
"type":"string"
},
{
"description":"The CSV list of DNS nameservers for network NS records (\"managed\" networks only)",
"in":"query",
"name":"name_servers",
"type":"string"
},
{
"description":"The IPv4 network subnet of the network in CIDR format; IPv4 disabled if unspecified (\"managed\" networks only)",
"in":"query",
"name":"ip4_network",
"type":"string"
},
{
"description":"The IPv4 default gateway address of the network (\"managed\" networks only)",
"in":"query",
"name":"ip4_gateway",
"type":"string"
},
{
"description":"Whether to enable DHCPv4 for the network (\"managed\" networks only)",
"in":"query",
"name":"dhcp4",
"type":"boolean"
},
{
"description":"The DHCPv4 pool start address of the network (\"managed\" networks only)",
"in":"query",
"name":"dhcp4_start",
"type":"string"
},
{
"description":"The DHCPv4 pool end address of the network (\"managed\" networks only)",
"in":"query",
"name":"dhcp4_end",
"type":"string"
},
{
"description":"The IPv6 network subnet of the network in CIDR format; IPv6 disabled if unspecified; DHCPv6 is always used in IPv6 managed networks (\"managed\" networks only)",
"in":"query",
"name":"ip6_network",
"type":"string"
},
{
"description":"The IPv6 default gateway address of the network (\"managed\" networks only)",
"in":"query",
"name":"ip6_gateway",
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Create a new network",
"tags":[
"network"
]
}
},
"/api/v1/network/{vni}":{
"delete":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Remove network {vni}",
"tags":[
"network"
]
},
"get":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/network"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Return information about network {vni}",
"tags":[
"network"
]
},
"post":{
"description":"",
"parameters":[
{
"description":"The description of the network",
"in":"query",
"name":"description",
"required":true,
"type":"string"
},
{
"description":"The type of network",
"enum":[
"managed",
"bridged"
],
"in":"query",
"name":"nettype",
"required":true,
"type":"string"
},
{
"description":"The DNS domain of the network (\"managed\" networks only)",
"in":"query",
"name":"domain",
"type":"string"
},
{
"description":"The CSV list of DNS nameservers for network NS records (\"managed\" networks only)",
"in":"query",
"name":"name_servers",
"type":"string"
},
{
"description":"The IPv4 network subnet of the network in CIDR format; IPv4 disabled if unspecified (\"managed\" networks only)",
"in":"query",
"name":"ip4_network",
"type":"string"
},
{
"description":"The IPv4 default gateway address of the network (\"managed\" networks only)",
"in":"query",
"name":"ip4_gateway",
"type":"string"
},
{
"description":"Whether to enable DHCPv4 for the network (\"managed\" networks only)",
"in":"query",
"name":"dhcp4",
"type":"boolean"
},
{
"description":"The DHCPv4 pool start address of the network (\"managed\" networks only)",
"in":"query",
"name":"dhcp4_start",
"type":"string"
},
{
"description":"The DHCPv4 pool end address of the network (\"managed\" networks only)",
"in":"query",
"name":"dhcp4_end",
"type":"string"
},
{
"description":"The IPv6 network subnet of the network in CIDR format; IPv6 disabled if unspecified; DHCPv6 is always used in IPv6 managed networks (\"managed\" networks only)",
"in":"query",
"name":"ip6_network",
"type":"string"
},
{
"description":"The IPv6 default gateway address of the network (\"managed\" networks only)",
"in":"query",
"name":"ip6_gateway",
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Create a new network {vni}",
"tags":[
"network"
]
},
"put":{
"description":"Note: A network's type cannot be changed; the network must be removed and recreated as the new type",
"parameters":[
{
"description":"The description of the network",
"in":"query",
"name":"description",
"type":"string"
},
{
"description":"The DNS domain of the network (\"managed\" networks only)",
"in":"query",
"name":"domain",
"type":"string"
},
{
"description":"The CSV list of DNS nameservers for network NS records (\"managed\" networks only)",
"in":"query",
"name":"name_servers",
"type":"string"
},
{
"description":"The IPv4 network subnet of the network in CIDR format; IPv4 disabled if unspecified (\"managed\" networks only)",
"in":"query",
"name":"ip4_network",
"type":"string"
},
{
"description":"The IPv4 default gateway address of the network (\"managed\" networks only)",
"in":"query",
"name":"ip4_gateway",
"type":"string"
},
{
"description":"Whether to enable DHCPv4 for the network (\"managed\" networks only)",
"in":"query",
"name":"dhcp4",
"type":"boolean"
},
{
"description":"The DHCPv4 pool start address of the network (\"managed\" networks only)",
"in":"query",
"name":"dhcp4_start",
"type":"string"
},
{
"description":"The DHCPv4 pool end address of the network (\"managed\" networks only)",
"in":"query",
"name":"dhcp4_end",
"type":"string"
},
{
"description":"The IPv6 network subnet of the network in CIDR format; IPv6 disabled if unspecified; DHCPv6 is always used in IPv6 managed networks (\"managed\" networks only)",
"in":"query",
"name":"ip6_network",
"type":"string"
},
{
"description":"The IPv6 default gateway address of the network (\"managed\" networks only)",
"in":"query",
"name":"ip6_gateway",
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Update details of network {vni}",
"tags":[
"network"
]
}
},
"/api/v1/network/{vni}/acl":{
"get":{
"description":"",
"parameters":[
{
"description":"A description search limit; fuzzy by default, use ^/$ to force exact matches",
"in":"query",
"name":"limit",
"required":false,
"type":"string"
},
{
"description":"The direction of rules to display; both directions shown if unspecified",
"in":"query",
"name":"direction",
"required":false,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"items":{
"$ref":"#/definitions/acl"
},
"type":"array"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Return a list of ACLs in network {vni}",
"tags":[
"network"
]
},
"post":{
"description":"",
"parameters":[
{
"description":"A whitespace-free description/name for the ACL",
"in":"query",
"name":"description",
"required":true,
"type":"string"
},
{
"description":"The direction of the ACL; defaults to \"in\" if unspecified",
"enum":[
"in",
"out"
],
"in":"query",
"name":"direction",
"required":false,
"type":"string"
},
{
"description":"The order of the ACL in the chain; defaults to the end",
"in":"query",
"name":"order",
"type":"integer"
},
{
"description":"The raw NFT firewall rule string",
"in":"query",
"name":"rule",
"required":true,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Create a new ACL in network {vni}",
"tags":[
"network"
]
}
},
"/api/v1/network/{vni}/acl/{description}":{
"delete":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Delete ACL {description} in network {vni}",
"tags":[
"network"
]
},
"get":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/acl"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Return information about ACL {description} in network {vni}",
"tags":[
"network"
]
},
"post":{
"description":"",
"parameters":[
{
"description":"The direction of the ACL; defaults to \"in\" if unspecified",
"enum":[
"in",
"out"
],
"in":"query",
"name":"direction",
"required":false,
"type":"string"
},
{
"description":"The order of the ACL in the chain; defaults to the end",
"in":"query",
"name":"order",
"type":"integer"
},
{
"description":"The raw NFT firewall rule string",
"in":"query",
"name":"rule",
"required":true,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Create a new ACL {description} in network {vni}",
"tags":[
"network"
]
}
},
"/api/v1/network/{vni}/lease":{
"get":{
"description":"",
"parameters":[
{
"description":"A MAC address search limit; fuzzy by default, use ^/$ to force exact matches",
"in":"query",
"name":"limit",
"required":false,
"type":"string"
},
{
"default":false,
"description":"Whether to show only static leases",
"in":"query",
"name":"static",
"required":false,
"type":"boolean"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"items":{
"$ref":"#/definitions/lease"
},
"type":"array"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Return a list of DHCP leases in network {vni}",
"tags":[
"network"
]
},
"post":{
"description":"",
"parameters":[
{
"description":"A MAC address for the lease",
"in":"query",
"name":"macaddress",
"required":false,
"type":"string"
},
{
"description":"An IPv4 address for the lease",
"in":"query",
"name":"ipaddress",
"required":false,
"type":"string"
},
{
"description":"An optional hostname for the lease",
"in":"query",
"name":"hostname",
"required":false,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Create a new static DHCP lease in network {vni}",
"tags":[
"network"
]
}
},
"/api/v1/network/{vni}/lease/{mac}":{
"delete":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Delete static DHCP lease {mac}",
"tags":[
"network"
]
},
"get":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"items":{
"$ref":"#/definitions/lease"
},
"type":"array"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Return information about DHCP lease {mac} in network {vni}",
"tags":[
"network"
]
},
"post":{
"description":"",
"parameters":[
{
"description":"A MAC address for the lease",
"in":"query",
"name":"macaddress",
"required":false,
"type":"string"
},
{
"description":"An IPv4 address for the lease",
"in":"query",
"name":"ipaddress",
"required":false,
"type":"string"
},
{
"description":"An optional hostname for the lease",
"in":"query",
"name":"hostname",
"required":false,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Create a new static DHCP lease {mac} in network {vni}",
"tags":[
"network"
]
}
},
"/api/v1/node":{
"get":{
"description":"",
"parameters":[
{
"description":"A search limit; fuzzy by default, use ^/$ to force exact matches",
"in":"query",
"name":"limit",
"required":false,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"items":{
"$ref":"#/definitions/node"
},
"type":"array"
}
}
},
"summary":"Return a list of nodes in the cluster",
"tags":[
"node"
]
}
},
"/api/v1/node/{node}":{
"get":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/node"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Return information about {node}",
"tags":[
"node"
]
}
},
"/api/v1/node/{node}/coordinator-state":{
"get":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/NodeCoordinatorState"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Return the coordinator state of {node}",
"tags":[
"node"
]
},
"post":{
"description":"",
"parameters":[
{
"description":"The new coordinator state of the node",
"description":"Note: Starts a background job in the pvc-provisioner-worker Celery worker while returning a task ID; the task ID can be used to query the \"GET /provisioner/status/<task_id>\" endpoint for the job status",
"parameters":[
{
"description":"Virtual machine name",
"in":"query",
"name":"name",
"required":true,
"type":"string"
},
{
"description":"Profile name",
"in":"query",
"name":"profile",
"required":true,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"properties":{
"task_id":{
"description":"Task ID for the provisioner Celery worker",
"type":"string"
}
},
"type":"object"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Create a new virtual machine",
"tags":[
"provisioner"
]
}
},
"/api/v1/provisioner/profile":{
"get":{
"description":"",
"parameters":[
{
"description":"A profile name search limit; fuzzy by default, use ^/$ to force exact matches",
"description":"The Ceph OSD option to act on; must be valid to \"ceph osd set/unset\"",
"in":"query",
"name":"option",
"required":true,
"type":"string"
},
{
"description":"The action to take",
"enum":[
"set",
"unset"
],
"in":"query",
"name":"action",
"required":true,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Set or unset OSD options on the Ceph cluster",
"tags":[
"storage / ceph"
]
}
},
"/api/v1/storage/ceph/osd":{
"post":{
"description":"Note: This task may take up to 30s to complete and return",
"parameters":[
{
"description":"The PVC node to create the OSD on",
"in":"query",
"name":"node",
"required":true,
"type":"string"
},
{
"description":"The block device (e.g. \"/dev/sdb\", \"/dev/disk/by-path/...\", etc.) to create the OSD on",
"in":"query",
"name":"device",
"required":true,
"type":"string"
},
{
"description":"The Ceph CRUSH weight for the OSD",
"in":"query",
"name":"weight",
"required":true,
"type":"number"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Add a Ceph OSD to the cluster",
"tags":[
"storage / ceph"
]
}
},
"/api/v1/storage/ceph/osd/{osdid}":{
"delete":{
"description":"Note: This task may take up to 30s to complete and return<br/>Warning: This operation may have unintended consequences for the storage cluster; ensure the cluster can support removing the OSD before proceeding",
"parameters":[
{
"description":"A confirmation string to ensure that the API consumer really means it",
"in":"query",
"name":"yes-i-really-mean-it",
"required":true,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Remove Ceph OSD {osdid}",
"tags":[
"storage / ceph"
]
}
},
"/api/v1/storage/ceph/pool":{
"get":{
"description":"",
"parameters":[
{
"description":"A pool name search limit; fuzzy by default, use ^/$ to force exact matches",
"in":"query",
"name":"limit",
"required":false,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"items":{
"$ref":"#/definitions/pool"
},
"type":"array"
}
}
},
"summary":"Return a list of pools in the cluster",
"tags":[
"storage / ceph"
]
},
"post":{
"description":"",
"parameters":[
{
"description":"The name of the pool",
"in":"query",
"name":"pool",
"required":true,
"type":"string"
},
{
"description":"The number of placement groups (PGs) for the pool",
"in":"query",
"name":"pgs",
"required":true,
"type":"integer"
},
{
"description":"The replication configuration (e.g. \"copies=3,mincopies=2\") for the pool",
"in":"query",
"name":"replcfg",
"required":true,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Create a new Ceph pool",
"tags":[
"storage / ceph"
]
}
},
"/api/v1/storage/ceph/pool/{pool}":{
"delete":{
"description":"Note: This task may take up to 30s to complete and return",
"parameters":[
{
"description":"A confirmation string to ensure that the API consumer really means it",
"in":"query",
"name":"yes-i-really-mean-it",
"required":true,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Remove Ceph pool {pool}",
"tags":[
"storage / ceph"
]
},
"get":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/pool"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Return information about {pool}",
"tags":[
"storage / ceph"
]
},
"post":{
"description":"",
"parameters":[
{
"description":"The number of placement groups (PGs) for the pool",
"in":"query",
"name":"pgs",
"required":true,
"type":"integer"
},
{
"description":"The replication configuration (e.g. \"copies=3,mincopies=2\") for the pool",
"in":"query",
"name":"replcfg",
"required":true,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Create a new Ceph pool {pool}",
"tags":[
"storage / ceph"
]
}
},
"/api/v1/storage/ceph/snapshot":{
"get":{
"description":"",
"parameters":[
{
"description":"A volume name search limit; fuzzy by default, use ^/$ to force exact matches",
"in":"query",
"name":"limit",
"required":false,
"type":"string"
},
{
"description":"A pool to limit the search to",
"in":"query",
"name":"pool",
"required":false,
"type":"string"
},
{
"description":"A volume to limit the search to",
"in":"query",
"name":"volume",
"required":false,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"items":{
"$ref":"#/definitions/snapshot"
},
"type":"array"
}
}
},
"summary":"Return a list of snapshots in the cluster",
"description":"Note: This task may take up to 30s to complete and return depending on the size of the snapshot",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Remove Ceph snapshot {snapshot} of volume {volume} from pool {pool}",
"tags":[
"storage / ceph"
]
},
"get":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/snapshot"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Return information about snapshot {snapshot} of volume {volume} in pool {pool}",
"tags":[
"storage / ceph"
]
},
"post":{
"description":"",
"parameters":[
{
"description":"The name of the snapshot",
"in":"query",
"name":"snapshot",
"required":true,
"type":"string"
},
{
"description":"The name of the volume",
"in":"query",
"name":"volume",
"required":true,
"type":"string"
},
{
"description":"The name of the pool",
"in":"query",
"name":"pool",
"required":true,
"type":"integer"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Create a new Ceph snapshot {snapshot} of volume {volume} in pool {pool}",
"tags":[
"storage / ceph"
]
},
"put":{
"description":"",
"parameters":[
{
"description":"The new snaoshot name",
"in":"query",
"name":"new_name",
"required":false,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Update the name of Ceph snapshot {snapshot} of volume {volume} in pool {pool}",
"tags":[
"storage / ceph"
]
}
},
"/api/v1/storage/ceph/status":{
"get":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"properties":{
"ceph_data":{
"description":"The raw output data",
"type":"string"
},
"primary_node":{
"description":"The curent primary node in the cluster",
"type":"string"
},
"type":{
"description":"The type of Ceph data returned",
"type":"string"
}
},
"type":"object"
}
}
},
"summary":"Return status data for the PVC Ceph cluster",
"tags":[
"storage / ceph"
]
}
},
"/api/v1/storage/ceph/utilization":{
"get":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"properties":{
"ceph_data":{
"description":"The raw output data",
"type":"string"
},
"primary_node":{
"description":"The curent primary node in the cluster",
"type":"string"
},
"type":{
"description":"The type of Ceph data returned",
"type":"string"
}
},
"type":"object"
}
}
},
"summary":"Return utilization data for the PVC Ceph cluster",
"tags":[
"storage / ceph"
]
}
},
"/api/v1/storage/ceph/volume":{
"get":{
"description":"",
"parameters":[
{
"description":"A volume name search limit; fuzzy by default, use ^/$ to force exact matches",
"in":"query",
"name":"limit",
"required":false,
"type":"string"
},
{
"description":"A pool to limit the search to",
"in":"query",
"name":"pool",
"required":false,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"items":{
"$ref":"#/definitions/volume"
},
"type":"array"
}
}
},
"summary":"Return a list of volumes in the cluster",
"tags":[
"storage / ceph"
]
},
"post":{
"description":"",
"parameters":[
{
"description":"The name of the volume",
"in":"query",
"name":"volume",
"required":true,
"type":"string"
},
{
"description":"The name of the pool to contain the volume",
"in":"query",
"name":"pool",
"required":true,
"type":"integer"
},
{
"description":"The volume size in bytes (or with a metric suffix, i.e. k/M/G/T)",
"in":"query",
"name":"size",
"required":true,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Create a new Ceph volume",
"tags":[
"storage / ceph"
]
}
},
"/api/v1/storage/ceph/volume/{pool}/{volume}":{
"delete":{
"description":"Note: This task may take up to 30s to complete and return depending on the size of the volume",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Remove Ceph volume {volume} from pool {pool}",
"tags":[
"storage / ceph"
]
},
"get":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/volume"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Return information about volume {volume} in pool {pool}",
"tags":[
"storage / ceph"
]
},
"post":{
"description":"",
"parameters":[
{
"description":"The volume size in bytes (or with a metric suffix, i.e. k/M/G/T)",
"in":"query",
"name":"size",
"required":true,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Create a new Ceph volume {volume} in pool {pool}",
"tags":[
"storage / ceph"
]
},
"put":{
"description":"",
"parameters":[
{
"description":"The new volume size in bytes (or with a metric suffix, i.e. k/M/G/T); must be greater than the previous size (shrinking not supported)",
"in":"query",
"name":"size",
"required":false,
"type":"string"
},
{
"description":"The new volume name",
"in":"query",
"name":"new_name",
"required":false,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Update the size or name of Ceph volume {volume} in pool {pool}",
"description":"The name of the new cloned volume",
"in":"query",
"name":"new_volume",
"required":true,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Clone Ceph volume {volume} in pool {pool}",
"tags":[
"storage / ceph"
]
}
},
"/api/v1/vm":{
"get":{
"description":"",
"parameters":[
{
"description":"A name search limit; fuzzy by default, use ^/$ to force exact matches",
"in":"query",
"name":"limit",
"required":false,
"type":"string"
},
{
"description":"Limit list to VMs assigned to this node",
"in":"query",
"name":"node",
"required":false,
"type":"string"
},
{
"description":"Limit list to VMs in this state",
"in":"query",
"name":"state",
"required":false,
"type":"string"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"items":{
"$ref":"#/definitions/vm"
},
"type":"array"
}
}
},
"summary":"Return a list of VMs in the cluster",
"tags":[
"vm"
]
},
"post":{
"description":"",
"parameters":[
{
"description":"The raw Libvirt XML definition of the VM",
"in":"query",
"name":"xml",
"required":true,
"type":"string"
},
{
"description":"The node the VM should be assigned to; autoselect if empty or invalid",
"in":"query",
"name":"node",
"required":false,
"type":"string"
},
{
"description":"The CSV list of node(s) the VM is permitted to be assigned to; should include \"node\" and any other valid target nodes; this limit will be used for autoselection on definition and migration",
"in":"query",
"name":"limit",
"required":false,
"type":"string"
},
{
"default":"mem",
"description":"The selector used to determine candidate nodes during migration",
"description":"Whether to autostart the VM when its node returns to ready domain state",
"in":"query",
"name":"autostart",
"required":false,
"type":"boolean"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Create a new virtual machine",
"tags":[
"vm"
]
}
},
"/api/v1/vm/{vm}":{
"delete":{
"description":"",
"parameters":[
{
"default":false,
"description":"Whether to automatically delete all VM disk volumes",
"in":"query",
"name":"delete_disks",
"type":"boolean"
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/Message"
}
},
"400":{
"description":"Bad request",
"schema":{
"$ref":"#/definitions/Message"
}
},
"404":{
"description":"VM not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Remove {vm}",
"tags":[
"vm"
]
},
"get":{
"description":"",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/vm"
}
},
"404":{
"description":"Not found",
"schema":{
"$ref":"#/definitions/Message"
}
}
},
"summary":"Return information about {vm}",
"tags":[
"vm"
]
},
"post":{
"description":"Note: The name {vm} is ignored; only the \"name\" value from the Libvirt XML is used<br/>This endpoint is identical to \"POST /api/v1/vm\"",
"parameters":[
{
"description":"The raw Libvirt XML definition of the VM",
"in":"query",
"name":"xml",
"required":true,
"type":"string"
},
{
"description":"The node the VM should be assigned to; autoselect if empty or invalid",
"in":"query",
"name":"node",
"required":false,
"type":"string"
},
{
"description":"The CSV list of node(s) the VM is permitted to be assigned to; should include \"node\" and any other valid target nodes; this limit will be used for autoselection on definition and migration",
"in":"query",
"name":"limit",
"required":false,
"type":"string"
},
{
"default":"mem",
"description":"The selector used to determine candidate nodes during migration",
"description":"The CSV list of node(s) the VM is permitted to be assigned to; should include \"node\" and any other valid target nodes; this limit will be used for autoselection on definition and migration",
"in":"query",
"name":"limit",
"required":false,
"type":"string"
},
{
"description":"The selector used to determine candidate nodes during migration",