---
title: "Get the list of clusters currently setup in PMK"
method: GET
path: "/v4/{projectId}/clusters"
tags: ["Cluster"]
---

# Get the list of clusters currently setup in PMK

`GET /v4/{projectId}/clusters`

## Path parameters

- `projectId` string, required

## Headers

- `X-Auth-Token` string, required

## Response `200`

OK

- ClusterDetails[]
  - `name` string — Name of the cluster
  - `uuid` string — UUID of the cluster
  - `created_at` 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` EtcdBackupForGet
    - `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` EtcdbackupStorageproperties
      - `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` CloudProperties
    - `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` 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` 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` 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]

## Other responses

- `403` — unauthorized to perform this operation

---

[API](https://skmtc.net/platform9/apis/cluster-blueprint-api.md) · [All operations](https://skmtc.net/platform9/apis/cluster-blueprint-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/platform9/cluster-blueprint-api/revisions/708ad90fe444/schema)
