Rest API documentation
Cluster
Get the list of clusters currently setup in PMK
X | string |
projectId | string | UUID of the project the cluster belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/clusters' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK
array | array[object] | ||
name | string | Name of the cluster | |
uuid | string | UUID of the cluster | |
created | string | Creation time of the cluster | |
projectId | string | UUID of the Keystone project that this cluster is part of | |
isKubernetes | integer | Field is set to 1 if the cluster is a Kubernetes cluster, 0 otherwise | |
kubeRoleVersion | string | The version of the pf9-kube role | |
etcdVersion | string | The version of etcd used for cluster | |
isAirgapped | integer | Field is set to 1 if the cluster is air-gapped, 0 otherwise | |
useHostname | boolean | (optioanl) If set to true nodes will be registered in the cluster using hostname instead of IP address. This option is only applicable to IPv4 hosts. This option is ignored when deploying clusters on IPv6 enabled hosts and public clouds - AWS, Azure, etc. | |
allowWorkloadsOnMaster | integer | Field is set to 1 if the master nodes can run non-critical workloads | |
containerRuntime | string | (optional) Container runtime for this cluster. Valid values: [docker, containerd] | |
containersCidr | string | CIDR used for container IP addresses | |
servicesCidr | string | CIDR used for service IP addresses | |
externalDnsName | string | Optional DNS name for API endpoint. This field is autogenerated when pf9 domain is used. | |
privileged | integer | Field is set to 1 if cluster runs privileged containers, 0 otherwise | |
runtimeConfig | string | ||
kubeProxyMode | string | The mode of kube proxy | |
apiserverStorageBackend | string | The storage backend of the api server | |
k8sApiPort | string | Port on which K8S API Server will listen, 443 by default | |
masterIp | string | Ip of the master node, applicable only for cloud provider type 'openstack' | |
masterVipIpv4 | string | API server Virtual IP that provides failover if specified for the cluster. Defaults to empty string | |
masterVipIface | string | The interface that VIP attaches to if specified. Defaults to empty string | |
masterVipVrouterId | string | Virtual router id choosen for the cluster. Range: 0-254. Emptry string if masterVipIpv4 not specified | |
networkPlugin | string | Network backend to use for container networking. Defaults to flannel. Supported choices are flannel, calico, noop, weave | |
addonOperatorImageTag | string | (optional) addon operator image tag for this cluster. | |
dockerRoot | string | Root directory for docker | |
etcdDataDir | string | Data directory for etcd. The field is applicable to master nodes only | |
certExpiryHrs | integer | (optional) Number of hours before user certificates in kubeconfig expires, should be greater than 0 if set. Default is 24hrs. | |
keystoneEnabled | integer | Field is set to 1 if keystone is enabled, 0 otherwise | |
authzEnabled | integer | Field is set to 1 if authz is enabled, 0 otherwise | |
appCatalogEnabled | integer | DEPRECATED. Field doesn't lead to any action on the cluster now. Field is set to 1 if app catalog is enabled, 0 otherwise | |
enableProfileAgent | boolean | (optional) If set to true platform9 profile engine agent will be deployed on the cluster. This agent is required to be able to use profiles. | |
enableEtcdEncryption | string | States whether tls encryption is enabled on etcd, Default:false | |
etcdBackup | object | ||
isEtcdBackupEnabled | boolean | Set to true if etcd backup should be enabled, false otherwise | |
intervalInMins | integer | etcd backup interval, specified in minutes | |
intervalInHours | integer | etcd backup interval, specified in Hours | |
dailyBackupTime | string | etcd backup Timestamp for daily backup, specified in format 'HH:MM' | |
maxIntervalBackupCount | integer | max number of Backups retention for interval type backups | |
maxTimestampBackupCount | integer | max number of Backups retention for Timestamp type backups | |
storageType | string | Storage type for the etcd backup. Only 'local' is current supported type. 'local' saves backup to the node's local disk | |
storageProperties | object | ||
localPath | string | Path on the local filesystem where the etcd backup should be stored. For 'local' storage type only. | |
taskStatus | string | Status indicating whether the backup cron job on the Kubernetes cluster was successfully setup. Can be 'success' or 'error' | |
taskErrorDetail | string | Details of the error occurred of the taskStatus returned is 'error' | |
ipv6 | boolean | Set to 1 if ipv6 enabled. Defaults to 0 | |
enableMetallb | boolean | 1 if metallb enabled. Defaults to 0 | |
metallbCidr | string | Comma separated pools of IPs like A.B.C.D-E.F.G.H, I.J.K.L-M.N.O.P that metallb will manage if specified | |
base64EncMetallbConfig | string | Base64 encoded string of metallb custom resource yaml | |
nodePoolUuid | string | UUID of the node pool used for the cluster | |
nodePoolName | string | Name of the node pool used for the cluster | |
cloudProviderUuid | string | UUID of the cloud provider used to create this cluster | |
cloudProviderName | string | Name of the cloud provider used to create this cluster | |
cloudProviderType | string | Type of the cloud provider used to create this cluster | |
cloudProperties | object | ||
region | string | Cloud provider region in which the cluster was created | |
masterFlavor | string | Node flavor used for master node | |
workerFlavor | string | Node flavor used for worker node | |
sshKey | string | Public SSH key associated with the cluster nodes | |
serviceFqdn | string | FQDN used to reference cluster services | |
ami | string | AMI ID used to provision cluster nodes | |
domainId | string | Domain used for cluster FQDNs | |
isPrivate | boolean | Set to true if nodes are deployed using public subnet, false otherwise, applicable also for manual deploy. This parameter is required if internalElb is set to true. | |
usePf9Domain | string | Set to true if platform9.net domain is used, false otherwise | |
internalElb | boolean | Set to true if load balancer is an internal load balancer or false for an Internet-facing load balancer. More information here: https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-internal-load-balancers.html Setting this parameter to true requires that isPrivate is set to true. If the private subnet selected is not configured to route IP packets through a VPN, then an httpProxy is required for node communications to work | |
azs | array[string] | Availability zone(s) the cluster is deployed in | |
httpProxy | string | The http proxy used for node communications. This parameter is required when internalElb is set to true and the private subnet selected does not route IP packets to the internet through a VPN | |
privateSubnets | array[string] | The private subnet ID to which the cluster is deployed. This parameter is optional if vpc (VPC ID) is set. This parameter is required if vpc (VPC ID) is set and isPrivate is set to true. This parameter is ignored if vpc (VPC ID) is not set | |
subnets | array[string] | ||
vpc | string | If set, creates cluster using this VPC ID. Otherwise, the cluster is deployed on a new VPC. This parameter is required if internalElb is set to true | |
customAmi | string | The custom ami name which can be specified by a user | |
tags | object | User defined key-value pairs represented as a JSON object | |
mtuSize | string | MTU for container network interfaces. Optional and used for the Calico network backend | |
cpuManagerPolicy | string | options: none, static; default: none | |
topologyManagerPolicy | string | options: none, best-effort, restricted, single-numa-node; default: none | |
reservedCPUs | string | list of CPUs to be reserved for the system. Ex: 1-3,5 | |
numMasters | integer | Number of master nodes in the cluster | |
numWorkers | integer | Number of worker nodes in the cluster | |
status | string | Status of the cluster | |
masterStatus | string | Status of the master nodes. 'healthy' means all masters are healthy. 'partially healthy' means quorum number of masters are healthy, but some are not. 'unhealthy' means quorum number of master are unhealthy | |
workerStatus | string | Status of the worker nodes. 'healthy' means all workers are healthy. 'partially healthy' means more than 50% of the workers are healthy, rest are unhealthy. 'unhealthy' means more than 50% of the workers are unhealthy | |
lastOp | string | The last operation such as node attach or node detach that was performed on the cluster | |
lastOk | string | The timestamp when the cluster last reported an OK status | |
taskStatus | string | Status of the last task that run on the cluster. | |
taskError | string | Error details if the last task on cluster did not succeed | |
debug | string | enable debug | |
masterless | integer | 1 if masterless cluster, 0 otherwise | |
upgradingTo | string | The version that the cluster is upgrading to | |
canUpgrade | boolean | Field is set to true if the cluster can be upgraded, false otherwise | |
canMinorUpgrade | integer | Field is set to 1 if the cluster can be upgraded to a minor version, 0 otherwise | |
canPatchUpgrade | integer | Field is set to 1 if the cluster can be upgraded to a patch version, 0 otherwise | |
minorUpgradeRoleVersion | string | The minor version of the pf9-kube role that can be upgraded | |
patchUpgradeRoleVersion | string | The patch version of the pf9-kube role that can be upgraded | |
flannelIfaceLabel | string | The interface used by flannel for interhost communication | |
flannelPublicIfaceLabel | string | The IP address used as the flannel public IP for the nodes in the cluster | |
calicoIPv4 | string | Calico IPv4 mode | |
calicoIPv4DetectionMethod | string | Calico IPv4 detection method | |
calicoV4BlockSize | string | Subnet size per node for the Calico network, in CIDR notation (e.g. 26) | |
calicoIPv6 | string | Calico IPv6 mode | |
calicoIPv6DetectionMethod | string | Calico IPv6 detection method | |
calicoIPv6PoolCidr | string | Calico IPv6 pool CIDR | |
calicoIPv6PoolBlockSize | string | Calico IPv6 pool block size | |
calicoIPv6PoolNatOutgoing | integer | Calico IPv6 pool NAT outgoing | |
calicoRouterID | string | Calico router ID | |
calicoIpIpMode | string | IP-IP encapsulation mode for Calico network. Choose: Always, Never, CrossSubnet | |
calicoNatOutgoing | boolean | Field is set to true if Calico nodes need to NAT north-south egress traffic. | |
calicoNodeCpuLimit | string | Corresponds to the CALICO_NODE_CPU_LIMIT environment variable in Calico. | |
calicoNodeMemoryLimit | string | Corresponds to the CALICO_NODE_MEMORY_LIMIT environment variable in Calico. | |
calicoTyphaCpuLimit | string | Corresponds to the CALICO_TYPHA_CPU_LIMIT environment variable in Calico. | |
calicoTyphaMemoryLimit | string | Corresponds to the CALICO_TYPHA_MEMORY_LIMIT environment variable in Calico. | |
calicoControllerCpuLimit | string | Corresponds to the CALICO_CONTROLLER_CPU_LIMIT environment variable in Calico. | |
calicoControllerMemoryLimit | string | Corresponds to the CALICO_CONTROLLER_MEMORY_LIMIT environment variable in Calico. | |
felixIPv6Support | integer | Field is set to true if Felix supports IPv6 | |
dockerCentosPackageRepoUrl | string | (optional) URL of the centos repo to be used for docker installation | |
dockerUbuntuPackageRepoUrl | string | (optional) URL of the ubuntu repo to be used for docker installation | |
dockerPrivateRegistry | string | (optional) URL of private Docker registry to fetch Platform9 images from | |
quayPrivateRegistry | string | (optional) URL of private Quay registry to fetch Platform9 images from | |
gcrPrivateRegistry | string | (optional) URL of private GCR registry to fetch Platform9 images from | |
k8sPrivateRegistry | string | (optional) URL of private K8S registry to fetch Platform9 images from | |
customRegistryUrl | string | URL for a custom registry that is expected to serve all images for the cluster | |
customRegistryRepoPath | string | path in custom registry where all images are cached | |
customRegistryUsername | string | username for the custom registry | |
customRegistryPassword | string | password for the custom registry | |
customRegistrySkipTls | boolean | configure containerd to skip tls verification for custom registry | |
customRegistrySelfSignedCerts | boolean | Set to true if the custom registry uses self signed certs | |
customRegistryCertPath | string | Path to the cert file for the custom registry if using self signed certs. Can be of the following formats: [https://example.com/path/to/cert, http://example.com/path/to/cert, file:///path/to/cert, /path/to/cert] |
unauthorized to perform this operation
xxxxxxxxxx
[
{...}
]
Creates a cluster using auto deploy or manual mode
X | string |
projectId | string | UUID of the project the cluster belongs to |
object | object | ||
allowWorkloadsOnMaster | integer | Field is set to 1 if the master nodes can run non-critical workloads | |
apiServerFlags | array[string] | List of kube-apiserver flags. (e.g. --request-timeout=2m0s, --kubelet-timeout=20s) | |
ami | string | AMI ID used to provision cluster nodes | |
appCatalogEnabled | integer | DEPRECATED. Always disabled now. Field is set to 1 if app catalog is enabled, 0 otherwise, applicable also for manual deploy | |
azs | array[string] | Availability zone(s) the cluster is deployed in | |
calicoV4BlockSize | string | Subnet size per node for the Calico network, in CIDR notation (e.g. 26) | |
calicoIpIpMode | string | IP-IP encapsulation mode for Calico network. Choose: Always, Never, CrossSubnet | |
calicoNatOutgoing | boolean | Field is set to true if Calico nodes need to NAT north-south egress traffic. | |
calicoNodeCpuLimit | string | Corresponds to the CALICO_NODE_CPU_LIMIT environment variable in Calico. | |
calicoNodeMemoryLimit | string | Corresponds to the CALICO_NODE_MEMORY_LIMIT environment variable in Calico. | |
calicoTyphaCpuLimit | string | Corresponds to the CALICO_TYPHA_CPU_LIMIT environment variable in Calico. | |
calicoTyphaMemoryLimit | string | Corresponds to the CALICO_TYPHA_MEMORY_LIMIT environment variable in Calico. | |
calicoControllerCpuLimit | string | Corresponds to the CALICO_CONTROLLER_CPU_LIMIT environment variable in Calico. | |
calicoControllerMemoryLimit | string | Corresponds to the CALICO_CONTROLLER_MEMORY_LIMIT environment variable in Calico. | |
containersCidr | string | CIDR used for container IP addresses, applicable also for manual deploy | |
controllerManagerFlags | array[string] | List of kube-controller-manager flags. (e.g. --large-cluster-size-threshold=60, --node-monitor-period =5s) | |
dockerLiveRestoreEnabled | boolean | Enables the use of Docker live restore as described here: https://docs.docker.com/config/containers/live-restore/ | |
domainId | string | Domain used for cluster FQDNs | |
enableMetallb | boolean | If true, install MetalLB to support the loadbalancer service-type | |
enableCAS | boolean | If true, cluster autoscaling is enabled (only for AWS clusters). | |
etcdBackup | object | Etcd backup configuration | |
isEtcdBackupEnabled | boolean | Set to true if etcd backup should be enabled, false otherwise | |
intervalInMins | integer | etcd backup interval, specified in minutes. intervalInMins and intervalInHours are mutually exclusive | |
intervalInHours | integer | etcd backup interval, specified in Hours. intervalInMins and intervalInHours are mutually exclusive | |
dailyBackupTime | string | etcd backup Timestamp for daily backup, specified in format 'HH:MM' | |
maxIntervalBackupCount | integer | max number of Backups retention for interval type backups, required if intervalInMins or intervalInHours is provided | |
maxTimestampBackupCount | integer | max number of Backups retention for Timestamp type backups, required if dailyBackupTime is provided | |
storageType | string | Storage type for the etcd backup. Only 'local' is current supported type. 'local' saves backup to the node's local disk | |
storageProperties | object | ||
localPath | string | Path on the local filesystem where the etcd backup should be stored. For 'local' storage type only. | |
externalDnsName | string | Optional DNS name for API endpoint. This field is autogenerated when usePf9Domain is set, also applicable for manual deploy | |
httpProxy | string | The http proxy used for node communications. This parameter is required when internalElb is set to true and the private subnet selected does not route IP packets to the internet through a VPN | |
internalElb | boolean | Set to true if load balancer is an internal load balancer or false for an Internet-facing load balancer. More information here: https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-internal-load-balancers.html. Setting this parameter to true requires that isPrivate is set to true. If the private subnet selected is not configured to route IP packets through a VPN, then an httpProxy is required for node communications to work | |
isPrivate | boolean | Set to true if nodes are deployed using public subnet, false otherwise, applicable also for manual deploy. This parameter is required if internalElb is set to true. | |
k8sApiPort | string | Port on which K8S API Server will listen, 443 by default | |
masterFlavor | string | Node flavor used for master node | |
masterVipIpv4 | string | API server Virtual IP that provides failover. When specified, deploy keepalived setup to cluster master nodes together | |
masterVipIface | string | If masterVipIpv4 is specified, this field is required. Specify the interface that the VIP attaches to | |
metallbCidr | string | If enableMetallb is true, specify the comma-separated pools of IPs that MetalLB will manage (for example: A.B.C.D-E.F.G.H, I.J.K.L-M.N.O.P) | |
base64EncMetallbConfig | string | Base64 encoded string of metallb custom resource yaml | |
mtuSize | string | MTU for container network interfaces. Optional and used for the Calico network backend | |
name | string | Name of the cluster, applicable also for manual deploy | |
networkPlugin | string | Network backend to use for container networking. Defaults to flannel. Supported choices are flannel, calico, noop, weave | |
nodePoolUuid | string | UUID of the node pool used for the cluster, applicable also for manual deploy | |
numMasters | integer | Number of master nodes in the cluster | |
numWorkers | integer | Number of worker nodes in the cluster | |
numMinWorkers | integer | This parameter is required if enableCAS is set to true. This is the minimum number of worker nodes in ASG | |
numMaxWorkers | integer | This parameter is required if enableCAS is set to true. This is the maximum number of worker nodes in ASG | |
ebsVolumeThroughput | integer | (optional) throughput for default gp3 root volume | |
ebsVolumeIops | integer | (optional) iops for default gp3 root volume | |
additionalAWSDiskSize | integer | Size for block device added for EMP clusters | |
privateSubnets | array[string] | The private subnet ID to which the cluster is deployed. This parameter is optional if vpc (VPC ID) is set. This parameter is required if vpc (VPC ID) is set and isPrivate is set to true. This parameter is ignored if vpc (VPC ID) is not set | |
privileged | boolean | Field is set to 1 if cluster runs privileged containers, 0 otherwise | |
region | string | Cloud provider region in which the cluster was created | |
runtimeConfig | string | Applicable also for manual deploy | |
schedulerFlags | array[string] | List of kube-scheduler flags. (e.g. --kube-api-burst=120, --log-flush-frequency=5s) | |
serviceFqdn | string | FQDN used to reference cluster services | |
servicesCidr | string | CIDR used for service IP addresses, applicable also for manual deploy | |
sshKey | string | Public SSH key associated with the cluster nodes | |
subnets | array[string] | ||
tags | object | User defined key-value pairs represented as a JSON object | |
usePf9Domain | boolean | Set to true if platform9.net domain is used, false otherwise | |
vpc | string | If set, creates cluster using this VPC ID. Otherwise, the cluster is deployed on a new VPC. This parameter is required if internalElb is set to true | |
workerFlavor | string | Node flavor used for worker node | |
kubeRoleVersion | string | Pf9-kube role version to be used when bringing up the cluster. | |
cpuManagerPolicy | string | options: none, static; default: none | |
topologyManagerPolicy | string | options: none, best-effort, restricted, single-numa-node; default: none | |
reservedCPUs | string | list of CPUs to be reserved for the system. Ex: 1-3,5 | |
dockerPrivateRegistry | string | (optional) URL of private Docker registry to fetch Platform9 images from | |
quayPrivateRegistry | string | (optional) URL of private Quay registry to fetch Platform9 images from | |
gcrPrivateRegistry | string | (optional) URL of private GCR registry to fetch Platform9 images from | |
k8sPrivateRegistry | string | (optional) URL of private K8S registry to fetch Platform9 images from | |
useHostname | boolean | (optional) If set to true nodes will be registered in the cluster using hostname instead of IP address. This option is only applicable to IPv4 hosts. This option is ignored when deploying clusters on IPv6 enabled hosts and public clouds - AWS, Azure, etc. | |
enableProfileAgent | boolean | (optional) If set to true platform9 profile engine agent will be deployed on the cluster. This agent is required to be able to use profiles. | |
enableCatapultMonitoring | boolean | (optional) If set to true (default value) platform9 Catapult monitoring will be deployed on the cluster | |
dockerCentosPackageRepoUrl | string | (optional) URL of the centos repo to be used for docker installation, this URL is added as a first mirror optiopn | |
dockerUbuntuPackageRepoUrl | string | (optional) URL of the ubuntu repo to be used for docker installation, this URL is added as a first mirror option | |
containerRuntime | string | (optional) Container runtime for this cluster. Valid values: [docker, containerd] | |
certExpiryHrs | integer | (optional) Number of hours before user certificates in kubeconfig expires, should be greater than 0 if set. Default is 24hrs. | |
interfaceDetectionMethod | string | (optional) Host Network interface detection method for cluster. Options:[FirstFound/InterfaceName/InterfaceReachableIP] Default: FirstFound | |
interfaceReachableIP | string | Select interface on host that can reach the given IP (Required when interfaceDetectionMethod=InterfaceReachableIP) | |
interfaceName | string | Select interface on host for given Interfacename (Required when interfaceDetectionMethod=InterfaceName) | |
customRegistryUrl | string | URL for a custom registry that is expected to serve all images for the cluster | |
customRegistryRepoPath | string | path in custom registry where all images are cached | |
customRegistryUsername | string | username for the custom registry | |
customRegistryPassword | string | password for the custom registry | |
customRegistrySkipTls | boolean | configure containerd to skip tls verification for custom registry | |
customRegistrySelfSignedCerts | boolean | Set to true if the custom registry uses self signed certs | |
customRegistryCertPath | string | Path to the cert file for the custom registry if using self signed certs. Can be of the following formats: [https://example.com/path/to/cert, http://example.com/path/to/cert, file:///path/to/cert, /path/to/cert] | |
deployLuigiOperator | boolean | Set to true if Luigi is deployed | |
deployKubevirt | boolean | Set to true if Kubevirt is deployed | |
etcdHeartbeatIntervalMs | integer | Frequency with which master node will notify workers | |
etcdElectionTimeoutMs | integer | This timeout is how long a worker node will go without hearing a heartbeat,before attempting to become master | |
monitoring | object | Prometheus monitoring addon settings | |
retentionTime | string | Retention time of the metrics. | |
addonVersions | object | ||
coredns | string | coredns version | |
dashboard | string | dashboard version | |
dns | string | dns-autoscaler version | |
kubevirt | string | kubevirt version | |
luigi | string | luigi version | |
metal3 | string | metal3 version | |
metallb | string | metallb version | |
metricsserver | string | metricsserver version | |
monitoring | string | monitoring version | |
profileagent | string | profileagent version | |
cluster | string | cluster-autoscaler-aws version | |
cluster | string | cluster-autoscaler-azure version |
xxxxxxxxxx
curl --request POST \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/clusters' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data '{
"allowWorkloadsOnMaster": "{integer}",
"apiServerFlags": [
"{array[string]...}"
],
"ami": "{string}",
"appCatalogEnabled": "{integer}",
"azs": [
"{array[string]...}"
],
"calicoV4BlockSize": "{string}",
"calicoIpIpMode": "{string}",
"calicoNatOutgoing": "{boolean}",
"calicoNodeCpuLimit": "{string}",
"calicoNodeMemoryLimit": "{string}",
"calicoTyphaCpuLimit": "{string}",
"calicoTyphaMemoryLimit": "{string}",
"calicoControllerCpuLimit": "{string}",
"calicoControllerMemoryLimit": "{string}",
"containersCidr": "{string}",
"controllerManagerFlags": [
"{array[string]...}"
],
"dockerLiveRestoreEnabled": "{boolean}",
"domainId": "{string}",
"enableMetallb": "{boolean}",
"enableCAS": "{boolean}",
"etcdBackup": {
"isEtcdBackupEnabled": "{boolean}",
"intervalInMins": "{integer}",
"intervalInHours": "{integer}",
"dailyBackupTime": "{string}",
"maxIntervalBackupCount": "{integer}",
"maxTimestampBackupCount": "{integer}",
"storageType": "{string}",
"storageProperties": {
"localPath": "{string}"
}
},
"externalDnsName": "{string}",
"httpProxy": "{string}",
"internalElb": "{boolean}",
"isPrivate": "{boolean}",
"k8sApiPort": "{string}",
"masterFlavor": "{string}",
"masterVipIpv4": "{string}",
"masterVipIface": "{string}",
"metallbCidr": "{string}",
"base64EncMetallbConfig": "{string}",
"mtuSize": "{string}",
"name": "{string}",
"networkPlugin": "{string}",
"nodePoolUuid": "{string}",
"numMasters": "{integer}",
"numWorkers": "{integer}",
"numMinWorkers": "{integer}",
"numMaxWorkers": "{integer}",
"ebsVolumeThroughput": "{integer}",
"ebsVolumeIops": "{integer}",
"additionalAWSDiskSize": "{integer}",
"privateSubnets": [
"{array[string]...}"
],
"privileged": "{boolean}",
"region": "{string}",
"runtimeConfig": "{string}",
"schedulerFlags": [
"{array[string]...}"
],
"serviceFqdn": "{string}",
"servicesCidr": "{string}",
"sshKey": "{string}",
"subnets": [
"{array[string]...}"
],
"tags": {},
"usePf9Domain": "{boolean}",
"vpc": "{string}",
"workerFlavor": "{string}",
"kubeRoleVersion": "{string}",
"cpuManagerPolicy": "{string}",
"topologyManagerPolicy": "{string}",
"reservedCPUs": "{string}",
"dockerPrivateRegistry": "{string}",
"quayPrivateRegistry": "{string}",
"gcrPrivateRegistry": "{string}",
"k8sPrivateRegistry": "{string}",
"useHostname": "{boolean}",
"enableProfileAgent": "{boolean}",
"enableCatapultMonitoring": "{boolean}",
"dockerCentosPackageRepoUrl": "{string}",
"dockerUbuntuPackageRepoUrl": "{string}",
"containerRuntime": "{string}",
"certExpiryHrs": "{integer}",
"interfaceDetectionMethod": "{string}",
"interfaceReachableIP": "{string}",
"interfaceName": "{string}",
"customRegistryUrl": "{string}",
"customRegistryRepoPath": "{string}",
"customRegistryUsername": "{string}",
"customRegistryPassword": "{string}",
"customRegistrySkipTls": "{boolean}",
"customRegistrySelfSignedCerts": "{boolean}",
"customRegistryCertPath": "{string}",
"deployLuigiOperator": "{boolean}",
"deployKubevirt": "{boolean}",
"etcdHeartbeatIntervalMs": "{integer}",
"etcdElectionTimeoutMs": "{integer}",
"monitoring": {
"retentionTime": "{string}"
},
"addonVersions": {
"coredns": "{string}",
"dashboard": "{string}",
"dns-autoscaler": "{string}",
"kubevirt": "{string}",
"luigi": "{string}",
"metal3": "{string}",
"metallb": "{string}",
"metricsserver": "{string}",
"monitoring": "{string}",
"profileagent": "{string}",
"cluster-autoscaler-aws": "{string}",
"cluster-autoscaler-azure": "{string}"
}
}'
OK, if cluster create request was submitted successfully
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Upgrade a cluster, identified by the uuid
X | string |
uuid | string | UUID of the cluster | |
projectId | string | UUID of the project the cloud provider account belongs to |
type | string | Type of upgrade minor or patch | |
force | boolean | (optional)Forcefully upgrade cluster to version. Default is false. |
object | object | ||
allowWorkloadsOnMaster | integer | Field is set to 1 if the master nodes can run non-critical workloads | |
apiServerFlags | array[string] | List of kube-apiserver flags. (e.g. --request-timeout=2m0s, --kubelet-timeout=20s) | |
batchUpgradePercent | number | Number between 1-100 which represents the percent of worker nodes to upgrade in parallel at once during an upgrade | |
batchUpgradeNodes | array[string] | List of worker nodes uuids to upgrade in parallel at once during an upgrade | |
calicoControllerCpuLimit | string | Corresponds to the CALICO_CONTROLLER_CPU_LIMIT environment variable in Calico. | |
calicoControllerMemoryLimit | string | Corresponds to the CALICO_CONTROLLER_MEMORY_LIMIT environment variable in Calico. | |
calicoIPv4DetectionMethod | string | IPV4 detection method for calico. Options: FirstFound, InterfaceName, InterfaceReachableIP | |
calicoNodeCpuLimit | string | Corresponds to the CALICO_NODE_CPU_LIMIT environment variable in Calico. | |
calicoNodeMemoryLimit | string | Corresponds to the CALICO_NODE_MEMORY_LIMIT environment variable in Calico. | |
calicoTyphaCpuLimit | string | Corresponds to the CALICO_TYPHA_CPU_LIMIT environment variable in Calico. | |
calicoTyphaMemoryLimit | string | Corresponds to the CALICO_TYPHA_MEMORY_LIMIT environment variable in Calico. | |
controllerManagerFlags | array[string] | List of kube-controller-manager flags. (e.g. --large-cluster-size-threshold=60, --node-monitor-period =5s) | |
containerRuntime | string | (optional) Container runtime for this cluster. Valid values: [docker, containerd] | |
customRegistryUrl | string | URL for a custom registry that is expected to serve all images for the cluster | |
customRegistryRepoPath | string | path in custom registry where all images are cached | |
customRegistryUsername | string | username for the custom registry | |
customRegistryPassword | string | password for the custom registry | |
customRegistrySkipTls | boolean | configure containerd to skip tls verification for custom registry | |
customRegistrySelfSignedCerts | boolean | Set to true if the custom registry uses self signed certs | |
customRegistryCertPath | string | Path to the cert file for the custom registry if using self signed certs. Can be of the following formats: [https://example.com/path/to/cert, http://example.com/path/to/cert, file:///path/to/cert, /path/to/cert] | |
privileged | boolean | Field is set to 1 if cluster runs privileged containers, 0 otherwise | |
schedulerFlags | array[string] | List of kube-scheduler flags. (e.g. --kube-api-burst=120, --log-flush-frequency=5s) | |
addonVersions | object | ||
coredns | string | coredns version | |
dashboard | string | dashboard version | |
dns | string | dns-autoscaler version | |
kubevirt | string | kubevirt version | |
luigi | string | luigi version | |
metal3 | string | metal3 version | |
metallb | string | metallb version | |
metricsserver | string | metricsserver version | |
monitoring | string | monitoring version | |
profileagent | string | profileagent version | |
cluster | string | cluster-autoscaler-aws version | |
cluster | string | cluster-autoscaler-azure version |
xxxxxxxxxx
curl --request POST \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/clusters/%7Buuid%7D/upgrade' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data type={type} \
--data force={force} \
--data '{
"allowWorkloadsOnMaster": "{integer}",
"apiServerFlags": [
"{array[string]...}"
],
"batchUpgradePercent": "{number}",
"batchUpgradeNodes": [
"{array[string]...}"
],
"calicoControllerCpuLimit": "{string}",
"calicoControllerMemoryLimit": "{string}",
"calicoIPv4DetectionMethod": "{string}",
"calicoNodeCpuLimit": "{string}",
"calicoNodeMemoryLimit": "{string}",
"calicoTyphaCpuLimit": "{string}",
"calicoTyphaMemoryLimit": "{string}",
"controllerManagerFlags": [
"{array[string]...}"
],
"containerRuntime": "{string}",
"customRegistryUrl": "{string}",
"customRegistryRepoPath": "{string}",
"customRegistryUsername": "{string}",
"customRegistryPassword": "{string}",
"customRegistrySkipTls": "{boolean}",
"customRegistrySelfSignedCerts": "{boolean}",
"customRegistryCertPath": "{string}",
"privileged": "{boolean}",
"schedulerFlags": [
"{array[string]...}"
],
"addonVersions": {
"coredns": "{string}",
"dashboard": "{string}",
"dns-autoscaler": "{string}",
"kubevirt": "{string}",
"luigi": "{string}",
"metal3": "{string}",
"metallb": "{string}",
"metricsserver": "{string}",
"monitoring": "{string}",
"profileagent": "{string}",
"cluster-autoscaler-aws": "{string}",
"cluster-autoscaler-azure": "{string}"
}
}'
OK, if upgrade request is successfully issued
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Delete all cluster addons for a PMK cluster as specified by the cluster UUID
X | string |
clusterId | string | UUID of the cluster | |
projectId | string | UUID of the project the cluster belongs to |
xxxxxxxxxx
curl --request DELETE \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/clusters/%7BclusterId%7D/addons' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK, if clusteraddons delete request was submitted successfully
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Provides a list of addon version for pf9-kube role on a cluster.
X | string |
clusterId | string | UUID of the cluster | |
projectId | string | UUID of the project the cluster belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/clusters/%7BclusterId%7D/addonversions' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK, List of addon versions.
object | object | ||
metricsserver | string | metricsserver version used for the cluster | |
metallb | string | metallb version used for the cluster if applicable | |
dashboard | string | ks8 dashboard version used for the cluster if applicable | |
cni | string | cni version used for the cluster | |
luigi | string | luigi version used for the cluster if applicable | |
kustomize | string | kustomize version used for the cluster | |
calico | string | calico version used for the cluster if applicable | |
kubevirtaddon | string | kubevirtaddon version used for the cluster if applicable | |
monitoring | string | monitoring version used for the cluster if applicable | |
kubernetes | string | kubernetes version used for the cluster | |
coredns | string | coredns version used for the cluster | |
cascapi | string | cascapi version used for the cluster if applicable | |
flannel | string | flannel version used for the cluster if applicable | |
profileagent | string | profileagent version used for the cluster if applicable | |
metal3 | string | metal3 version used for the cluster if applicable | |
casazure | string | casazure version used for the cluster if applicable | |
etcd | string | etcd version used for the cluster |
xxxxxxxxxx
{
"metricsserver": "{string}",
"metallb": "{string}",
"dashboard": "{string}",
"cni": "{string}",
"luigi": "{string}",
"kustomize": "{string}",
"calico": "{string}",
"kubevirtaddon": "{string}",
"monitoring": "{string}",
"kubernetes": "{string}",
"coredns": "{string}",
"cascapi": "{string}",
"flannel": "{string}",
"profileagent": "{string}",
"metal3": "{string}",
"casazure": "{string}",
"etcd": "{string}"
}
Provides a list of supported pf9-kube roles for a cluster.
X | string |
projectId | string | UUID of the project the cluster belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/clusters/supportedRoleVersions' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK, List of supported roles versions.
object | object | ||
count | integer | Number of supported role versions | |
roles | array[object] | List of supported role versions | |
uuid | string | UUID of the role | |
k8sMajorVersion | integer | major version of k8s for roleversion | |
k8sMinorVersion | integer | minor version of k8s for roleversion | |
k8sPatchVersion | integer | patch version of k8s for roleversion | |
pf9PatchVersion | integer | patch version of pf9 for roleversion | |
roleVersion | string | full version of the role | |
addonsDetails | string | addons details containing names with their versions | |
metadata | string | metadata for the roleversion | |
supported | string | shows the role is supported |
xxxxxxxxxx
{
"count": "{integer}",
"roles": [
{
"uuid": "{string}",
"k8sMajorVersion": "{integer}",
"k8sMinorVersion": "{integer}",
"k8sPatchVersion": "{integer}",
"pf9PatchVersion": "{integer}",
"roleVersion": "{string}",
"addonsDetails": "{string}",
"metadata": "{string}",
"supported": "{string}"
}
]
}
Get details of a cluster
X | string |
uuid | string | UUID of the cluster | |
projectId | string | UUID of the project the cluster belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/clusters/%7Buuid%7D' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK
object | object | ||
name | string | Name of the cluster | |
uuid | string | UUID of the cluster | |
created | string | Creation time of the cluster | |
projectId | string | UUID of the Keystone project that this cluster is part of | |
isKubernetes | integer | Field is set to 1 if the cluster is a Kubernetes cluster, 0 otherwise | |
kubeRoleVersion | string | The version of the pf9-kube role | |
etcdVersion | string | The version of etcd used for cluster | |
isAirgapped | integer | Field is set to 1 if the cluster is air-gapped, 0 otherwise | |
useHostname | boolean | (optioanl) If set to true nodes will be registered in the cluster using hostname instead of IP address. This option is only applicable to IPv4 hosts. This option is ignored when deploying clusters on IPv6 enabled hosts and public clouds - AWS, Azure, etc. | |
allowWorkloadsOnMaster | integer | Field is set to 1 if the master nodes can run non-critical workloads | |
containerRuntime | string | (optional) Container runtime for this cluster. Valid values: [docker, containerd] | |
containersCidr | string | CIDR used for container IP addresses | |
servicesCidr | string | CIDR used for service IP addresses | |
externalDnsName | string | Optional DNS name for API endpoint. This field is autogenerated when pf9 domain is used. | |
privileged | integer | Field is set to 1 if cluster runs privileged containers, 0 otherwise | |
runtimeConfig | string | ||
kubeProxyMode | string | The mode of kube proxy | |
apiserverStorageBackend | string | The storage backend of the api server | |
k8sApiPort | string | Port on which K8S API Server will listen, 443 by default | |
masterIp | string | Ip of the master node, applicable only for cloud provider type 'openstack' | |
masterVipIpv4 | string | API server Virtual IP that provides failover if specified for the cluster. Defaults to empty string | |
masterVipIface | string | The interface that VIP attaches to if specified. Defaults to empty string | |
masterVipVrouterId | string | Virtual router id choosen for the cluster. Range: 0-254. Emptry string if masterVipIpv4 not specified | |
networkPlugin | string | Network backend to use for container networking. Defaults to flannel. Supported choices are flannel, calico, noop, weave | |
addonOperatorImageTag | string | (optional) addon operator image tag for this cluster. | |
dockerRoot | string | Root directory for docker | |
etcdDataDir | string | Data directory for etcd. The field is applicable to master nodes only | |
certExpiryHrs | integer | (optional) Number of hours before user certificates in kubeconfig expires, should be greater than 0 if set. Default is 24hrs. | |
keystoneEnabled | integer | Field is set to 1 if keystone is enabled, 0 otherwise | |
authzEnabled | integer | Field is set to 1 if authz is enabled, 0 otherwise | |
appCatalogEnabled | integer | DEPRECATED. Field doesn't lead to any action on the cluster now. Field is set to 1 if app catalog is enabled, 0 otherwise | |
enableProfileAgent | boolean | (optional) If set to true platform9 profile engine agent will be deployed on the cluster. This agent is required to be able to use profiles. | |
enableEtcdEncryption | string | States whether tls encryption is enabled on etcd, Default:false | |
etcdBackup | object | ||
isEtcdBackupEnabled | boolean | Set to true if etcd backup should be enabled, false otherwise | |
intervalInMins | integer | etcd backup interval, specified in minutes | |
intervalInHours | integer | etcd backup interval, specified in Hours | |
dailyBackupTime | string | etcd backup Timestamp for daily backup, specified in format 'HH:MM' | |
maxIntervalBackupCount | integer | max number of Backups retention for interval type backups | |
maxTimestampBackupCount | integer | max number of Backups retention for Timestamp type backups | |
storageType | string | Storage type for the etcd backup. Only 'local' is current supported type. 'local' saves backup to the node's local disk | |
storageProperties | object | ||
localPath | string | Path on the local filesystem where the etcd backup should be stored. For 'local' storage type only. | |
taskStatus | string | Status indicating whether the backup cron job on the Kubernetes cluster was successfully setup. Can be 'success' or 'error' | |
taskErrorDetail | string | Details of the error occurred of the taskStatus returned is 'error' | |
ipv6 | boolean | Set to 1 if ipv6 enabled. Defaults to 0 | |
enableMetallb | boolean | 1 if metallb enabled. Defaults to 0 | |
metallbCidr | string | Comma separated pools of IPs like A.B.C.D-E.F.G.H, I.J.K.L-M.N.O.P that metallb will manage if specified | |
base64EncMetallbConfig | string | Base64 encoded string of metallb custom resource yaml | |
nodePoolUuid | string | UUID of the node pool used for the cluster | |
nodePoolName | string | Name of the node pool used for the cluster | |
cloudProviderUuid | string | UUID of the cloud provider used to create this cluster | |
cloudProviderName | string | Name of the cloud provider used to create this cluster | |
cloudProviderType | string | Type of the cloud provider used to create this cluster | |
cloudProperties | object | ||
region | string | Cloud provider region in which the cluster was created | |
masterFlavor | string | Node flavor used for master node | |
workerFlavor | string | Node flavor used for worker node | |
sshKey | string | Public SSH key associated with the cluster nodes | |
serviceFqdn | string | FQDN used to reference cluster services | |
ami | string | AMI ID used to provision cluster nodes | |
domainId | string | Domain used for cluster FQDNs | |
isPrivate | boolean | Set to true if nodes are deployed using public subnet, false otherwise, applicable also for manual deploy. This parameter is required if internalElb is set to true. | |
usePf9Domain | string | Set to true if platform9.net domain is used, false otherwise | |
internalElb | boolean | Set to true if load balancer is an internal load balancer or false for an Internet-facing load balancer. More information here: https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-internal-load-balancers.html Setting this parameter to true requires that isPrivate is set to true. If the private subnet selected is not configured to route IP packets through a VPN, then an httpProxy is required for node communications to work | |
azs | array[string] | Availability zone(s) the cluster is deployed in | |
httpProxy | string | The http proxy used for node communications. This parameter is required when internalElb is set to true and the private subnet selected does not route IP packets to the internet through a VPN | |
privateSubnets | array[string] | The private subnet ID to which the cluster is deployed. This parameter is optional if vpc (VPC ID) is set. This parameter is required if vpc (VPC ID) is set and isPrivate is set to true. This parameter is ignored if vpc (VPC ID) is not set | |
subnets | array[string] | ||
vpc | string | If set, creates cluster using this VPC ID. Otherwise, the cluster is deployed on a new VPC. This parameter is required if internalElb is set to true | |
customAmi | string | The custom ami name which can be specified by a user | |
tags | object | User defined key-value pairs represented as a JSON object | |
mtuSize | string | MTU for container network interfaces. Optional and used for the Calico network backend | |
cpuManagerPolicy | string | options: none, static; default: none | |
topologyManagerPolicy | string | options: none, best-effort, restricted, single-numa-node; default: none | |
reservedCPUs | string | list of CPUs to be reserved for the system. Ex: 1-3,5 | |
numMasters | integer | Number of master nodes in the cluster | |
numWorkers | integer | Number of worker nodes in the cluster | |
status | string | Status of the cluster | |
masterStatus | string | Status of the master nodes. 'healthy' means all masters are healthy. 'partially healthy' means quorum number of masters are healthy, but some are not. 'unhealthy' means quorum number of master are unhealthy | |
workerStatus | string | Status of the worker nodes. 'healthy' means all workers are healthy. 'partially healthy' means more than 50% of the workers are healthy, rest are unhealthy. 'unhealthy' means more than 50% of the workers are unhealthy | |
lastOp | string | The last operation such as node attach or node detach that was performed on the cluster | |
lastOk | string | The timestamp when the cluster last reported an OK status | |
taskStatus | string | Status of the last task that run on the cluster. | |
taskError | string | Error details if the last task on cluster did not succeed | |
debug | string | enable debug | |
masterless | integer | 1 if masterless cluster, 0 otherwise | |
upgradingTo | string | The version that the cluster is upgrading to | |
canUpgrade | boolean | Field is set to true if the cluster can be upgraded, false otherwise | |
canMinorUpgrade | integer | Field is set to 1 if the cluster can be upgraded to a minor version, 0 otherwise | |
canPatchUpgrade | integer | Field is set to 1 if the cluster can be upgraded to a patch version, 0 otherwise | |
minorUpgradeRoleVersion | string | The minor version of the pf9-kube role that can be upgraded | |
patchUpgradeRoleVersion | string | The patch version of the pf9-kube role that can be upgraded | |
flannelIfaceLabel | string | The interface used by flannel for interhost communication | |
flannelPublicIfaceLabel | string | The IP address used as the flannel public IP for the nodes in the cluster | |
calicoIPv4 | string | Calico IPv4 mode | |
calicoIPv4DetectionMethod | string | Calico IPv4 detection method | |
calicoV4BlockSize | string | Subnet size per node for the Calico network, in CIDR notation (e.g. 26) | |
calicoIPv6 | string | Calico IPv6 mode | |
calicoIPv6DetectionMethod | string | Calico IPv6 detection method | |
calicoIPv6PoolCidr | string | Calico IPv6 pool CIDR | |
calicoIPv6PoolBlockSize | string | Calico IPv6 pool block size | |
calicoIPv6PoolNatOutgoing | integer | Calico IPv6 pool NAT outgoing | |
calicoRouterID | string | Calico router ID | |
calicoIpIpMode | string | IP-IP encapsulation mode for Calico network. Choose: Always, Never, CrossSubnet | |
calicoNatOutgoing | boolean | Field is set to true if Calico nodes need to NAT north-south egress traffic. | |
calicoNodeCpuLimit | string | Corresponds to the CALICO_NODE_CPU_LIMIT environment variable in Calico. | |
calicoNodeMemoryLimit | string | Corresponds to the CALICO_NODE_MEMORY_LIMIT environment variable in Calico. | |
calicoTyphaCpuLimit | string | Corresponds to the CALICO_TYPHA_CPU_LIMIT environment variable in Calico. | |
calicoTyphaMemoryLimit | string | Corresponds to the CALICO_TYPHA_MEMORY_LIMIT environment variable in Calico. | |
calicoControllerCpuLimit | string | Corresponds to the CALICO_CONTROLLER_CPU_LIMIT environment variable in Calico. | |
calicoControllerMemoryLimit | string | Corresponds to the CALICO_CONTROLLER_MEMORY_LIMIT environment variable in Calico. | |
felixIPv6Support | integer | Field is set to true if Felix supports IPv6 | |
dockerCentosPackageRepoUrl | string | (optional) URL of the centos repo to be used for docker installation | |
dockerUbuntuPackageRepoUrl | string | (optional) URL of the ubuntu repo to be used for docker installation | |
dockerPrivateRegistry | string | (optional) URL of private Docker registry to fetch Platform9 images from | |
quayPrivateRegistry | string | (optional) URL of private Quay registry to fetch Platform9 images from | |
gcrPrivateRegistry | string | (optional) URL of private GCR registry to fetch Platform9 images from | |
k8sPrivateRegistry | string | (optional) URL of private K8S registry to fetch Platform9 images from | |
customRegistryUrl | string | URL for a custom registry that is expected to serve all images for the cluster | |
customRegistryRepoPath | string | path in custom registry where all images are cached | |
customRegistryUsername | string | username for the custom registry | |
customRegistryPassword | string | password for the custom registry | |
customRegistrySkipTls | boolean | configure containerd to skip tls verification for custom registry | |
customRegistrySelfSignedCerts | boolean | Set to true if the custom registry uses self signed certs | |
customRegistryCertPath | string | Path to the cert file for the custom registry if using self signed certs. Can be of the following formats: [https://example.com/path/to/cert, http://example.com/path/to/cert, file:///path/to/cert, /path/to/cert] |
unauthorized to perform this operation
xxxxxxxxxx
{
"name": "{string}",
"uuid": "{string}",
"created_at": "{string}",
"projectId": "{string}",
"isKubernetes": "{integer}",
"kubeRoleVersion": "{string}",
"etcdVersion": "{string}",
"isAirgapped": "{integer}",
"useHostname": "{boolean}",
"allowWorkloadsOnMaster": "{integer}",
"containerRuntime": "{string}",
"containersCidr": "{string}",
"servicesCidr": "{string}",
"externalDnsName": "{string}",
"privileged": "{integer}",
"runtimeConfig": "{string}",
"kubeProxyMode": "{string}",
"apiserverStorageBackend": "{string}",
"k8sApiPort": "{string}",
"masterIp": "{string}",
"masterVipIpv4": "{string}",
"masterVipIface": "{string}",
"masterVipVrouterId": "{string}",
"networkPlugin": "{string}",
"addonOperatorImageTag": "{string}",
"dockerRoot": "{string}",
"etcdDataDir": "{string}",
"certExpiryHrs": "{integer}",
"keystoneEnabled": "{integer}",
"authzEnabled": "{integer}",
"appCatalogEnabled": "{integer}",
"enableProfileAgent": "{boolean}",
"enableEtcdEncryption": "{string}",
"etcdBackup": {...},
"ipv6": "{boolean}",
"enableMetallb": "{boolean}",
"metallbCidr": "{string}",
"base64EncMetallbConfig": "{string}",
"nodePoolUuid": "{string}",
"nodePoolName": "{string}",
"cloudProviderUuid": "{string}",
"cloudProviderName": "{string}",
"cloudProviderType": "{string}",
"cloudProperties": {...},
"tags": {},
"mtuSize": "{string}",
"cpuManagerPolicy": "{string}",
"topologyManagerPolicy": "{string}",
"reservedCPUs": "{string}",
"numMasters": "{integer}",
"numWorkers": "{integer}",
"status": "{string}",
"masterStatus": "{string}",
"workerStatus": "{string}",
"lastOp": "{string}",
"lastOk": "{string}",
"taskStatus": "{string}",
"taskError": "{string}",
"debug": "{string}",
"masterless": "{integer}",
"upgradingTo": "{string}",
"canUpgrade": "{boolean}",
"canMinorUpgrade": "{integer}",
"canPatchUpgrade": "{integer}",
"minorUpgradeRoleVersion": "{string}",
"patchUpgradeRoleVersion": "{string}",
"flannelIfaceLabel": "{string}",
"flannelPublicIfaceLabel": "{string}",
"calicoIPv4": "{string}",
"calicoIPv4DetectionMethod": "{string}",
"calicoV4BlockSize": "{string}",
"calicoIPv6": "{string}",
"calicoIPv6DetectionMethod": "{string}",
"calicoIPv6PoolCidr": "{string}",
"calicoIPv6PoolBlockSize": "{string}",
"calicoIPv6PoolNatOutgoing": "{integer}",
"calicoRouterID": "{string}",
"calicoIpIpMode": "{string}",
"calicoNatOutgoing": "{boolean}",
"calicoNodeCpuLimit": "{string}",
"calicoNodeMemoryLimit": "{string}",
"calicoTyphaCpuLimit": "{string}",
"calicoTyphaMemoryLimit": "{string}",
"calicoControllerCpuLimit": "{string}",
"calicoControllerMemoryLimit": "{string}",
"felixIPv6Support": "{integer}",
"dockerCentosPackageRepoUrl": "{string}",
"dockerUbuntuPackageRepoUrl": "{string}",
"dockerPrivateRegistry": "{string}",
"quayPrivateRegistry": "{string}",
"gcrPrivateRegistry": "{string}",
"k8sPrivateRegistry": "{string}",
"customRegistryUrl": "{string}",
"customRegistryRepoPath": "{string}",
"customRegistryUsername": "{string}",
"customRegistryPassword": "{string}",
"customRegistrySkipTls": "{boolean}",
"customRegistrySelfSignedCerts": "{boolean}",
"customRegistryCertPath": "{string}"
}
Update the properties of a cluster specified by the cluster_uuid
X | string |
uuid | string | UUID of the cluster | |
projectId | string | UUID of the project the cluster belongs to |
object | object | ||
numWorkers | integer | Number of worker nodes in the cluster. For AWS cluster, this parameter is relevant only if cluster autoscaling is disabled | |
numMinWorkers | integer | Minimum number of worker nodes in ASG for AWS cluster. This parameter is relevant only if cluster autoscaling is enabled | |
numMaxWorkers | integer | Maximum number of worker nodes in ASG for AWS cluster. This parameter is relevant only if cluster autoscaling is enabled | |
etcdBackup | object | ||
isEtcdBackupEnabled | boolean | Set to true if etcd backup should be enabled, false otherwise | |
intervalInMins | integer | etcd backup interval, specified in minutes. intervalInMins and intervalInHours are mutually exclusive | |
intervalInHours | integer | etcd backup interval, specified in Hours. intervalInMins and intervalInHours are mutually exclusive | |
dailyBackupTime | string | etcd backup Timestamp for daily backup, specified in format 'HH:MM' | |
maxIntervalBackupCount | integer | max number of Backups retention for interval type backups, required if intervalInMins or intervalInHours is provided | |
maxTimestampBackupCount | integer | max number of Backups retention for Timestamp type backups, required if dailyBackupTime is provided | |
storageType | string | Storage type for the etcd backup. Only 'local' is current supported type. 'local' saves backup to the node's local disk | |
storageProperties | object | ||
localPath | string | Path on the local filesystem where the etcd backup should be stored. For 'local' storage type only. | |
tags | object | User defined key-value pairs represented as a JSON object | |
customAmi | string | The custom ami name which can be specified by a user | |
enableProfileAgent | boolean | (optional) If set to true platform9 profile engine agent will be deployed on the cluster. This agent is required to be able to use profiles. | |
dockerCentosPackageRepoUrl | string | (optional) URL of the centos repo to be used for docker installation | |
dockerUbuntuPackageRepoUrl | string | (optional) URL of the ubuntu repo to be used for docker installation | |
certExpiryHrs | integer | (optional) Number of hours before user certificates in kubeconfig expires, should be greater than 0 if set. Default is 24hrs. | |
ebsVolumeThroughput | integer | (optional) throughput for default gp3 root volume | |
ebsVolumeIops | integer | (optional) iops for default gp3 root volume |
xxxxxxxxxx
curl --request PUT \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/clusters/%7Buuid%7D' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data '{
"numWorkers": "{integer}",
"numMinWorkers": "{integer}",
"numMaxWorkers": "{integer}",
"etcdBackup": {
"isEtcdBackupEnabled": "{boolean}",
"intervalInMins": "{integer}",
"intervalInHours": "{integer}",
"dailyBackupTime": "{string}",
"maxIntervalBackupCount": "{integer}",
"maxTimestampBackupCount": "{integer}",
"storageType": "{string}",
"storageProperties": {
"localPath": "{string}"
}
},
"tags": {},
"customAmi": "{string}",
"enableProfileAgent": "{boolean}",
"dockerCentosPackageRepoUrl": "{string}",
"dockerUbuntuPackageRepoUrl": "{string}",
"certExpiryHrs": "{integer}",
"ebsVolumeThroughput": "{integer}",
"ebsVolumeIops": "{integer}"
}'
OK, if cluster upgrade request was submitted successfully
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Delete a cluster from PMK as specified by the cluster UUID
X | string |
uuid | string | UUID of the cluster | |
projectId | string | UUID of the project the cluster belongs to |
xxxxxxxxxx
curl --request DELETE \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/clusters/%7Buuid%7D' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK, if cluster delete request was submitted successfully
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Get nodes of a cluster
X | string |
uuid | string | UUID of the cluster | |
projectId | string | UUID of the project the cluster belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/clusters/%7Buuid%7D/nodes' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK
array | array[object] | ||
name | string | Host name of the node | |
uuid | string | UUID of the node | |
primaryIp | string | IP address of the node | |
nodePoolName | string | Name of the node pool, the node belongs to | |
nodePoolUuid | string | UUID of the node pool, the node belongs to | |
cloudProviderType | string | Type of cloud provider, such as local or aws used to create the cluster | |
cloudProviderUuid | string | UUID of the cloud provider used to create the cluster | |
cloudInstanceId | string | UUID of the cloud instance used to create the cluster | |
clusterName | string | Name of the cluster the node belongs to | |
clusterUuid | string | UUID of the cluster the node belongs to | |
projectId | string | UUID of the project the node belongs to | |
actualKubeRoleVersion | string | actual version of the kube role on the node | |
clusterKubeRoleVersion | string | Kube version of the cluster the node belongs to | |
isMaster | integer | 1 if this node is a master of a custer. 0 otherwise. | |
api | integer | 1 indicates the API server on this node is running. 0 otherwise. Applicable only if isMaster is 1 | |
status | string | Status of the node. States include “ok”, ”converging”, “failed”. These states indicate the current state of kubernetes setup on the host. | |
masterless | integer | 1 indicates the node is a masterless node. 0 otherwise | |
startKube | integer | 1 indicates kube to be installed on the node . 0 otherwise |
unauthorized to perform this operation
xxxxxxxxxx
[
{
"name": "{string}",
"uuid": "{string}",
"primaryIp": "{string}",
"nodePoolName": "{string}",
"nodePoolUuid": "{string}",
"cloudProviderType": "{string}",
"cloudProviderUuid": "{string}",
"cloudInstanceId": "{string}",
"clusterName": "{string}",
"clusterUuid": "{string}",
"projectId": "{string}",
"actualKubeRoleVersion": "{string}",
"clusterKubeRoleVersion": "{string}",
"isMaster": "{integer}",
"api_responding": "{integer}",
"status": "{string}",
"masterless": "{integer}",
"startKube": "{integer}"
}
]
Get the kubeconfig blob for the specific cluster
X | string |
cluster | string | UUID of the cluster | |
projectId | string | UUID of the project the cluster belongs to |
force | boolean | If true, generates certificate based kubeconfig. Default is false. |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/kubeconfig/%7Bcluster_uuid%7D' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data force_cert_auth={force_cert_auth}
The response is a blob sent with the Content-Type ‘application/octet-stream’
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Generate token to be used by web cli
X | string |
uuid | string | UUID of the cluster | |
projectId | string | UUID of the project the cluster belongs to |
xxxxxxxxxx
curl --request POST \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/webcli/%7Buuid%7D' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK
object | object | ||
token | string | Web cli token |
Unauthorized to perform this operation
xxxxxxxxxx
{
"token": "{string}"
}
Attach nodes to a cluster. In a manual deployed cluster, nodes can be added to a cluster using this API. If the cluster has no masters, multiple masters can be attached simultaneously.
X | string |
uuid | string | UUID of the cluster | |
projectId | string | UUID of the project the cluster belongs to |
array | array[object] | ||
uuid | string | UUID of the node | |
isMaster | boolean | true if the node should be attached as master, false otherwise. |
xxxxxxxxxx
curl --request POST \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/clusters/%7Buuid%7D/attach' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data '[
{
"uuid": "{string}",
"isMaster": "{boolean}"
}
]'
OK, if the node get attached to the cluster
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Detach nodes from a cluster. In a manual deployed cluster, nodes can be removed from a cluster using this API.
X | string |
uuid | string | UUID of the cluster | |
projectId | string | UUID of the project the cluster belongs to |
array | array[object] | ||
uuid | string | UUID of the node | |
isMaster | boolean | true if the node should be attached as master, false otherwise. |
xxxxxxxxxx
curl --request POST \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/clusters/%7Buuid%7D/detach' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data '[
{
"uuid": "{string}",
"isMaster": "{boolean}"
}
]'
OK, if the node get attached to the cluster
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Get kubelet config
X | string |
projectId | string | UUID of the project the clusters belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/kubeletconfig' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK
object | object | ||
sampleKubeletConfig | object | ||
worker | string | Base64 encoded string of the sample kubelet config for worker nodes | |
master | string | Base64 encoded string of the sample kubelet config for master nodes | |
customKubeletConfig | array[object] | ||
clusterId | string | Id of the cluster to which the config belongs | |
config | array[object] | ||
configName | string | Name of the configmap | |
configData | string | Base64 encoded string of the kubelet config | |
role | string | Role of the node for which the config is to be applied | |
nodeIps | array[string] | List of IPs of the nodes for which the config is to be applied | |
applyAll | boolean | Set to true if config is to be applied to all nodes |
unauthorized to perform this operation
xxxxxxxxxx
{
"sampleKubeletConfig": {
"worker": "{string}",
"master": "{string}"
},
"customKubeletConfig": [
{
"clusterId": "{string}",
"config": [
{
"configName": "{string}",
"configData": "{string}",
"role": "{string}",
"nodeIps": [
"{array[string]...}"
],
"applyAll": "{boolean}"
}
]
}
]
}
Update the properties of kubelet config
X | string |
projectId | string | UUID of the project the clusters belongs to |
array | array[object] | ||
clusterId | string | Id of the cluster to which the config belongs | |
config | array[object] | ||
configName | string | Name of the configmap | |
configData | string | Base64 encoded string of the kubelet config | |
role | string | Role of the node for which the config is to be applied | |
nodeIps | array[string] | List of IPs of the nodes for which the config is to be applied | |
applyAll | boolean | Set to true if config is to be applied to all nodes |
xxxxxxxxxx
curl --request PUT \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/kubeletconfig' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data '[
{
"clusterId": "{string}",
"config": [
{
"configName": "{string}",
"configData": "{string}",
"role": "{string}",
"nodeIps": [
"{array[string]...}"
],
"applyAll": "{boolean}"
}
]
}
]'
OK, if update request was submitted successfully
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Creates kubelet config for a cluster as configmap in sunpike
X | string |
projectId | string | UUID of the project the clusters belongs to |
array | array[object] | ||
clusterId | string | Id of the cluster to which the config belongs | |
config | array[object] | ||
configName | string | Name of the configmap | |
configData | string | Base64 encoded string of the kubelet config | |
role | string | Role of the node for which the config is to be applied | |
nodeIps | array[string] | List of IPs of the nodes for which the config is to be applied | |
applyAll | boolean | Set to true if config is to be applied to all nodes |
xxxxxxxxxx
curl --request POST \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/kubeletconfig' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data '[
{
"clusterId": "{string}",
"config": [
{
"configName": "{string}",
"configData": "{string}",
"role": "{string}",
"nodeIps": [
"{array[string]...}"
],
"applyAll": "{boolean}"
}
]
}
]'
OK, if create request was submitted successfully
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Delete the kubelet config configmap
X | string |
projectId | string | UUID of the project clusters belongs to |
array | array[object] | ||
clusterId | string | Id of the cluster to which the config belongs | |
config | array[string] | List of config names to be deleted |
xxxxxxxxxx
curl --request DELETE \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/kubeletconfig' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data '[
{
"clusterId": "{string}",
"config": [
"{array[string]...}"
]
}
]'
OK, if delete request was submitted successfully
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Update network backend and container cidr field post CNI migration
X | string |
projectId | string | UUID of the project the cluster belongs to | |
uuid | string | UUID of the cluster |
object | object | ||
networkPlugin | string | Network backend to use for container networking post-migration(currently only cilium migration is supported) | |
containersCidr | string | CIDR used for container IP addresses |
xxxxxxxxxx
curl --request PUT \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/clusters/%7Buuid%7D/update_cni_on_migration' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data '{
"networkPlugin": "{string}",
"containersCidr": "{string}"
}'
OK, if cluster upgrade request was submitted successfully
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Provides a list of all the external clusters available to be added to management plane
X | string |
projectId | string | UUID of the project the cluster belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/externalClusters/discover' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK, List of external clusters.
No response body |
xxxxxxxxxx
No response
Registers an external cluster
X | string |
projectId | string | UUID of the project the cluster belongs to |
object | object | ||
id | string | An unique cluster idenfier | |
provider | string | Name of the external K8S cluster provider service | |
cloudProviderID | string | UUID of a cloud provider in PF9 | |
providerDetails | object | A dynamic field to include cloud specific parameters. For example, for EKS, we need the region to be able to register a cluster |
xxxxxxxxxx
curl --request POST \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/externalClusters/register' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data '{
"id": "{string}",
"provider": "{string}",
"cloudProviderID": "{string}",
"providerDetails": {}
}'
OK, if cluster create request was submitted successfully
No response body |
Unauthorized to perform this operation
Cluster could not be founds
Cluster already registered
xxxxxxxxxx
No response
Deregister an external cluster
X | string |
projectId | string | UUID of the project the cluster belongs to |
xxxxxxxxxx
curl --request POST \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/externalClusters/:clusterID/deregister' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK, if cluster create request was submitted successfully
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Get the deployment YAML for a private external cluster
X | string |
projectId | string | UUID of the project the cluster belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/externalClusters/:clusterID/deploymentYAML' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK, if cluster create request was submitted successfully
No response body |
Unauthorized to perform this operation
Cluster or the cluster agent could not be found
xxxxxxxxxx
No response
List all the nodes in a project identified by the project UUID
X | string |
projectId | string | UUID of the project the node belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/nodes' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK
array | array[object] | ||
name | string | Host name of the node | |
uuid | string | UUID of the node | |
primaryIp | string | IP address of the node | |
nodePoolName | string | Name of the node pool, the node belongs to | |
nodePoolUuid | string | UUID of the node pool, the node belongs to | |
cloudProviderType | string | Type of cloud provider, such as local or aws used to create the cluster | |
cloudProviderUuid | string | UUID of the cloud provider used to create the cluster | |
cloudInstanceId | string | UUID of the cloud instance used to create the cluster | |
clusterName | string | Name of the cluster the node belongs to | |
clusterUuid | string | UUID of the cluster the node belongs to | |
projectId | string | UUID of the project the node belongs to | |
actualKubeRoleVersion | string | actual version of the kube role on the node | |
clusterKubeRoleVersion | string | Kube version of the cluster the node belongs to | |
isMaster | integer | 1 if this node is a master of a custer. 0 otherwise. | |
api | integer | 1 indicates the API server on this node is running. 0 otherwise. Applicable only if isMaster is 1 | |
status | string | Status of the node. States include “ok”, ”converging”, “failed”. These states indicate the current state of kubernetes setup on the host. | |
masterless | integer | 1 indicates the node is a masterless node. 0 otherwise | |
startKube | integer | 1 indicates kube to be installed on the node . 0 otherwise |
unauthorized to perform this operation
xxxxxxxxxx
[
{
"name": "{string}",
"uuid": "{string}",
"primaryIp": "{string}",
"nodePoolName": "{string}",
"nodePoolUuid": "{string}",
"cloudProviderType": "{string}",
"cloudProviderUuid": "{string}",
"cloudInstanceId": "{string}",
"clusterName": "{string}",
"clusterUuid": "{string}",
"projectId": "{string}",
"actualKubeRoleVersion": "{string}",
"clusterKubeRoleVersion": "{string}",
"isMaster": "{integer}",
"api_responding": "{integer}",
"status": "{string}",
"masterless": "{integer}",
"startKube": "{integer}"
}
]
Get details of a specific node in project, identified by the UUID
X | string |
uuid | string | UUID of the node | |
projectId | string | UUID of the project the node belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/nodes/%7Buuid%7D' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK
object | object | ||
name | string | Host name of the node | |
uuid | string | UUID of the node | |
primaryIp | string | IP address of the node | |
nodePoolName | string | Name of the node pool, the node belongs to | |
nodePoolUuid | string | UUID of the node pool, the node belongs to | |
cloudProviderType | string | Type of cloud provider, such as local or aws used to create the cluster | |
cloudProviderUuid | string | UUID of the cloud provider used to create the cluster | |
cloudInstanceId | string | UUID of the cloud instance used to create the cluster | |
clusterName | string | Name of the cluster the node belongs to | |
clusterUuid | string | UUID of the cluster the node belongs to | |
projectId | string | UUID of the project the node belongs to | |
actualKubeRoleVersion | string | actual version of the kube role on the node | |
clusterKubeRoleVersion | string | Kube version of the cluster the node belongs to | |
isMaster | integer | 1 if this node is a master of a custer. 0 otherwise. | |
api | integer | 1 indicates the API server on this node is running. 0 otherwise. Applicable only if isMaster is 1 | |
status | string | Status of the node. States include “ok”, ”converging”, “failed”. These states indicate the current state of kubernetes setup on the host. | |
masterless | integer | 1 indicates the node is a masterless node. 0 otherwise | |
startKube | integer | 1 indicates kube to be installed on the node . 0 otherwise |
unauthorized to perform this operation
xxxxxxxxxx
{
"name": "{string}",
"uuid": "{string}",
"primaryIp": "{string}",
"nodePoolName": "{string}",
"nodePoolUuid": "{string}",
"cloudProviderType": "{string}",
"cloudProviderUuid": "{string}",
"cloudInstanceId": "{string}",
"clusterName": "{string}",
"clusterUuid": "{string}",
"projectId": "{string}",
"actualKubeRoleVersion": "{string}",
"clusterKubeRoleVersion": "{string}",
"isMaster": "{integer}",
"api_responding": "{integer}",
"status": "{string}",
"masterless": "{integer}",
"startKube": "{integer}"
}
Updates the properties of the node specified by the node UUID
Currently, only the cluster property for a node can be modified and its primary usage is to detach a node from a cluster. The node, if needed, can be reattached to another cluster by using the cluster’s attach API
X | string |
uuid | string | UUID of the node | |
projectId | string | UUID of the project the nodes belongs to |
object | object | ||
clusterUuid | string | Value of this field must be set to null to detach the node |
xxxxxxxxxx
curl --request PUT \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/nodes/%7Buuid%7D' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data '{
"clusterUuid": "{string}"
}'
OK, if the node gets deattached from the cluster
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Cloud Provider
Get the list of the cloud provider accounts currently setup in a project identified by project UUID
X | string |
projectId | string | UUID of the project the cloud provider belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/cloudProviders' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK
array | array[object] | ||
name | string | Name of the cloud provider account | |
uuid | string | UUID of the cloud provider account | |
type | string | Type of the cloud provider account | |
nodePoolUuid | string | UUID of the associated node pool |
unauthorized to perform this operation
xxxxxxxxxx
[
{
"name": "{string}",
"uuid": "{string}",
"type": "{string}",
"nodePoolUuid": "{string}"
}
]
Add a cloud provider account
Note that by default, there is one “local” cloud provider, which is used for building clusters manually. Currently, AWS is the only supported cloudProvider, other than the “local” provider.
X | string |
projectId | string | UUID of the project the cloud provider account belongs to |
object | object | ||
name | string | Name of the cloud provider account | |
type | string | Type of the cloud provider account | |
key | string | Cloud access key | |
secret | string | Cloud secret key |
xxxxxxxxxx
curl --request POST \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/cloudProviders' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data '{
"name": "{string}",
"type": "{string}",
"key": "{string}",
"secret": "{string}"
}'
OK, if the cloud provider gets created successfully
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Get all available cloud provider types, in a project identified by project UUID
X | string |
projectId | string | UUID of the project the cloud provider belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/cloudProvider/types' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK
object | object | ||
type | string | Cloud provider type. Examples are 'aws','local' |
unauthorized to perform this operation
xxxxxxxxxx
{
"type": "{string}"
}
Get the details for cloud provider account identified by the account_uuid
This is applicable only for public cloud providers
X | string |
uuid | string | UUID of the cloud provider | |
projectId | string | UUID of the project the cloud provider belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/cloudProviders/%7Buuid%7D' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK
object | object | ||
Regions | array[object] | Regions belonging to the provider | |
Endpoint | string | endpoint of the region | |
RegionName | string | name of the region |
unauthorized to perform this operation
xxxxxxxxxx
{
"Regions": [
{
"Endpoint": "{string}",
"RegionName": "{string}"
}
]
}
Delete a cloud provider account specified by account uuid
X | string |
uuid | string | UUID of the cloud provider | |
projectId | string | UUID of the project the cloud provider account belongs to |
xxxxxxxxxx
curl --request DELETE \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/cloudProviders/%7Buuid%7D' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK, if the cloud provider gets deleted successfully
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Get the details for a region in a particular cloud provider account identified by the account_uuid
This is applicable only for public cloud providers
X | string |
uuid | string | UUID of the cloud provider | |
regionid | string | Name of the region | |
projectId | string | UUID of the project the cloud provider belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/cloudProviders/%7Buuid%7D/region/%7Bregionid%7D' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK
object | object | ||
azs | array[object] | The list of availability zones in the region | |
domains | array[object] | The list of hosting domains | |
flavors | array[object] | The list of instance flavors supported in the region | |
keyPairs | array[object] | The list of ssh key pairs in the region | |
operatingSystems | array[object] | The list of operating systems available in the region | |
vpcs | array[object] | The list of virtual private networks available in the region |
unauthorized to perform this operation
xxxxxxxxxx
{
"azs": [
{}
],
"domains": [
{}
],
"flavors": [
{}
],
"keyPairs": [
{}
],
"operatingSystems": [
{}
],
"vpcs": [
{}
]
}
Add ssh key to a cloud provider region
X | string |
uuid | string | UUID of the cloud provider | |
regionid | string | Name of the region | |
projectId | string | UUID of the project the cloud provider belongs to |
object | object | ||
name | string | Name of the key | |
key | string | Contents of the key |
xxxxxxxxxx
curl --request POST \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/cloudProviders/%7Buuid%7D/region/%7Bregionid%7D/sshKey' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data '{
"name": "{string}",
"key": "{string}"
}'
OK
No response body |
Key is not in valid OpenSSH public key format
unauthorized to perform this operation
xxxxxxxxxx
No response
Validate a cloud provider account
Validate a cloud provider credentials before adding it
X | string |
projectId | string | UUID of the project the cloud provider account belongs to |
object | object | ||
name | string | Name of the cloud provider account | |
type | string | Type of the cloud provider account | |
key | string | Cloud access key | |
secret | string | Cloud secret key |
xxxxxxxxxx
curl --request POST \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/cloudProviders/validate' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data '{
"name": "{string}",
"type": "{string}",
"key": "{string}",
"secret": "{string}"
}'
OK, if the cloud provider gets created successfully
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Update a cloud provider account specified by account uuid
X | string |
uuid | string | UUID of the cloud provider |
object | object | ||
name | string | Name of the cloud provider account | |
key | string | Cloud access key | |
secret | string | Cloud secret key |
xxxxxxxxxx
curl --request PUT \
--url 'https://platform9.com/qbert/v4/cloudProviders/%7Buuid%7D' \
--header 'X-Auth-Token: {X-Auth-Token}' \
--data '{
"name": "{string}",
"key": "{string}",
"secret": "{string}"
}'
OK, if the cloud provider gets upddated successfully
No response body |
Unauthorized to perform this operation
xxxxxxxxxx
No response
Node Pool
Get details of all node pools
X | string |
projectId | string | UUID of the project the node pool belongs to |
xxxxxxxxxx
curl --get \
--url 'https://platform9.com/qbert/v4/%7BprojectId%7D/nodePools' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK
array | array[object] | ||
name | string | Name of the node pool | |
uuid | string | UUID of the node pool | |
cloudProviderUuid | string | UUID of the associated cloud provider | |
cloudProviderName | string | Name of the associated cloud provider |
unauthorized to perform this operation
xxxxxxxxxx
[
{
"name": "{string}",
"uuid": "{string}",
"cloudProviderUuid": "{string}",
"cloudProviderName": "{string}"
}
]
User Role Cache
Sync/Update the qbert tenant user role cache for a user by user id
X | string |
userid | string | Userid of the User for which the sync is required |
xxxxxxxxxx
curl --request PUT \
--url 'https://platform9.com/qbert/v4/users/%7Buserid%7D' \
--header 'X-Auth-Token: {X-Auth-Token}'
OK, if the cache gets synced/updated successfully
No response body |
xxxxxxxxxx
No response