2019-12-23 20:45:30 -05:00
{
"definitions" : {
"API-Version" : {
"properties" : {
"message" : {
"description" : "A text message" ,
2019-12-23 21:14:59 -05:00
"example" : "PVC API version 1.0" ,
2019-12-23 20:45:30 -05:00
"type" : "string"
}
} ,
"type" : "object"
} ,
2020-12-01 04:45:01 -05:00
"Cluster Data" : {
"type" : "object"
} ,
2019-12-29 20:54:20 -05:00
"ClusterStatus" : {
"properties" : {
"health" : {
"description" : "The overall cluster health" ,
"example" : "Optimal" ,
"type" : "string"
} ,
"networks" : {
"description" : "The total number of networks in the cluster" ,
"type" : "integer"
} ,
"nodes" : {
2019-12-29 20:58:02 -05:00
"properties" : {
"state-combination" : {
"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." ,
"type" : "integer"
2019-12-29 20:54:20 -05:00
} ,
2019-12-29 20:58:02 -05:00
"total" : {
"description" : "The total number of nodes in the cluster" ,
"example" : 3 ,
"type" : "integer"
}
2019-12-29 20:54:20 -05:00
} ,
2019-12-29 20:58:02 -05:00
"type" : "object"
2019-12-29 20:54:20 -05:00
} ,
"osds" : {
2019-12-29 20:58:02 -05:00
"properties" : {
"state-combination" : {
"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." ,
"type" : "integer"
2019-12-29 20:54:20 -05:00
} ,
2019-12-29 20:58:02 -05:00
"total" : {
"description" : "The total number of OSDs in the storage cluster" ,
"example" : 3 ,
"type" : "integer"
}
2019-12-29 20:54:20 -05:00
} ,
2019-12-29 20:58:02 -05:00
"type" : "object"
2019-12-29 20:54:20 -05:00
} ,
"pools" : {
"description" : "The total number of pools in the storage cluster" ,
"type" : "integer"
} ,
"primary_node" : {
"description" : "The current primary coordinator node" ,
"example" : "pvchv1" ,
"type" : "string"
} ,
"snapshots" : {
"description" : "The total number of snapshots in the storage cluster" ,
"type" : "integer"
} ,
2020-08-25 12:43:16 -04:00
"storage_health" : {
"description" : "The overall storage cluster health" ,
"example" : "Optimal" ,
"type" : "string"
} ,
2019-12-29 20:54:20 -05:00
"upstream_ip" : {
"description" : "The cluster upstream IP address in CIDR format" ,
"example" : "10.0.0.254/24" ,
"type" : "string"
} ,
"vms" : {
2019-12-29 20:58:02 -05:00
"properties" : {
"state" : {
"description" : "The total number of VMs in {state} state, e.g. \"start\", \"stop\", etc." ,
"type" : "integer"
2019-12-29 20:54:20 -05:00
} ,
2019-12-29 20:58:02 -05:00
"total" : {
"description" : "The total number of VMs in the cluster" ,
"example" : 6 ,
"type" : "integer"
}
2019-12-29 20:54:20 -05:00
} ,
2019-12-29 20:58:02 -05:00
"type" : "object"
2019-12-29 20:54:20 -05:00
} ,
"volumes" : {
"description" : "The total number of volumes in the storage cluster" ,
"type" : "integer"
}
} ,
"type" : "object"
} ,
2019-12-23 20:45:30 -05:00
"Message" : {
"properties" : {
"message" : {
"description" : "A text message" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"NodeCoordinatorState" : {
"properties" : {
"coordinator_state" : {
"description" : "The current coordinator state" ,
"type" : "string"
} ,
"name" : {
"description" : "The name of the node" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"NodeDaemonState" : {
"properties" : {
"daemon_state" : {
"description" : "The current daemon state" ,
"type" : "string"
} ,
"name" : {
"description" : "The name of the node" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"NodeDomainState" : {
"properties" : {
"domain_state" : {
"description" : "The current domain state" ,
"type" : "string"
} ,
"name" : {
"description" : "The name of the node" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
2021-07-18 17:37:49 -04:00
"NodeLog" : {
"properties" : {
"data" : {
"description" : "The recent log text" ,
"type" : "string"
} ,
"name" : {
"description" : "The name of the Node" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
2019-12-26 18:42:56 -05:00
"VMLog" : {
"properties" : {
"data" : {
"description" : "The recent console log text" ,
"type" : "string"
} ,
"name" : {
"description" : "The name of the VM" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
2019-12-23 20:45:30 -05:00
"VMMetadata" : {
"properties" : {
2020-12-01 04:45:01 -05:00
"migration_method" : {
"description" : "The preferred migration method (live, shutdown, none)" ,
"type" : "string"
} ,
2019-12-23 20:45:30 -05:00
"name" : {
"description" : "The name of the VM" ,
"type" : "string"
} ,
"node_autostart" : {
"description" : "Whether to autostart the VM when its node returns to ready domain state" ,
"type" : "string"
} ,
"node_limit" : {
"description" : "The node(s) the VM is permitted to be assigned to" ,
"items" : {
"type" : "string"
} ,
"type" : "array"
} ,
"node_selector" : {
"description" : "The selector used to determine candidate nodes during migration" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"VMNode" : {
"properties" : {
"last_node" : {
"description" : "The last node the VM was assigned to before migrating" ,
"type" : "string"
} ,
"name" : {
"description" : "The name of the VM" ,
"type" : "string"
} ,
"node" : {
"description" : "The node the VM is currently assigned to" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"VMState" : {
"properties" : {
"name" : {
"description" : "The name of the VM" ,
"type" : "string"
} ,
"state" : {
"description" : "The current state of the VM" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
2021-07-13 02:17:30 -04:00
"VMTags" : {
"properties" : {
"name" : {
"description" : "The name of the VM" ,
"type" : "string"
} ,
"tags" : {
"description" : "The tag(s) of the VM" ,
"items" : {
2021-07-14 00:51:48 -04:00
"id" : "VMTag" ,
"type" : "object"
2021-07-13 02:17:30 -04:00
} ,
"type" : "array"
}
} ,
"type" : "object"
} ,
2019-12-23 20:45:30 -05:00
"acl" : {
"properties" : {
"description" : {
"description" : "The description of the rule" ,
"type" : "string"
} ,
"direction" : {
"description" : "The direction the rule applies in" ,
"type" : "string"
} ,
"order" : {
"description" : "The order of the rule in the chain" ,
"type" : "integer"
} ,
"rule" : {
"description" : "The NFT-format rule string" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"all-templates" : {
"properties" : {
"network-templates" : {
"items" : {
"$ref" : "#/definitions/network-template"
} ,
"type" : "array"
} ,
"storage-templates" : {
"items" : {
"$ref" : "#/definitions/storage-template"
} ,
"type" : "array"
} ,
"system-templates" : {
"items" : {
"$ref" : "#/definitions/system-template"
} ,
"type" : "array"
}
} ,
"type" : "object"
} ,
"lease" : {
"properties" : {
"hostname" : {
"description" : "The (short) hostname of the lease" ,
"type" : "string"
} ,
"ip4_address" : {
"description" : "The IPv4 address of the lease" ,
"type" : "string"
} ,
"mac_address" : {
"description" : "The MAC address of the lease" ,
"type" : "string"
} ,
"timestamp" : {
"description" : "The UNIX timestamp of the lease creation" ,
"type" : "integer"
}
} ,
"type" : "object"
} ,
"network" : {
"properties" : {
"description" : {
"description" : "The description of the network" ,
"type" : "string"
} ,
"domain" : {
"description" : "The DNS domain of the network (\"managed\" networks only)" ,
"type" : "string"
} ,
"ip4" : {
"description" : "The IPv4 details of the network (\"managed\" networks only)" ,
"properties" : {
"dhcp_end" : {
"description" : "The IPv4 DHCP pool end address" ,
"type" : "string"
} ,
"dhcp_flag" : {
"description" : "Whether DHCP is enabled" ,
"type" : "boolean"
} ,
"dhcp_start" : {
"description" : "The IPv4 DHCP pool start address" ,
"type" : "string"
} ,
"gateway" : {
"description" : "The IPv4 default gateway address" ,
"type" : "string"
} ,
"network" : {
"description" : "The IPv4 network subnet in CIDR format" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"ip6" : {
"description" : "The IPv6 details of the network (\"managed\" networks only)" ,
"properties" : {
"dhcp_flag" : {
"description" : " W h e t h e r D H C P v 6 i s e n a b l e d " ,
"type" : "boolean"
} ,
"gateway" : {
"description" : "The IPv6 default gateway address" ,
"type" : "string"
} ,
"network" : {
"description" : "The IPv6 network subnet in CIDR format" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"name_servers" : {
"description" : "The configured DNS nameservers of the network for NS records (\"managed\" networks only)" ,
"items" : {
"type" : "string"
} ,
"type" : "array"
} ,
"type" : {
"description" : "The type of network" ,
"enum" : [
"managed" ,
"bridged"
] ,
"type" : "string"
} ,
"vni" : {
"description" : "The VNI of the network" ,
"type" : "integer"
}
} ,
"type" : "object"
} ,
"network-template" : {
"properties" : {
"id" : {
"description" : "Internal provisioner template ID" ,
"type" : "integer"
} ,
"mac_template" : {
"description" : "MAC address template for VM" ,
"type" : "string"
} ,
"name" : {
"description" : "Template name" ,
"type" : "string"
} ,
"networks" : {
"items" : {
"$ref" : "#/definitions/network-template-net"
} ,
"type" : "array"
}
} ,
"type" : "object"
} ,
"network-template-net" : {
"properties" : {
"id" : {
"description" : "Internal provisioner template ID" ,
"type" : "integer"
} ,
"network_template" : {
"description" : "Internal provisioner network template ID" ,
"type" : "integer"
} ,
"vni" : {
"description" : "PVC network VNI" ,
"type" : "integer"
}
} ,
"type" : "object"
} ,
"node" : {
"properties" : {
"arch" : {
"description" : "The architecture of the CPU" ,
"type" : "string"
} ,
"coordinator_state" : {
"description" : "The current coordinator state" ,
"type" : "string"
} ,
"cpu_count" : {
"description" : "The number of available CPU cores" ,
"type" : "integer"
} ,
"daemon_state" : {
"description" : "The current daemon state" ,
"type" : "string"
} ,
"domain_state" : {
"description" : "The current domain (VM) state" ,
"type" : "string"
} ,
"domains_count" : {
"description" : "The number of running domains (VMs)" ,
"type" : "integer"
} ,
"kernel" : {
"desription" : "The running kernel version from uname" ,
"type" : "string"
} ,
"load" : {
"description" : "The current 5-minute CPU load" ,
"format" : "float" ,
"type" : "number"
} ,
"memory" : {
"properties" : {
"allocated" : {
2020-10-18 14:02:34 -04:00
"description" : "The total amount of RAM allocated to running domains in MB" ,
2019-12-23 20:45:30 -05:00
"type" : "integer"
} ,
"free" : {
"description" : "The total free RAM on the node in MB" ,
"type" : "integer"
} ,
2020-10-18 14:02:34 -04:00
"provisioned" : {
"description" : "The total amount of RAM provisioned to all domains (regardless of state) on this node in MB" ,
"type" : "integer"
} ,
2019-12-23 20:45:30 -05:00
"total" : {
"description" : "The total amount of node RAM in MB" ,
"type" : "integer"
} ,
"used" : {
"description" : "The total used RAM on the node in MB" ,
"type" : "integer"
}
} ,
"type" : "object"
} ,
"name" : {
"description" : "The name of the node" ,
"type" : "string"
} ,
"os" : {
"description" : "The current operating system type" ,
"type" : "string"
} ,
2021-07-05 09:57:38 -04:00
"pvc_version" : {
"description" : "The current running PVC node daemon version" ,
"type" : "string"
} ,
2019-12-23 20:45:30 -05:00
"running_domains" : {
"description" : "The list of running domains (VMs) by UUID" ,
"type" : "string"
} ,
"vcpu" : {
"properties" : {
"allocated" : {
"description" : "The total number of allocated vCPU cores" ,
"type" : "integer"
} ,
"total" : {
"description" : "The total number of real CPU cores available" ,
"type" : "integer"
}
} ,
"type" : "object"
}
} ,
"type" : "object"
} ,
2020-01-06 12:54:18 -05:00
"osd" : {
"properties" : {
2021-09-23 13:59:49 -04:00
"db_device" : {
"description" : "The OSD database/WAL block device (logical volume); empty if not applicable" ,
"type" : "string"
} ,
"device" : {
"description" : "The OSD data block device" ,
"type" : "string"
} ,
2020-01-06 12:54:18 -05:00
"id" : {
"description" : "The Ceph ID of the OSD" ,
"type" : "string (containing integer)"
} ,
"stats" : {
"properties" : {
"avail" : {
"description" : "The free space on the OSD in human-readable format" ,
"type" : "string"
} ,
"in" : {
"description" : "Whether OSD is in \"in\" state" ,
"type" : "boolean integer"
} ,
"kb" : {
"description" : "Size of the OSD in KB" ,
"type" : "integer"
} ,
"node" : {
"description" : "The PVC node the OSD resides on" ,
"type" : "string"
} ,
"pgs" : {
"description" : "The number of placement groups on this OSD" ,
"type" : "integer"
} ,
"primary_affinity" : {
"description" : "The Ceph primary affinity of the OSD" ,
"type" : "integer"
} ,
"rd_data" : {
"description" : "Cluster-lifetime read size from OSD" ,
"type" : "integer"
} ,
"rd_ops" : {
"description" : "Cluster-lifetime read operations from OSD" ,
"type" : "integer"
} ,
"reweight" : {
"description" : "The active cluster weight of the OSD" ,
"type" : "number"
} ,
"state" : {
"description" : "CSV of the current state of the OSD" ,
"type" : "string"
} ,
"up" : {
"description" : "Whether OSD is in \"up\" state" ,
"type" : "boolean integer"
} ,
"used" : {
"description" : "The used space on the OSD in human-readable format" ,
"type" : "string"
} ,
"utilization" : {
"description" : "The utilization percentage of the OSD" ,
"type" : "number"
} ,
"uuid" : {
"description" : "The Ceph OSD UUID" ,
"type" : "string"
} ,
"var" : {
"description" : "The usage variability among OSDs" ,
"type" : "number"
} ,
"weight" : {
"description" : "The weight of the OSD in the CRUSH map" ,
"type" : "number"
} ,
"wr_data" : {
"description" : "Cluster-lifetime write size to OSD" ,
"type" : "integer"
} ,
"wr_ops" : {
"description" : "Cluster-lifetime write operations to OSD" ,
"type" : "integer"
}
} ,
"type" : "object"
}
} ,
"type" : "object"
} ,
2020-02-17 22:52:49 -05:00
"ova" : {
"properties" : {
"id" : {
"description" : "Internal provisioner OVA ID" ,
"type" : "integer"
} ,
"name" : {
"description" : "OVA name" ,
"type" : "string"
} ,
"volumes" : {
"items" : {
"id" : "ova_volume" ,
"properties" : {
"disk_id" : {
"description" : "Disk identifier" ,
"type" : "string"
} ,
"disk_size_gb" : {
"description" : "Disk size in GB" ,
"type" : "string"
} ,
"pool" : {
"description" : "Pool containing the OVA volume" ,
"type" : "string"
} ,
"volume_format" : {
"description" : "OVA image format" ,
"type" : "string"
} ,
"volume_name" : {
"description" : "Storage volume containing the OVA image" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"type" : "list"
}
} ,
"type" : "object"
} ,
2019-12-23 20:45:30 -05:00
"pool" : {
"properties" : {
"name" : {
"description" : "The name of the pool" ,
"type" : "string"
} ,
"stats" : {
"properties" : {
"free_bytes" : {
2021-02-09 01:49:15 -05:00
"description" : "The total free space (in bytes. post-replicas)" ,
2019-12-23 20:45:30 -05:00
"type" : "integer"
} ,
"id" : {
"description" : "The Ceph pool ID" ,
"type" : "integer"
} ,
"num_object_clones" : {
"description" : "The total number of cloned Ceph objects" ,
"type" : "integer"
} ,
"num_object_copies" : {
"description" : "The total number of Ceph objects after replication" ,
"type" : "integer"
} ,
"num_objects" : {
"description" : "The number of Ceph objects before replication" ,
"type" : "integer"
} ,
"num_objects_degraded" : {
"description" : "The total number of degraded Ceph objects" ,
"type" : "integer"
} ,
"num_objects_missing_on_primary" : {
"description" : "The total number of missing-on-primary Ceph objects" ,
"type" : "integer"
} ,
"num_objects_unfound" : {
"description" : "The total number of unfound Ceph objects" ,
"type" : "integer"
} ,
"read_bytes" : {
"description" : "The total read bytes on the pool (pool-lifetime)" ,
"type" : "integer"
} ,
"read_ops" : {
"description" : "The total read operations on the pool (pool-lifetime)" ,
"type" : "integer"
} ,
2021-02-09 01:49:15 -05:00
"stored_bytes" : {
"description" : "The stored data size (in bytes, post-replicas)" ,
"type" : "integer"
} ,
2019-12-23 20:45:30 -05:00
"used_bytes" : {
2021-02-09 01:49:15 -05:00
"description" : "The total used space (in bytes, pre-replicas)" ,
2019-12-23 20:45:30 -05:00
"type" : "integer"
} ,
"used_percent" : {
"description" : "The ratio of used space to free space" ,
"type" : "number"
} ,
"write_bytes" : {
"description" : "The total write bytes on the pool (pool-lifetime)" ,
"type" : "integer"
} ,
"write_ops" : {
"description" : "The total write operations on the pool (pool-lifetime)" ,
"type" : "integer"
}
} ,
"type" : "object"
2020-12-01 04:45:01 -05:00
} ,
"volume_count" : {
"description" : "The number of volumes in the pool" ,
"type" : "integer"
2019-12-23 20:45:30 -05:00
}
} ,
"type" : "object"
} ,
"profile" : {
"properties" : {
"arguments" : {
"items" : {
"description" : "Script install() function keyword arguments in \"arg=data\" format" ,
"type" : "string"
} ,
"type" : "array"
} ,
"id" : {
"description" : "Internal provisioner profile ID" ,
"type" : "integer"
} ,
"name" : {
"description" : "Profile name" ,
"type" : "string"
} ,
"network_template" : {
"description" : "Network template name" ,
"type" : "string"
} ,
"script" : {
"description" : "Script name" ,
"type" : "string"
} ,
"storage_template" : {
"description" : "Storage template name" ,
"type" : "string"
} ,
"system_template" : {
"description" : "System template name" ,
"type" : "string"
} ,
2020-01-04 13:58:18 -05:00
"userdata" : {
2019-12-23 20:45:30 -05:00
"description" : "Userdata template name" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"script" : {
"properties" : {
"id" : {
"description" : "Internal provisioner script ID" ,
"type" : "integer"
} ,
"name" : {
"description" : "Script name" ,
"type" : "string"
} ,
"script" : {
"description" : "Raw Python script document" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"snapshot" : {
"properties" : {
"pool" : {
"description" : "The name of the pool" ,
"type" : "string"
} ,
"snapshot" : {
"description" : "The name of the snapshot" ,
"type" : "string"
} ,
"volume" : {
"description" : "The name of the volume" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
2021-06-21 17:12:14 -04:00
"sriov_pf" : {
"properties" : {
"mtu" : {
"description" : "The MTU of the SR-IOV PF device" ,
"type" : "string"
} ,
"phy" : {
"description" : "The name of the SR-IOV PF device" ,
"type" : "string"
} ,
"vfs" : {
"items" : {
"description" : "The PHY name of a VF of this PF" ,
"type" : "string"
} ,
"type" : "list"
}
} ,
"type" : "object"
} ,
"sriov_vf" : {
"properties" : {
"config" : {
"id" : "sriov_vf_config" ,
"properties" : {
"link_state" : {
"description" : "The current SR-IOV VF link state (either enabled, disabled, or auto)" ,
"type" : "string"
} ,
"query_rss" : {
"description" : "Whether VF RSS querying is enabled or disabled" ,
"type" : "boolean"
} ,
"spoof_check" : {
"description" : "Whether device spoof checking is enabled or disabled" ,
"type" : "boolean"
} ,
"trust" : {
"description" : "Whether guest device trust is enabled or disabled" ,
"type" : "boolean"
} ,
"tx_rate_max" : {
"description" : "The maximum TX rate of the SR-IOV VF device" ,
"type" : "string"
} ,
"tx_rate_min" : {
"description" : "The minimum TX rate of the SR-IOV VF device" ,
"type" : "string"
} ,
"vlan_id" : {
"description" : "The tagged vLAN ID of the SR-IOV VF device" ,
"type" : "string"
} ,
"vlan_qos" : {
"description" : "The QOS group of the tagged vLAN" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"mac" : {
"description" : "The current MAC address of the VF device" ,
"type" : "string"
} ,
"mtu" : {
"description" : "The current MTU of the VF device" ,
"type" : "integer"
} ,
"pf" : {
"description" : "The name of the SR-IOV PF parent of this VF device" ,
"type" : "string"
} ,
"phy" : {
"description" : "The name of the SR-IOV VF device" ,
"type" : "string"
} ,
"usage" : {
"id" : "sriov_vf_usage" ,
"properties" : {
"domain" : {
"description" : "The UUID of the domain the SR-IOV VF is currently used by" ,
"type" : "boolean"
} ,
"used" : {
"description" : "Whether the SR-IOV VF is currently used by a VM or not" ,
"type" : "boolean"
}
} ,
"type" : "object"
}
} ,
"type" : "object"
} ,
2019-12-23 20:45:30 -05:00
"storage-template" : {
"properties" : {
"disks" : {
"items" : {
"$ref" : "#/definitions/storage-template-disk"
} ,
"type" : "array"
} ,
"id" : {
"description" : "Internal provisioner template ID" ,
"type" : "integer"
} ,
"name" : {
"description" : "Template name" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"storage-template-disk" : {
"properties" : {
"disk_id" : {
"description" : "Disk identifier" ,
"type" : "string"
} ,
"disk_size_gb" : {
"description" : "Disk size in GB" ,
"type" : "string"
} ,
"filesystem" : {
"description" : "Filesystem for disk" ,
"type" : "string"
} ,
"filesystem_args" : {
"items" : {
"description" : "Filesystem mkfs arguments" ,
"type" : "string"
} ,
"type" : "array"
} ,
"id" : {
"description" : "Internal provisioner disk ID" ,
"type" : "integer"
} ,
"mountpoint" : {
"description" : "In-VM mountpoint for disk" ,
"type" : "string"
} ,
"pool" : {
"description" : "Ceph storage pool for disk" ,
"type" : "string"
} ,
"storage_template" : {
"description" : "Internal provisioner storage template ID" ,
"type" : "integer"
}
} ,
"type" : "object"
} ,
2020-08-25 12:43:16 -04:00
"storagebenchmark" : {
"properties" : {
"benchmark_result" : {
"properties" : {
"test_name" : {
"properties" : {
"bandwidth" : {
"properties" : {
"max" : {
"description" : "The maximum bandwidth (KiB/s) measurement" ,
"type" : "string (integer)"
} ,
"mean" : {
"description" : "The mean bandwidth (KiB/s) measurement" ,
"type" : "string (float)"
} ,
"min" : {
"description" : "The minimum bandwidth (KiB/s) measurement" ,
"type" : "string (integer)"
} ,
"numsamples" : {
"description" : "The number of samples taken during the test" ,
"type" : "string (integer)"
} ,
"stdev" : {
"description" : "The standard deviation of bandwidth" ,
"type" : "string (float)"
}
} ,
"type" : "object"
} ,
"cpu" : {
"properties" : {
"ctxsw" : {
"description" : "The number of context switches during the test" ,
"type" : "string (integer)"
} ,
"majfault" : {
"description" : "The number of major page faults during the test" ,
"type" : "string (integer)"
} ,
"minfault" : {
"description" : "The number of minor page faults during the test" ,
"type" : "string (integer)"
} ,
"system" : {
"description" : "The percentage of test time spent in system (kernel) space" ,
"type" : "string (float percentage)"
} ,
"user" : {
"description" : "The percentage of test time spent in user space" ,
"type" : "string (float percentage)"
}
} ,
"type" : "object"
} ,
"iops" : {
"properties" : {
"max" : {
"description" : "The maximum IOPS measurement" ,
"type" : "string (integer)"
} ,
"mean" : {
"description" : "The mean IOPS measurement" ,
"type" : "string (float)"
} ,
"min" : {
"description" : "The minimum IOPS measurement" ,
"type" : "string (integer)"
} ,
"numsamples" : {
"description" : "The number of samples taken during the test" ,
"type" : "string (integer)"
} ,
"stdev" : {
"description" : "The standard deviation of IOPS" ,
"type" : "string (float)"
}
} ,
"type" : "object"
} ,
"latency" : {
"properties" : {
"max" : {
"description" : "The maximum latency measurement" ,
"type" : "string (integer)"
} ,
"mean" : {
"description" : "The mean latency measurement" ,
"type" : "string (float)"
} ,
"min" : {
"description" : "The minimum latency measurement" ,
"type" : "string (integer)"
} ,
"stdev" : {
"description" : "The standard deviation of latency" ,
"type" : "string (float)"
}
} ,
"type" : "object"
} ,
"overall" : {
"properties" : {
"bandwidth" : {
"description" : "The average bandwidth (KiB/s)" ,
"type" : "string (integer)"
} ,
"iops" : {
"description" : "The average IOPS" ,
"type" : "string (integer)"
} ,
"iosize" : {
"description" : "The total size of the benchmark data" ,
"type" : "string (integer)"
} ,
"runtime" : {
"description" : "The total test time in milliseconds" ,
"type" : "string (integer)"
}
} ,
"type" : "object"
}
} ,
"type" : "object"
}
} ,
"type" : "object"
} ,
"id" : {
"description" : "The database ID of the test result" ,
"type" : "string (containing integer)"
} ,
"job" : {
"description" : "The job name (an ISO date) of the test result" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
2019-12-23 20:45:30 -05:00
"system-template" : {
"properties" : {
"id" : {
"description" : "Internal provisioner template ID" ,
"type" : "integer"
} ,
2020-12-01 04:45:01 -05:00
"migration_method" : {
"description" : "The preferred migration method (live, shutdown, none)" ,
"type" : "string"
} ,
2019-12-23 20:45:30 -05:00
"name" : {
"description" : "Template name" ,
"type" : "string"
} ,
"node_autostart" : {
"description" : "Whether to start VM with node ready state (one-time)" ,
"type" : "boolean"
} ,
"node_limit" : {
"description" : "CSV list of node(s) to limit VM assignment to" ,
"type" : "string"
} ,
"node_selector" : {
"description" : "Selector to use for VM node assignment on migration/move" ,
"type" : "string"
} ,
"serial" : {
"description" : "Whether to enable serial console for VM" ,
"type" : "boolean"
} ,
"vcpu_count" : {
"description" : "vCPU count for VM" ,
"type" : "integer"
} ,
"vnc" : {
"description" : "Whether to enable VNC console for VM" ,
"type" : "boolean"
} ,
"vnc_bind" : {
"description" : "VNC bind address when VNC console is enabled" ,
"type" : "string"
} ,
"vram_mb" : {
"description" : "vRAM size in MB for VM" ,
"type" : "integer"
}
} ,
"type" : "object"
} ,
2019-12-30 15:01:28 -05:00
"userdata" : {
2019-12-23 20:45:30 -05:00
"properties" : {
"id" : {
2019-12-30 15:01:28 -05:00
"description" : "Internal provisioner ID" ,
2019-12-23 20:45:30 -05:00
"type" : "integer"
} ,
"name" : {
2019-12-30 15:01:28 -05:00
"description" : "Userdata name" ,
2019-12-23 20:45:30 -05:00
"type" : "string"
} ,
"userdata" : {
"description" : "Raw userdata configuration document" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"vm" : {
"properties" : {
"arch" : {
"description" : "The architecture of the VM" ,
"type" : "string"
} ,
"console" : {
"descritpion" : "The serial console type of the VM" ,
"type" : "string"
} ,
"controllers" : {
"description" : "The device controllers attached to the VM" ,
"items" : {
"properties" : {
"model" : {
"description" : "The model of the controller" ,
"type" : "string"
} ,
"type" : {
"description" : "The type of the controller" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"type" : "array"
} ,
"description" : {
"description" : "The description of the VM" ,
"type" : "string"
} ,
"disks" : {
"description" : "The PVC storage volumes attached to the VM" ,
"items" : {
"properties" : {
"bus" : {
"description" : "The virtual bus of the volume in the VM" ,
"type" : "string"
} ,
"dev" : {
"description" : "The device ID of the volume in the VM" ,
"type" : "string"
} ,
"name" : {
"description" : "The full name of the volume in \"pool/volume\" format" ,
"type" : "string"
} ,
2020-06-07 02:15:33 -04:00
"rd_bytes" : {
"description" : "The number of read bytes from the volume" ,
"type" : "integer"
} ,
"rd_req" : {
"description" : "The number of read requests from the volume" ,
"type" : "integer"
} ,
2019-12-23 20:45:30 -05:00
"type" : {
"description" : "The type of volume" ,
"type" : "string"
2020-06-07 02:15:33 -04:00
} ,
"wr_bytes" : {
"description" : "The number of write bytes to the volume" ,
"type" : "integer"
} ,
"wr_req" : {
"description" : "The number of write requests to the volume" ,
"type" : "integer"
2019-12-23 20:45:30 -05:00
}
} ,
"type" : "object"
} ,
"type" : "array"
} ,
"emulator" : {
"description" : "The binary emulator of the VM" ,
"type" : "string"
} ,
"failed_reason" : {
"description" : "Information about why the VM failed to start" ,
"type" : "string"
} ,
"features" : {
"description" : "The available features of the VM" ,
"items" : {
"type" : "string"
} ,
"type" : "array"
} ,
"last_node" : {
"description" : "The last node the VM was assigned to before migrating" ,
"type" : "string"
} ,
"machine" : {
"description" : "The QEMU machine type of the VM" ,
"type" : "string"
} ,
"memory" : {
"description" : "The assigned RAM of the VM in MB" ,
"type" : "integer"
} ,
2020-06-07 02:15:33 -04:00
"memory_stats" : {
"properties" : {
"actual" : {
"description" : "The total active memory of the VM in kB" ,
"type" : "integer"
} ,
"available" : {
"description" : "The total amount of usable memory as seen by the domain in kB" ,
"type" : "integer"
} ,
"last_update" : {
"description" : "Timestamp of the last update of statistics, in seconds" ,
"type" : "integer"
} ,
"major_fault" : {
"description" : "The number of major page faults" ,
"type" : "integer"
} ,
"minor_fault" : {
"description" : "The number of minor page faults" ,
"type" : "integer"
} ,
"rss" : {
"description" : "The Resident Set Size of the process running the domain in kB" ,
"type" : "integer"
} ,
"swap_in" : {
"description" : "The amount of swapped in data in kB" ,
"type" : "integer"
} ,
"swap_out" : {
"description" : "The amount of swapped out data in kB" ,
"type" : "integer"
} ,
"unused" : {
"description" : "The amount of memory left completely unused by the system in kB" ,
"type" : "integer"
} ,
"usable" : {
"description" : "How much the balloon can be inflated without pushing the guest system to swap in kB" ,
"type" : "integer"
}
} ,
"type" : "object"
} ,
2019-12-23 20:45:30 -05:00
"migrated" : {
"description" : "Whether the VM has been migrated, either \"no\" or \"from <last_node>\"" ,
"type" : "string"
} ,
2020-12-01 04:45:01 -05:00
"migration_method" : {
"description" : "The preferred migration method (live, shutdown, none)" ,
"type" : "string"
} ,
2019-12-23 20:45:30 -05:00
"name" : {
"description" : "The name of the VM" ,
"type" : "string"
} ,
"networks" : {
"description" : "The PVC networks attached to the VM" ,
"items" : {
"properties" : {
"mac" : {
"description" : "The MAC address of the VM network interface" ,
"type" : "string"
} ,
"model" : {
"description" : "The virtual network device model" ,
"type" : "string"
} ,
2020-06-07 02:15:33 -04:00
"rd_bytes" : {
"description" : "The number of read bytes on the interface" ,
"type" : "integer"
} ,
"rd_drops" : {
"description" : "The number of read drops on the interface" ,
"type" : "integer"
} ,
"rd_errors" : {
"description" : "The number of read errors on the interface" ,
"type" : "integer"
} ,
"rd_packets" : {
"description" : "The number of read packets on the interface" ,
"type" : "integer"
} ,
2019-12-23 20:45:30 -05:00
"source" : {
"description" : "The parent network bridge on the node" ,
"type" : "string"
} ,
"type" : {
"description" : "The PVC network type" ,
"type" : "string"
2020-06-07 02:15:33 -04:00
} ,
2020-12-01 04:45:01 -05:00
"vni" : {
"description" : "The VNI (PVC network) of the network bridge" ,
"type" : "integer"
} ,
2020-06-07 02:15:33 -04:00
"wr_bytes" : {
"description" : "The number of write bytes on the interface" ,
"type" : "integer"
} ,
"wr_drops" : {
"description" : "The number of write drops on the interface" ,
"type" : "integer"
} ,
"wr_errors" : {
"description" : "The number of write errors on the interface" ,
"type" : "integer"
} ,
"wr_packets" : {
"description" : "The number of write packets on the interface" ,
"type" : "integer"
2019-12-23 20:45:30 -05:00
}
} ,
"type" : "object"
} ,
"type" : "array"
} ,
"node" : {
"description" : "The node the VM is currently assigned to" ,
"type" : "string"
} ,
"node_autostart" : {
"description" : "Whether to autostart the VM when its node returns to ready domain state" ,
"type" : "boolean"
} ,
"node_limit" : {
"description" : "The node(s) the VM is permitted to be assigned to" ,
"items" : {
"type" : "string"
} ,
"type" : "array"
} ,
"node_selector" : {
"description" : "The selector used to determine candidate nodes during migration" ,
"type" : "string"
} ,
"profile" : {
"description" : "The provisioner profile used to create the VM" ,
"type" : "string"
} ,
"state" : {
"description" : "The current state of the VM" ,
"type" : "string"
} ,
2021-07-14 00:51:48 -04:00
"tags" : {
"description" : "The tag(s) of the VM" ,
"items" : {
"id" : "VMTag" ,
"properties" : {
"name" : {
"description" : "The name of the tag" ,
"type" : "string"
} ,
"protected" : {
"description" : "Whether the tag is protected or not" ,
"type" : "boolean"
} ,
"type" : {
"description" : "The type of the tag (user, system)" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"type" : "array"
} ,
2019-12-23 20:45:30 -05:00
"type" : {
"description" : "The type of the VM" ,
"type" : "string"
} ,
"uuid" : {
"description" : "The UUID of the VM" ,
"type" : "string"
} ,
"vcpu" : {
"description" : "The assigned vCPUs of the VM" ,
"type" : "integer"
} ,
2020-06-07 02:15:33 -04:00
"vcpu_stats" : {
"properties" : {
"cpu_time" : {
"description" : "The active CPU time for all vCPUs" ,
"type" : "integer"
} ,
"system_time" : {
"description" : "vCPU system time" ,
"type" : "integer"
} ,
"user_time" : {
"description" : "vCPU user time" ,
"type" : "integer"
}
} ,
"type" : "object"
} ,
2019-12-23 20:45:30 -05:00
"vcpu_topology" : {
"description" : "The topology of the assigned vCPUs in Sockets/Cores/Threads format" ,
"type" : "string"
} ,
2020-12-20 16:00:55 -05:00
"vnc" : {
"properties" : {
"listen" : {
"description" : "The active VNC listen address or 'None'" ,
"type" : "string"
} ,
"port" : {
"description" : "The active VNC port or 'None'" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
2019-12-23 20:45:30 -05:00
"xml" : {
"description" : "The raw Libvirt XML definition of the VM" ,
"type" : "string"
}
} ,
"type" : "object"
} ,
"volume" : {
"properties" : {
"name" : {
"description" : "The name of the volume" ,
"type" : "string"
} ,
"pool" : {
"description" : "The name of the pool containing the volume" ,
"type" : "string"
} ,
"stats" : {
"properties" : {
"access_timestamp" : {
"description" : "The volume access timestamp" ,
"type" : "string"
} ,
"block_name_prefix" : {
"description" : "The Ceph-internal block name prefix" ,
"type" : "string"
} ,
"create_timestamp" : {
"description" : "The volume creation timestamp" ,
"type" : "string"
} ,
"features" : {
"items" : {
"description" : "The Ceph RBD feature" ,
"type" : "string"
} ,
"type" : "array"
} ,
"flags" : {
"items" : {
"description" : "The Ceph RBD volume flags" ,
"type" : "string"
} ,
"type" : "array"
} ,
"format" : {
"description" : "The Ceph RBD volume format" ,
"type" : "integer"
} ,
"id" : {
"description" : "The Ceph volume ID" ,
"type" : "string"
} ,
"modify_timestamp" : {
"description" : "The volume modification timestamp" ,
"type" : "string"
} ,
"name" : {
"description" : "The name of the volume" ,
"type" : "string"
} ,
"object_size" : {
"description" : "The size of each object in bytes" ,
"type" : "integer"
} ,
"objects" : {
"description" : "The number of Ceph objects making up the volume" ,
"type" : "integer"
} ,
"op_features" : {
"items" : {
"description" : "The Ceph RBD operational features" ,
"type" : "string"
} ,
"type" : "array"
} ,
"order" : {
"description" : "The Ceph volume order ID" ,
"type" : "integer"
} ,
"size" : {
"description" : "The size of the volume (human-readable values)" ,
"type" : "string"
} ,
"snapshot_count" : {
"description" : "The number of snapshots of the volume" ,
"type" : "integer"
}
} ,
"type" : "object"
}
} ,
"type" : "object"
}
} ,
2020-01-06 23:50:12 -05:00
"host" : "pvc.local:7370" ,
2019-12-23 20:45:30 -05:00
"info" : {
"title" : "PVC Client and Provisioner API" ,
"version" : "1.0"
} ,
"paths" : {
"/api/v1/" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/API-Version"
}
}
} ,
"summary" : "Return the PVC API version string" ,
"tags" : [
"root"
]
}
} ,
2020-12-01 04:45:01 -05:00
"/api/v1/backup" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Cluster Data"
}
} ,
"400" : {
"description" : "Bad request"
}
} ,
"summary" : "Back up the Zookeeper data of a cluster in JSON format" ,
"tags" : [
"root"
]
}
} ,
2019-12-23 20:45:30 -05:00
"/api/v1/initialize" : {
"post" : {
2021-06-21 17:12:14 -04:00
"description" : "<br/>If the 'overwrite' option is not True, the cluster will return 400 if the `/config/primary_node` key is found. If 'overwrite' is True, the existing cluster<br/>data will be erased and new, empty data written in its place.<br/><br/>All node daemons should be stopped before running this command, and the API daemon started manually to avoid undefined behavior." ,
2020-12-01 04:45:01 -05:00
"parameters" : [
2021-06-21 17:12:14 -04:00
{
"description" : "A flag to enable or disable (default) overwriting existing data" ,
"in" : "query" ,
"name" : "overwrite" ,
"required" : false ,
"type" : "bool"
} ,
2020-12-01 04:45:01 -05:00
{
"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"
}
] ,
2019-12-23 20:45:30 -05:00
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
2019-12-23 20:51:18 -05:00
"400" : {
"description" : "Bad request"
2019-12-23 20:45:30 -05:00
}
} ,
"summary" : "Initialize a new PVC cluster" ,
"tags" : [
"root"
]
}
} ,
"/api/v1/login" : {
"post" : {
"description" : "" ,
"parameters" : [
{
"in" : "query" ,
"name" : "token" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"302" : {
"description" : "Authentication disabled"
} ,
"401" : {
"description" : "Unauthorized" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"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" : [
{
2021-07-14 00:51:48 -04:00
"description" : "A search limit in the name, tags, or an exact UUID; fuzzy by default, use ^/$ to force exact matches" ,
2019-12-23 20:45:30 -05:00
"in" : "query" ,
"name" : "limit" ,
"required" : false ,
"type" : "string"
2020-06-25 11:38:30 -04:00
} ,
{
"description" : "Limit results to nodes in the specified daemon state" ,
"in" : "query" ,
"name" : "daemon_state" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Limit results to nodes in the specified coordinator state" ,
"in" : "query" ,
"name" : "coordinator_state" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Limit results to nodes in the specified domain state" ,
"in" : "query" ,
"name" : "domain_state" ,
"required" : false ,
"type" : "string"
2019-12-23 20:45:30 -05:00
}
] ,
"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" ,
"enum" : [
"primary" ,
"secondary"
] ,
"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 the coordinator state of {node}" ,
"tags" : [
"node"
]
}
} ,
"/api/v1/node/{node}/daemon-state" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/NodeDaemonState"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return the daemon state of {node}" ,
"tags" : [
"node"
]
}
} ,
"/api/v1/node/{node}/domain-state" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/NodeDomainState"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return the domain state of {node}" ,
"tags" : [
"node"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "The new domain state of the node" ,
"enum" : [
"flush" ,
"ready"
] ,
"in" : "query" ,
"name" : "action" ,
"required" : true ,
"type" : "string"
2019-12-26 18:42:56 -05:00
} ,
{
"description" : "Whether to block waiting for the full flush/ready state" ,
"in" : "query" ,
"name" : "wait" ,
"type" : "boolean"
2019-12-23 20:45:30 -05:00
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Set the domain state of {node}" ,
"tags" : [
"node"
]
}
} ,
2021-07-18 17:37:49 -04:00
"/api/v1/node/{node}/log" : {
"get" : {
"description" : "" ,
"parameters" : [
{
"description" : "The number of lines to retrieve" ,
"in" : "query" ,
"name" : "lines" ,
"required" : false ,
"type" : "integer"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/NodeLog"
}
} ,
"404" : {
"description" : "Node not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return the recent logs of {node}" ,
"tags" : [
"node"
]
}
} ,
2019-12-23 20:45:30 -05:00
"/api/v1/provisioner/create" : {
"post" : {
"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"
2020-01-08 21:27:13 -05:00
} ,
{
"description" : "Whether to define the VM on the cluster during provisioning" ,
"in" : "query" ,
"name" : "define_vm" ,
"required" : false ,
"type" : "boolean"
} ,
{
"description" : "Whether to start the VM after provisioning" ,
"in" : "query" ,
"name" : "start_vm" ,
"required" : false ,
"type" : "boolean"
2020-08-25 12:43:16 -04:00
} ,
{
"description" : "Script install() function keywork argument in \"arg=data\" format; may be specified multiple times to add multiple arguments" ,
"in" : "query" ,
"name" : "arg" ,
"type" : "string"
2019-12-23 20:45:30 -05:00
}
] ,
"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"
]
}
} ,
2020-02-17 22:52:49 -05:00
"/api/v1/provisioner/ova" : {
"get" : {
"description" : "" ,
"parameters" : [
{
"description" : "An OVA 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/ova"
} ,
"type" : "list"
}
}
} ,
"summary" : "Return a list of OVA sources" ,
"tags" : [
"provisioner"
]
} ,
"post" : {
"description" : "<br/>The API client is responsible for determining and setting the ova_size value, as this value cannot be determined dynamically before the upload proceeds." ,
"parameters" : [
{
"description" : "Storage pool name" ,
"in" : "query" ,
"name" : "pool" ,
"required" : true ,
"type" : "string"
} ,
{
"description" : "OVA name on the cluster (usually identical to the OVA file name)" ,
"in" : "query" ,
"name" : "name" ,
"required" : true ,
"type" : "string"
} ,
{
"description" : "Size of the OVA file in bytes" ,
"in" : "query" ,
"name" : "ova_size" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Upload an OVA image to the cluster" ,
"tags" : [
"provisioner"
]
}
} ,
"/api/v1/provisioner/ova/{ova}" : {
"delete" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Remove ova {ova}" ,
"tags" : [
"provisioner"
]
} ,
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/ova"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return information about OVA image {ova}" ,
"tags" : [
"provisioner"
]
} ,
"post" : {
"description" : "<br/>The API client is responsible for determining and setting the ova_size value, as this value cannot be determined dynamically before the upload proceeds." ,
"parameters" : [
{
"description" : "Storage pool name" ,
"in" : "query" ,
"name" : "pool" ,
"required" : true ,
"type" : "string"
} ,
{
"description" : "Size of the OVA file in bytes" ,
"in" : "query" ,
"name" : "ova_size" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Upload an OVA image to the cluster" ,
"tags" : [
"provisioner"
]
}
} ,
2019-12-23 20:45:30 -05:00
"/api/v1/provisioner/profile" : {
"get" : {
"description" : "" ,
"parameters" : [
{
"description" : "A profile 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/profile"
} ,
"type" : "list"
}
}
} ,
"summary" : "Return a list of profiles" ,
"tags" : [
"provisioner"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "Profile name" ,
"in" : "query" ,
"name" : "name" ,
"required" : true ,
"type" : "string"
} ,
2020-02-17 22:52:49 -05:00
{
"description" : "Profile type" ,
"enum" : [
"provisioner" ,
"ova"
] ,
"in" : "query" ,
"name" : "profile_type" ,
"required" : true ,
"type" : "string"
} ,
2019-12-23 20:45:30 -05:00
{
"description" : "Script name" ,
"in" : "query" ,
"name" : "script" ,
2020-02-17 22:52:49 -05:00
"required" : false ,
2019-12-23 20:45:30 -05:00
"type" : "string"
} ,
{
"description" : "System template name" ,
"in" : "query" ,
"name" : "system_template" ,
2020-02-17 22:52:49 -05:00
"required" : false ,
2019-12-23 20:45:30 -05:00
"type" : "string"
} ,
{
"description" : "Network template name" ,
"in" : "query" ,
"name" : "network_template" ,
2020-02-17 22:52:49 -05:00
"required" : false ,
2019-12-23 20:45:30 -05:00
"type" : "string"
} ,
{
"description" : "Storage template name" ,
"in" : "query" ,
"name" : "storage_template" ,
2020-02-17 22:52:49 -05:00
"required" : false ,
2019-12-23 20:45:30 -05:00
"type" : "string"
} ,
{
"description" : "Userdata template name" ,
"in" : "query" ,
2020-01-04 13:58:18 -05:00
"name" : "userdata" ,
2020-02-17 22:52:49 -05:00
"required" : false ,
"type" : "string"
} ,
{
"description" : "OVA image source" ,
"in" : "query" ,
"name" : "ova" ,
"required" : false ,
2019-12-23 20:45:30 -05:00
"type" : "string"
} ,
{
"description" : "Script install() function keywork argument in \"arg=data\" format; may be specified multiple times to add multiple arguments" ,
"in" : "query" ,
"name" : "arg" ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create a new profile" ,
"tags" : [
"provisioner"
]
}
} ,
"/api/v1/provisioner/profile/{profile}" : {
"delete" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Remove profile {profile}" ,
"tags" : [
"provisioner"
]
} ,
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/profile"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return information about profile {profile}" ,
"tags" : [
"provisioner"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
2020-02-17 22:52:49 -05:00
{
"description" : "Profile type" ,
"enum" : [
"provisioner" ,
"ova"
] ,
"in" : "query" ,
"name" : "profile_type" ,
"required" : true ,
"type" : "string"
} ,
2019-12-23 20:45:30 -05:00
{
"description" : "Script name" ,
"in" : "query" ,
"name" : "script" ,
"required" : true ,
"type" : "string"
} ,
{
"description" : "System template name" ,
"in" : "query" ,
"name" : "system_template" ,
"required" : true ,
"type" : "string"
} ,
{
"description" : "Network template name" ,
"in" : "query" ,
"name" : "network_template" ,
"required" : true ,
"type" : "string"
} ,
{
"description" : "Storage template name" ,
"in" : "query" ,
"name" : "storage_template" ,
"required" : true ,
"type" : "string"
} ,
{
"description" : "Userdata template name" ,
"in" : "query" ,
2020-01-04 13:58:18 -05:00
"name" : "userdata" ,
2019-12-23 20:45:30 -05:00
"required" : true ,
"type" : "string"
} ,
2020-02-17 22:52:49 -05:00
{
"description" : "OVA image source" ,
"in" : "query" ,
"name" : "ova" ,
"required" : false ,
"type" : "string"
} ,
2019-12-23 20:45:30 -05:00
{
"description" : "Script install() function keywork argument in \"arg=data\" format; may be specified multiple times to add multiple arguments" ,
"in" : "query" ,
"name" : "arg" ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create a new profile {profile}" ,
"tags" : [
"provisioner"
]
2020-01-16 22:35:55 -05:00
} ,
"put" : {
"description" : "" ,
"parameters" : [
{
"description" : "Script name" ,
"in" : "query" ,
"name" : "script" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "System template name" ,
"in" : "query" ,
"name" : "system_template" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Network template name" ,
"in" : "query" ,
"name" : "network_template" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Storage template name" ,
"in" : "query" ,
"name" : "storage_template" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Userdata template name" ,
"in" : "query" ,
"name" : "userdata" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Script install() function keywork argument in \"arg=data\" format; may be specified multiple times to add multiple arguments" ,
"in" : "query" ,
"name" : "arg" ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Modify profile {profile}" ,
"tags" : [
"provisioner"
]
2019-12-23 20:45:30 -05:00
}
} ,
"/api/v1/provisioner/script" : {
"get" : {
"description" : "" ,
"parameters" : [
{
"description" : "A script 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/script"
} ,
"type" : "list"
}
}
} ,
"summary" : "Return a list of scripts" ,
"tags" : [
"provisioner"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "Script name" ,
"in" : "query" ,
"name" : "name" ,
"required" : true ,
"type" : "string"
} ,
{
"description" : "Raw Python script document" ,
"in" : "query" ,
"name" : "data" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create a new script" ,
"tags" : [
"provisioner"
]
}
} ,
"/api/v1/provisioner/script/{script}" : {
"delete" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Remove script {script}" ,
"tags" : [
"provisioner"
]
} ,
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/script"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return information about script {script}" ,
"tags" : [
"provisioner"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "Raw Python script document" ,
"in" : "query" ,
"name" : "data" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create a new script {script}" ,
"tags" : [
"provisioner"
]
} ,
"put" : {
"description" : "" ,
"parameters" : [
{
"description" : "Raw Python script document" ,
"in" : "query" ,
"name" : "data" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Update script {script}" ,
"tags" : [
"provisioner"
]
}
} ,
2020-01-12 14:01:47 -05:00
"/api/v1/provisioner/status" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"properties" : {
"active" : {
"description" : "Celery app.control.inspect active tasks" ,
"type" : "object"
} ,
"reserved" : {
"description" : "Celery app.control.inspect reserved tasks" ,
"type" : "object"
} ,
"scheduled" : {
"description" : "Celery app.control.inspect scheduled tasks" ,
"type" : "object"
}
} ,
"type" : "object"
}
}
} ,
"summary" : "View status of provisioner Celery queue" ,
"tags" : [
"provisioner"
]
}
} ,
2019-12-23 20:45:30 -05:00
"/api/v1/provisioner/status/{task_id}" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"properties" : {
"current" : {
"description" : "Current steps completed" ,
"type" : "integer"
} ,
"state" : {
"description" : "Current job state" ,
"type" : "string"
} ,
"status" : {
"description" : "Status details about job" ,
"type" : "string"
} ,
"total" : {
"description" : "Total number of steps" ,
"type" : "integer"
}
} ,
"type" : "object"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
2020-01-04 14:21:03 -05:00
"summary" : "View status of a provisioner Celery worker job {task_id}" ,
2019-12-23 20:45:30 -05:00
"tags" : [
"provisioner"
]
}
} ,
"/api/v1/provisioner/template" : {
"get" : {
"description" : "" ,
"parameters" : [
{
"description" : "A template name search limit; fuzzy by default, use ^/$ to force exact matches" ,
"in" : "query" ,
"name" : "limit" ,
"required" : false ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/all-templates"
}
}
} ,
"summary" : "Return a list of all templates" ,
"tags" : [
"provisioner / template"
]
}
} ,
"/api/v1/provisioner/template/network" : {
"get" : {
"description" : "" ,
"parameters" : [
{
"description" : "A template 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/network-template"
} ,
"type" : "list"
}
}
} ,
"summary" : "Return a list of network templates" ,
"tags" : [
"provisioner / template"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "Template name" ,
"in" : "query" ,
"name" : "name" ,
"required" : true ,
"type" : "string"
} ,
{
"description" : "MAC address template" ,
"in" : "query" ,
"name" : "mac_template" ,
"required" : false ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create a new network template" ,
"tags" : [
"provisioner / template"
]
}
} ,
"/api/v1/provisioner/template/network/{template}" : {
"delete" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Remove network template {template}" ,
"tags" : [
"provisioner / template"
]
} ,
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/network-template"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return information about network template {template}" ,
"tags" : [
"provisioner / template"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "MAC address template" ,
"in" : "query" ,
"name" : "mac_template" ,
"required" : false ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create a new network template {template}" ,
"tags" : [
"provisioner / template"
]
}
} ,
"/api/v1/provisioner/template/network/{template}/net" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"items" : {
"$ref" : "#/definitions/network-template-net"
} ,
"type" : "list"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return a list of networks in network template {template}" ,
"tags" : [
"provisioner / template"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "PVC network VNI" ,
"in" : "query" ,
"name" : "vni" ,
"required" : false ,
"type" : "integer"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create a new network in network template {template}" ,
"tags" : [
"provisioner / template"
]
}
} ,
"/api/v1/provisioner/template/network/{template}/net/{vni}" : {
"delete" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Remove network {vni} from network template {template}" ,
"tags" : [
"provisioner / template"
]
} ,
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/network-template-net"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return information about network {vni} in network template {template}" ,
"tags" : [
"provisioner / template"
]
} ,
"post" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create a new network {vni} in network template {template}" ,
"tags" : [
"provisioner / template"
]
}
} ,
"/api/v1/provisioner/template/storage" : {
"get" : {
"description" : "" ,
"parameters" : [
{
"description" : "A template 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/storage-template"
} ,
"type" : "list"
}
}
} ,
"summary" : "Return a list of storage templates" ,
"tags" : [
"provisioner / template"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "Template name" ,
"in" : "query" ,
"name" : "name" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create a new storage template" ,
"tags" : [
"provisioner / template"
]
}
} ,
"/api/v1/provisioner/template/storage/{template}" : {
"delete" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Remove storage template {template}" ,
"tags" : [
"provisioner / template"
]
} ,
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/storage-template"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return information about storage template {template}" ,
"tags" : [
"provisioner / template"
]
} ,
"post" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create a new storage template {template}" ,
"tags" : [
"provisioner / template"
]
}
} ,
"/api/v1/provisioner/template/storage/{template}/disk" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"items" : {
"$ref" : "#/definitions/storage-template-disk"
} ,
"type" : "list"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return a list of disks in network template {template}" ,
"tags" : [
"provisioner / template"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "Disk identifier in \"sdX\"/\"vdX\" format (e.g. \"sda\", \"vdb\", etc.)" ,
"in" : "query" ,
"name" : "disk_id" ,
"required" : true ,
"type" : "string"
} ,
{
"description" : "ceph storage pool for disk" ,
"in" : "query" ,
"name" : "pool" ,
"required" : true ,
"type" : "string"
} ,
{
2020-01-05 17:25:34 -05:00
"description" : "Source storage volume; not compatible with other options" ,
"in" : "query" ,
"name" : "source_volume" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Disk size in GB; not compatible with source_volume" ,
2019-12-23 20:45:30 -05:00
"in" : "query" ,
"name" : "disk_size" ,
2020-01-05 17:25:34 -05:00
"required" : false ,
2019-12-23 20:45:30 -05:00
"type" : "integer"
} ,
{
2020-01-05 17:25:34 -05:00
"description" : "Filesystem for disk; not compatible with source_volume" ,
2019-12-23 20:45:30 -05:00
"in" : "query" ,
"name" : "filesystem" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Filesystem mkfs argument in \"-X=foo\" format; may be specified multiple times to add multiple arguments" ,
"in" : "query" ,
"name" : "filesystem_arg" ,
"required" : false ,
"type" : "string"
} ,
{
2020-01-05 17:25:34 -05:00
"description" : "In-VM mountpoint for disk; not compatible with source_volume" ,
2019-12-23 20:45:30 -05:00
"in" : "query" ,
"name" : "mountpoint" ,
"required" : false ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create a new disk in storage template {template}" ,
"tags" : [
"provisioner / template"
]
}
} ,
"/api/v1/provisioner/template/storage/{template}/disk/{disk_id}" : {
"delete" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Remove disk {disk_id} from storage template {template}" ,
"tags" : [
"provisioner / template"
]
} ,
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/storage-template-disk"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return information about disk {disk_id} in storage template {template}" ,
"tags" : [
"provisioner / template"
]
} ,
"post" : {
"description" : "Alternative to \"POST /provisioner/template/storage/<template>/disk?disk_id=<disk_id>\"" ,
"parameters" : [
{
"description" : "ceph storage pool for disk" ,
"in" : "query" ,
"name" : "pool" ,
"required" : true ,
"type" : "string"
} ,
{
2020-01-05 17:25:34 -05:00
"description" : "Source storage volume; not compatible with other options" ,
"in" : "query" ,
"name" : "source_volume" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Disk size in GB; not compatible with source_volume" ,
2019-12-23 20:45:30 -05:00
"in" : "query" ,
"name" : "disk_size" ,
2020-01-05 17:25:34 -05:00
"required" : false ,
2019-12-23 20:45:30 -05:00
"type" : "integer"
} ,
{
2020-01-05 17:25:34 -05:00
"description" : "Filesystem for disk; not compatible with source_volume" ,
2019-12-23 20:45:30 -05:00
"in" : "query" ,
"name" : "filesystem" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Filesystem mkfs argument in \"-X=foo\" format; may be specified multiple times to add multiple arguments" ,
"in" : "query" ,
"name" : "filesystem_arg" ,
"required" : false ,
"type" : "string"
} ,
{
2020-01-05 17:25:34 -05:00
"description" : "In-VM mountpoint for disk; not compatible with source_volume" ,
2019-12-23 20:45:30 -05:00
"in" : "query" ,
"name" : "mountpoint" ,
"required" : false ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create a new disk {disk_id} in storage template {template}" ,
"tags" : [
"provisioner / template"
]
}
} ,
"/api/v1/provisioner/template/system" : {
"get" : {
"description" : "" ,
"parameters" : [
{
"description" : "A template 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/system-template"
} ,
"type" : "list"
}
}
} ,
"summary" : "Return a list of system templates" ,
"tags" : [
"provisioner / template"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "Template name" ,
"in" : "query" ,
"name" : "name" ,
"required" : true ,
"type" : "string"
} ,
{
"description" : "vCPU count for VM" ,
"in" : "query" ,
"name" : "vcpus" ,
"required" : true ,
"type" : "integer"
} ,
{
"description" : "vRAM size in MB for VM" ,
"in" : "query" ,
"name" : "vram" ,
"required" : true ,
"type" : "integer"
} ,
{
"description" : "Whether to enable serial console for VM" ,
"in" : "query" ,
"name" : "serial" ,
"required" : true ,
"type" : "boolean"
} ,
{
"description" : "Whether to enable VNC console for VM" ,
"in" : "query" ,
"name" : "vnc" ,
"required" : true ,
"type" : "boolean"
} ,
{
"description" : "VNC bind address when VNC console is enabled" ,
"in" : "query" ,
"name" : "vnc_bind" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "CSV list of node(s) to limit VM assignment to" ,
"in" : "query" ,
"name" : "node_limit" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Selector to use for VM node assignment on migration/move" ,
"in" : "query" ,
"name" : "node_selector" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Whether to start VM with node ready state (one-time)" ,
"in" : "query" ,
"name" : "node_autostart" ,
"required" : false ,
"type" : "boolean"
2020-12-01 04:45:01 -05:00
} ,
{
"description" : "The preferred migration method (live, shutdown, none)" ,
"in" : "query" ,
"name" : "migration_method" ,
"required" : false ,
"type" : "string"
2019-12-23 20:45:30 -05:00
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create a new system template" ,
"tags" : [
"provisioner / template"
]
}
} ,
"/api/v1/provisioner/template/system/{template}" : {
"delete" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Remove system template {template}" ,
"tags" : [
"provisioner / template"
]
} ,
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/system-template"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return information about system template {template}" ,
"tags" : [
"provisioner / template"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "vCPU count for VM" ,
"in" : "query" ,
"name" : "vcpus" ,
"required" : true ,
"type" : "integer"
} ,
{
"description" : "vRAM size in MB for VM" ,
"in" : "query" ,
"name" : "vram" ,
"required" : true ,
"type" : "integer"
} ,
{
"description" : "Whether to enable serial console for VM" ,
"in" : "query" ,
"name" : "serial" ,
"required" : true ,
"type" : "boolean"
} ,
{
"description" : "Whether to enable VNC console for VM" ,
"in" : "query" ,
"name" : "vnc" ,
"required" : true ,
"type" : "boolean"
} ,
{
"description" : "VNC bind address when VNC console is enabled" ,
"in" : "query" ,
"name" : "vnc_bind" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "CSV list of node(s) to limit VM assignment to" ,
"in" : "query" ,
"name" : "node_limit" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Selector to use for VM node assignment on migration/move" ,
"in" : "query" ,
"name" : "node_selector" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Whether to start VM with node ready state (one-time)" ,
"in" : "query" ,
"name" : "node_autostart" ,
"required" : false ,
"type" : "boolean"
2020-12-01 04:45:01 -05:00
} ,
{
"description" : "The preferred migration method (live, shutdown, none)" ,
"in" : "query" ,
"name" : "migration_method" ,
"required" : false ,
"type" : "string"
2019-12-23 20:45:30 -05:00
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create a new system template {template}" ,
"tags" : [
"provisioner / template"
]
2020-02-18 16:18:27 -05:00
} ,
"put" : {
"description" : "" ,
"parameters" : [
{
"description" : "vCPU count for VM" ,
"in" : "query" ,
"name" : "vcpus" ,
"type" : "integer"
} ,
{
"description" : "vRAM size in MB for VM" ,
"in" : "query" ,
"name" : "vram" ,
"type" : "integer"
} ,
{
"description" : "Whether to enable serial console for VM" ,
"in" : "query" ,
"name" : "serial" ,
"type" : "boolean"
} ,
{
"description" : "Whether to enable VNC console for VM" ,
"in" : "query" ,
"name" : "vnc" ,
"type" : "boolean"
} ,
{
"description" : "VNC bind address when VNC console is enabled" ,
"in" : "query" ,
"name" : "vnc_bind" ,
"type" : "string"
} ,
{
"description" : "CSV list of node(s) to limit VM assignment to" ,
"in" : "query" ,
"name" : "node_limit" ,
"type" : "string"
} ,
{
"description" : "Selector to use for VM node assignment on migration/move" ,
"in" : "query" ,
"name" : "node_selector" ,
"type" : "string"
} ,
{
"description" : "Whether to start VM with node ready state (one-time)" ,
"in" : "query" ,
"name" : "node_autostart" ,
"type" : "boolean"
2020-12-01 04:45:01 -05:00
} ,
{
"description" : "The preferred migration method (live, shutdown, none)" ,
"in" : "query" ,
"name" : "migration_method" ,
"type" : "string"
2020-02-18 16:18:27 -05:00
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Modify an existing system template {template}" ,
"tags" : [
"provisioner / template"
]
2019-12-23 20:45:30 -05:00
}
} ,
2019-12-30 15:01:28 -05:00
"/api/v1/provisioner/userdata" : {
2019-12-23 20:45:30 -05:00
"get" : {
"description" : "" ,
"parameters" : [
{
2019-12-30 15:01:28 -05:00
"description" : "A userdata name search limit; fuzzy by default, use ^/$ to force exact matches" ,
2019-12-23 20:45:30 -05:00
"in" : "query" ,
"name" : "limit" ,
"required" : false ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"items" : {
2019-12-30 15:01:28 -05:00
"$ref" : "#/definitions/userdata"
2019-12-23 20:45:30 -05:00
} ,
"type" : "list"
}
}
} ,
2019-12-30 15:01:28 -05:00
"summary" : "Return a list of userdata documents" ,
2019-12-23 20:45:30 -05:00
"tags" : [
2019-12-30 15:01:28 -05:00
"provisioner"
2019-12-23 20:45:30 -05:00
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
2019-12-30 15:01:28 -05:00
"description" : "Userdata name" ,
2019-12-23 20:45:30 -05:00
"in" : "query" ,
"name" : "name" ,
"required" : true ,
"type" : "string"
} ,
{
"description" : "Raw userdata configuration document" ,
"in" : "query" ,
"name" : "data" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
2019-12-30 15:01:28 -05:00
"summary" : "Create a new userdata document" ,
2019-12-23 20:45:30 -05:00
"tags" : [
2019-12-30 15:01:28 -05:00
"provisioner"
2019-12-23 20:45:30 -05:00
]
}
} ,
2019-12-30 15:01:28 -05:00
"/api/v1/provisioner/userdata/{userdata}" : {
2019-12-23 20:45:30 -05:00
"delete" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
2019-12-30 15:01:28 -05:00
"summary" : "Remove userdata document {userdata}" ,
2019-12-23 20:45:30 -05:00
"tags" : [
2019-12-30 15:01:28 -05:00
"provisioner"
2019-12-23 20:45:30 -05:00
]
} ,
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
2019-12-30 15:01:28 -05:00
"$ref" : "#/definitions/userdata"
2019-12-23 20:45:30 -05:00
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
2019-12-30 15:01:28 -05:00
"summary" : "Return information about userdata document {userdata}" ,
2019-12-23 20:45:30 -05:00
"tags" : [
2019-12-30 15:01:28 -05:00
"provisioner"
2019-12-23 20:45:30 -05:00
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "Raw userdata configuration document" ,
"in" : "query" ,
"name" : "data" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
2019-12-30 15:01:28 -05:00
"summary" : "Create a new userdata document {userdata}" ,
2019-12-23 20:45:30 -05:00
"tags" : [
2019-12-30 15:01:28 -05:00
"provisioner"
2019-12-23 20:45:30 -05:00
]
} ,
"put" : {
"description" : "" ,
"parameters" : [
{
"description" : "Raw userdata configuration document" ,
"in" : "query" ,
"name" : "data" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
2019-12-30 15:01:28 -05:00
"summary" : "Update userdata document {userdata}" ,
2019-12-23 20:45:30 -05:00
"tags" : [
2019-12-30 15:01:28 -05:00
"provisioner"
2019-12-23 20:45:30 -05:00
]
}
} ,
2020-12-01 04:45:01 -05:00
"/api/v1/restore" : {
"post" : {
"description" : "" ,
"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"
} ,
{
"description" : "The raw JSON cluster backup data" ,
"in" : "query" ,
"name" : "cluster_data" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"500" : {
"description" : "Restore error or code failure" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Restore a backup over the cluster; destroys the existing data" ,
"tags" : [
"root"
]
}
} ,
2021-06-21 17:12:14 -04:00
"/api/v1/sriov/pf" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/sriov_pf"
}
}
} ,
"summary" : "Return a list of SR-IOV PFs on a given node" ,
"tags" : [
"network / sriov"
]
}
} ,
"/api/v1/sriov/pf/{node}" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/sriov_pf"
}
}
} ,
"summary" : "Return a list of SR-IOV PFs on node {node}" ,
"tags" : [
"network / sriov"
]
}
} ,
"/api/v1/sriov/vf" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/sriov_vf"
}
}
} ,
"summary" : "Return a list of SR-IOV VFs on a given node, optionally limited to those in the specified PF" ,
"tags" : [
"network / sriov"
]
}
} ,
"/api/v1/sriov/vf/{node}" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/sriov_vf"
}
}
} ,
"summary" : "Return a list of SR-IOV VFs on node {node}, optionally limited to those in the specified PF" ,
"tags" : [
"network / sriov"
]
}
} ,
"/api/v1/sriov/vf/{node}/{vf}" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/sriov_vf"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return information about {vf} on {node}" ,
"tags" : [
"network / sriov"
]
2021-06-22 03:47:27 -04:00
} ,
"put" : {
"description" : "" ,
"parameters" : [
{
"description" : "The vLAN ID for vLAN tagging (0 is disabled)" ,
"in" : "query" ,
"name" : "vlan_id" ,
"required" : false ,
"type" : "integer"
} ,
{
"description" : "The vLAN QOS priority (0 is disabled)" ,
"in" : "query" ,
"name" : "vlan_qos" ,
"required" : false ,
"type" : "integer"
} ,
{
"description" : "The minimum TX rate (0 is disabled)" ,
"in" : "query" ,
"name" : "tx_rate_min" ,
"required" : false ,
"type" : "integer"
} ,
{
"description" : "The maximum TX rate (0 is disabled)" ,
"in" : "query" ,
"name" : "tx_rate_max" ,
"required" : false ,
"type" : "integer"
} ,
{
"description" : "The administrative link state" ,
"enum" : [
"auto" ,
"enable" ,
"disable"
] ,
"in" : "query" ,
"name" : "link_state" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Enable or disable spoof checking" ,
"in" : "query" ,
"name" : "spoof_check" ,
"required" : false ,
"type" : "boolean"
} ,
{
"description" : "Enable or disable VF user trust" ,
"in" : "query" ,
"name" : "trust" ,
"required" : false ,
"type" : "boolean"
} ,
{
"description" : "Enable or disable query RSS support" ,
"in" : "query" ,
"name" : "query_rss" ,
"required" : false ,
"type" : "boolean"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Set the configuration of {vf} on {node}" ,
"tags" : [
"network / sriov"
]
2021-06-21 17:12:14 -04:00
}
} ,
2019-12-29 20:54:20 -05:00
"/api/v1/status" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/ClusterStatus"
}
} ,
"400" : {
"description" : "Bad request"
}
} ,
"summary" : "Return the current PVC cluster status" ,
"tags" : [
"root"
]
2020-01-09 10:53:27 -05:00
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "The cluster maintenance state" ,
"in" : "query" ,
"name" : "state" ,
"required" : true ,
"type" : "boolean"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Set the cluster maintenance mode" ,
"tags" : [
"node"
]
2019-12-29 20:54:20 -05:00
}
} ,
2020-08-25 12:43:16 -04:00
"/api/v1/storage/ceph/benchmark" : {
"get" : {
"description" : "" ,
"parameters" : [
{
"description" : "A single job name to limit results to" ,
"in" : "query" ,
"name" : "job" ,
"required" : false ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/storagebenchmark"
}
}
} ,
"summary" : "List results from benchmark jobs" ,
"tags" : [
"storage / ceph"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "The PVC storage pool to benchmark" ,
"in" : "query" ,
"name" : "pool" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"description" : "The Celery job ID of the benchmark (unused elsewhere)" ,
"type" : "string"
}
}
} ,
"summary" : "Execute a storage benchmark against a storage pool" ,
"tags" : [
"storage / ceph"
]
}
} ,
2019-12-23 20:45:30 -05:00
"/api/v1/storage/ceph/option" : {
"post" : {
"description" : "" ,
"parameters" : [
{
"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" : {
2020-01-06 12:54:18 -05:00
"get" : {
"description" : "" ,
"parameters" : [
{
"description" : "A OSD ID 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/osd"
} ,
"type" : "array"
}
}
} ,
"summary" : "Return a list of Ceph OSDs in the cluster" ,
"tags" : [
"storage / ceph"
]
} ,
2019-12-23 20:45:30 -05:00
"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"
2021-09-23 13:59:49 -04:00
} ,
{
"description" : "Whether to use an external OSD DB LV device" ,
"in" : "query" ,
"name" : "ext_db" ,
"required" : false ,
"type" : "boolean"
2021-09-23 23:31:58 -04:00
} ,
{
"description" : "Decimal ratio of total OSD size for the external OSD DB LV device, default 0.05 (5%)" ,
"in" : "query" ,
"name" : "ext_db_ratio" ,
"required" : false ,
"type" : "float"
2019-12-23 20:45:30 -05:00
}
] ,
"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"
]
2020-01-06 12:54:18 -05:00
} ,
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/osd"
}
}
} ,
"summary" : "Return information about Ceph OSD {osdid}" ,
"tags" : [
"storage / ceph"
]
}
} ,
"/api/v1/storage/ceph/osd/{osdid}/state" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"properties" : {
"state" : {
"description" : "The current OSD state" ,
"type" : "string"
}
} ,
"type" : "object"
}
}
} ,
"summary" : "Return the current state of OSD {osdid}" ,
"tags" : [
"storage / ceph"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "Set the OSD to this state" ,
"in" : "query" ,
"name" : "state" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Set the current state of OSD {osdid}" ,
"tags" : [
"storage / ceph"
]
2019-12-23 20:45:30 -05:00
}
} ,
2021-09-23 13:59:49 -04:00
"/api/v1/storage/ceph/osddb" : {
"post" : {
"description" : "Note: This task may take up to 30s to complete and return" ,
"parameters" : [
{
"description" : "The PVC node to create the OSD DB volume group 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 DB volume group on" ,
"in" : "query" ,
"name" : "device" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Add a Ceph OSD database volume group to the cluster" ,
"tags" : [
"storage / ceph"
]
}
} ,
2019-12-23 20:45:30 -05:00
"/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" ,
"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"
}
}
} ,
"summary" : "Create a new Ceph snapshot" ,
"tags" : [
"storage / ceph"
]
}
} ,
"/api/v1/storage/ceph/snapshot/{pool}/{volume}/{snapshot}" : {
"delete" : {
"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}" ,
"tags" : [
"storage / ceph"
]
}
} ,
"/api/v1/storage/ceph/volume/{pool}/{volume}/clone" : {
"post" : {
"description" : "" ,
"parameters" : [
{
"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"
]
}
} ,
2020-02-09 13:43:48 -05:00
"/api/v1/storage/ceph/volume/{pool}/{volume}/upload" : {
"post" : {
2020-02-09 21:08:27 -05:00
"description" : "<br/>The body must be a form body containing a file that is the binary contents of the image." ,
2020-02-09 13:43:48 -05:00
"parameters" : [
{
2020-02-09 19:43:07 -05:00
"description" : "The type of source image file" ,
"enum" : [
"raw" ,
"vmdk" ,
"qcow2" ,
"qed" ,
"vdi" ,
"vpc"
] ,
2020-02-09 13:43:48 -05:00
"in" : "query" ,
2020-02-09 19:43:07 -05:00
"name" : "image_format" ,
"required" : true ,
"type" : "string"
2020-02-09 13:43:48 -05:00
}
] ,
"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" : "Upload a disk image to Ceph volume {volume} in pool {pool}" ,
"tags" : [
"storage / ceph"
]
}
} ,
2019-12-23 20:45:30 -05:00
"/api/v1/vm" : {
"get" : {
"description" : "" ,
"parameters" : [
{
2021-07-14 00:51:48 -04:00
"description" : "A search limit in the name, tags, or an exact UUID; fuzzy by default, use ^/$ to force exact matches" ,
2019-12-23 20:45:30 -05:00
"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"
2021-07-14 00:51:48 -04:00
} ,
{
"description" : "Limit list to VMs with this tag" ,
"in" : "query" ,
"name" : "tag" ,
"required" : false ,
"type" : "string"
2019-12-23 20:45:30 -05:00
}
] ,
"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" ,
"enum" : [
"mem" ,
2019-12-26 18:42:56 -05:00
"vcpus" ,
2019-12-23 20:45:30 -05:00
"load" ,
"vms"
] ,
"in" : "query" ,
"name" : "selector" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Whether to autostart the VM when its node returns to ready domain state" ,
"in" : "query" ,
"name" : "autostart" ,
"required" : false ,
"type" : "boolean"
2020-12-01 04:45:01 -05:00
} ,
{
"default" : "none" ,
"description" : "The preferred migration method (live, shutdown, none)" ,
"enum" : [
"live" ,
"shutdown" ,
"none"
] ,
"in" : "query" ,
"name" : "migration_method" ,
"required" : false ,
"type" : "string"
2021-07-13 02:17:30 -04:00
} ,
{
2021-07-14 00:51:48 -04:00
"description" : "The user tag(s) of the VM" ,
"in" : "query" ,
"items" : {
"type" : "string"
} ,
"name" : "user_tags" ,
"required" : false ,
"type" : "array"
} ,
{
"description" : "The protected user tag(s) of the VM" ,
2021-07-13 02:17:30 -04:00
"in" : "query" ,
"items" : {
"type" : "string"
} ,
2021-07-14 00:51:48 -04:00
"name" : "protected_tags" ,
2021-07-13 02:17:30 -04:00
"required" : false ,
"type" : "array"
2019-12-23 20:45:30 -05:00
}
] ,
"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" ,
"enum" : [
"mem" ,
2019-12-29 20:54:20 -05:00
"vcpus" ,
2019-12-23 20:45:30 -05:00
"load" ,
2021-06-21 17:12:14 -04:00
"vms" ,
"none (cluster default)"
2019-12-23 20:45:30 -05:00
] ,
"in" : "query" ,
"name" : "selector" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Whether to autostart the VM when its node returns to ready domain state" ,
"in" : "query" ,
"name" : "autostart" ,
"required" : false ,
"type" : "boolean"
2020-12-01 04:45:01 -05:00
} ,
{
"default" : "none" ,
"description" : "The preferred migration method (live, shutdown, none)" ,
"enum" : [
"live" ,
"shutdown" ,
"none"
] ,
"in" : "query" ,
"name" : "migration_method" ,
"required" : false ,
"type" : "string"
2021-07-13 02:17:30 -04:00
} ,
{
2021-07-14 00:51:48 -04:00
"description" : "The user tag(s) of the VM" ,
2021-07-13 02:17:30 -04:00
"in" : "query" ,
"items" : {
"type" : "string"
} ,
2021-07-14 00:51:48 -04:00
"name" : "user_tags" ,
"required" : false ,
"type" : "array"
} ,
{
"description" : "The protected user tag(s) of the VM" ,
"in" : "query" ,
"items" : {
"type" : "string"
} ,
"name" : "protected_tags" ,
2021-07-13 02:17:30 -04:00
"required" : false ,
"type" : "array"
2019-12-23 20:45:30 -05:00
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Create new {vm}" ,
"tags" : [
"vm"
]
} ,
"put" : {
"description" : "" ,
"parameters" : [
{
"description" : "The raw Libvirt XML definition of the VM" ,
"in" : "query" ,
"name" : "xml" ,
"required" : true ,
"type" : "string"
} ,
{
"description" : "Whether to automatically restart the VM to apply the new configuration" ,
"in" : "query" ,
"name" : "restart" ,
"type" : "boolean"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Update the Libvirt XML of {vm}" ,
"tags" : [
"vm"
]
}
} ,
2019-12-26 18:42:56 -05:00
"/api/v1/vm/{vm}/console" : {
"get" : {
"description" : "" ,
"parameters" : [
{
"description" : "The number of lines to retrieve" ,
"in" : "query" ,
"name" : "lines" ,
"required" : false ,
"type" : "integer"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/VMLog"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return the recent console log of {vm}" ,
"tags" : [
"vm"
]
}
} ,
2021-09-23 13:59:49 -04:00
"/api/v1/vm/{vm}/device" : {
"delete" : {
"description" : "" ,
"parameters" : [
{
"description" : "The raw Libvirt XML definition of the device to detach" ,
"in" : "query" ,
"name" : "xml" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Hot-detach device XML to {vm}" ,
"tags" : [
"vm"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "The raw Libvirt XML definition of the device to attach" ,
"in" : "query" ,
"name" : "xml" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Hot-attach device XML to {vm}" ,
"tags" : [
"vm"
]
}
} ,
2019-12-23 20:45:30 -05:00
"/api/v1/vm/{vm}/locks" : {
"post" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Flush disk locks of {vm}" ,
"tags" : [
"vm"
]
}
} ,
"/api/v1/vm/{vm}/meta" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/VMMetadata"
}
} ,
"404" : {
2021-07-13 02:17:30 -04:00
"description" : "VM not found" ,
2019-12-23 20:45:30 -05:00
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return the metadata of {vm}" ,
"tags" : [
"vm"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"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" ,
"enum" : [
"mem" ,
2019-12-29 20:54:20 -05:00
"vcpus" ,
2019-12-23 20:45:30 -05:00
"load" ,
"vms"
] ,
"in" : "query" ,
"name" : "selector" ,
"required" : false ,
"type" : "string"
} ,
{
"description" : "Whether to autostart the VM when its node returns to ready domain state" ,
"in" : "query" ,
"name" : "autostart" ,
"required" : false ,
"type" : "boolean"
2020-02-02 01:34:55 -05:00
} ,
{
"description" : "The PVC provisioner profile for the VM" ,
"in" : "query" ,
"name" : "profile" ,
"required" : false ,
"type" : "string"
2020-12-01 04:45:01 -05:00
} ,
{
"default" : "none" ,
"description" : "The preferred migration method (live, shutdown, none)" ,
"enum" : [
"live" ,
"shutdown" ,
"none"
] ,
"in" : "query" ,
"name" : "migration_method" ,
"required" : false ,
"type" : "string"
2019-12-23 20:45:30 -05:00
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
2021-07-13 02:17:30 -04:00
} ,
"404" : {
"description" : "VM not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
2019-12-23 20:45:30 -05:00
}
} ,
"summary" : "Set the metadata of {vm}" ,
"tags" : [
"vm"
]
}
} ,
"/api/v1/vm/{vm}/node" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/VMNode"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return the node information of {vm}" ,
"tags" : [
"vm"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "The action to take to change nodes" ,
"enum" : [
"migrate" ,
"unmigrate" ,
"move"
] ,
"in" : "query" ,
"name" : "action" ,
"required" : true ,
"type" : "string"
} ,
{
"description" : "The node the VM should be assigned to; autoselect if empty or invalid" ,
"in" : "query" ,
"name" : "node" ,
"type" : "string"
} ,
{
"description" : "Whether to force an already-migrated VM to a new node" ,
"in" : "query" ,
"name" : "force" ,
"type" : "boolean"
2020-02-19 09:51:19 -05:00
} ,
{
"description" : "Whether to block waiting for the migration to complete" ,
"in" : "query" ,
"name" : "wait" ,
"type" : "boolean"
2020-06-07 02:15:33 -04:00
} ,
{
"description" : "Whether to enforce live migration and disable shutdown-based fallback migration" ,
"in" : "query" ,
"name" : "force_live" ,
"type" : "boolean"
2019-12-23 20:45:30 -05:00
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Set the node of {vm}" ,
"tags" : [
"vm"
]
}
} ,
2021-05-23 16:41:42 -04:00
"/api/v1/vm/{vm}/rename" : {
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "The new name of the VM" ,
"in" : "query" ,
"name" : "new_name" ,
"required" : true ,
"type" : "string"
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Rename VM {vm}, and all connected disk volumes which include this name, to {new_name}" ,
"tags" : [
"vm"
]
}
} ,
2019-12-23 20:45:30 -05:00
"/api/v1/vm/{vm}/state" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/VMState"
}
} ,
"404" : {
"description" : "Not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return the state information of {vm}" ,
"tags" : [
"vm"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
"description" : "The new state of the VM" ,
"enum" : [
"start" ,
"shutdown" ,
"stop" ,
"restart" ,
"disable"
] ,
"in" : "query" ,
"name" : "state" ,
"required" : true ,
"type" : "string"
2020-02-19 09:51:19 -05:00
} ,
{
"description" : "Whether to block waiting for the state change to complete" ,
"in" : "query" ,
"name" : "wait" ,
"type" : "boolean"
2019-12-23 20:45:30 -05:00
}
] ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
} ,
"400" : {
"description" : "Bad request" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Set the state of {vm}" ,
"tags" : [
"vm"
]
}
2021-07-13 02:17:30 -04:00
} ,
"/api/v1/vm/{vm}/tags" : {
"get" : {
"description" : "" ,
"responses" : {
"200" : {
"description" : "OK" ,
"schema" : {
"$ref" : "#/definitions/VMTags"
}
} ,
"404" : {
"description" : "VM not found" ,
"schema" : {
"$ref" : "#/definitions/Message"
}
}
} ,
"summary" : "Return the tags of {vm}" ,
"tags" : [
"vm"
]
} ,
"post" : {
"description" : "" ,
"parameters" : [
{
2021-07-14 00:51:48 -04:00
"description" : "The action to perform with the tag" ,
2021-07-13 02:17:30 -04:00
"enum" : [
"add" ,
2021-07-14 00:51:48 -04:00
"remove"
2021-07-13 02:17:30 -04:00
] ,
"in" : "query" ,
"name" : "action" ,
"required" : true ,
"type" : "string"
} ,
{
2021-07-14 00:51:48 -04:00
"description" : "The text value of the tag" ,
2021-07-13 02:17:30 -04:00
"in" : "query" ,
2021-07-14 00:51:48 -04:00
"name" : "tag" ,
2021-07-13 02:17:30 -04:00
"required" : true ,
2021-07-14 00:51:48 -04:00
"type" : "string"
} ,
{
"default" : false ,
"description" : "Set the protected state of the tag" ,
"in" : "query" ,
"name" : "protected" ,
"required" : false ,
"type" : "boolean"
2021-07-13 02:17:30 -04:00
}
] ,
"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" : "Set the tags of {vm}" ,
"tags" : [
"vm"
]
}
2019-12-23 20:45:30 -05:00
}
} ,
"swagger" : "2.0"
}