From 01669603b83339c0e96424b143a7365c69b778aa Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Fri, 7 Jun 2024 13:53:03 -0700 Subject: [PATCH 01/26] docs: organize vmo structure --- docs/docs-content/vm-management/architecture.md | 8 ++++++++ .../create-manage-vm/advanced-topics/_category_.json | 3 +++ .../{ => advanced-topics}/access-cluster-with-virtctl.md | 0 .../{ => advanced-topics}/create-disk-templates.md | 0 .../{ => advanced-topics}/create-manage-vm.md | 0 .../{ => advanced-topics}/create-vm-template.md | 0 .../{standard-vm-operations => }/clone-vm.md | 0 .../deploy-vm-from-template.md | 0 .../migrate-vm-to-different-node.md | 0 .../standard-vm-operations.md | 0 .../standard-vm-operations/_category_.json | 3 --- .../{standard-vm-operations => }/take-snapshot-of-vm.md | 0 .../update-vm-configuration.md | 0 .../{vm-packs-profiles => }/create-vmo-profile.md | 0 docs/docs-content/vm-management/rbac/_category_.json | 3 +++ .../add-roles-and-role-bindings.md | 0 .../{vm-packs-profiles => rbac}/configure_OIDC.md | 0 .../vm-management/{ => rbac}/vm-roles-permissions.md | 0 18 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 docs/docs-content/vm-management/architecture.md create mode 100644 docs/docs-content/vm-management/create-manage-vm/advanced-topics/_category_.json rename docs/docs-content/vm-management/create-manage-vm/{ => advanced-topics}/access-cluster-with-virtctl.md (100%) rename docs/docs-content/vm-management/create-manage-vm/{ => advanced-topics}/create-disk-templates.md (100%) rename docs/docs-content/vm-management/create-manage-vm/{ => advanced-topics}/create-manage-vm.md (100%) rename docs/docs-content/vm-management/create-manage-vm/{ => advanced-topics}/create-vm-template.md (100%) rename docs/docs-content/vm-management/create-manage-vm/{standard-vm-operations => }/clone-vm.md (100%) rename docs/docs-content/vm-management/create-manage-vm/{standard-vm-operations => }/deploy-vm-from-template.md (100%) rename docs/docs-content/vm-management/create-manage-vm/{standard-vm-operations => }/migrate-vm-to-different-node.md (100%) rename docs/docs-content/vm-management/create-manage-vm/{standard-vm-operations => }/standard-vm-operations.md (100%) delete mode 100644 docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/_category_.json rename docs/docs-content/vm-management/create-manage-vm/{standard-vm-operations => }/take-snapshot-of-vm.md (100%) rename docs/docs-content/vm-management/create-manage-vm/{standard-vm-operations => }/update-vm-configuration.md (100%) rename docs/docs-content/vm-management/{vm-packs-profiles => }/create-vmo-profile.md (100%) create mode 100644 docs/docs-content/vm-management/rbac/_category_.json rename docs/docs-content/vm-management/{vm-packs-profiles => rbac}/add-roles-and-role-bindings.md (100%) rename docs/docs-content/vm-management/{vm-packs-profiles => rbac}/configure_OIDC.md (100%) rename docs/docs-content/vm-management/{ => rbac}/vm-roles-permissions.md (100%) diff --git a/docs/docs-content/vm-management/architecture.md b/docs/docs-content/vm-management/architecture.md new file mode 100644 index 0000000000..9b39db2fd5 --- /dev/null +++ b/docs/docs-content/vm-management/architecture.md @@ -0,0 +1,8 @@ +--- +sidebar_label: "Architecture" +title: "Architecture" +description: "Learn about Palette Virtual Machine Orchestrator (VMO) and the architecture used to support it." +hide_table_of_contents: false +sidebar_position: 0 +tags: ["VMO", "architecture"] +--- diff --git a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/_category_.json b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/_category_.json new file mode 100644 index 0000000000..e1d4231c70 --- /dev/null +++ b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 100 +} diff --git a/docs/docs-content/vm-management/create-manage-vm/access-cluster-with-virtctl.md b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/access-cluster-with-virtctl.md similarity index 100% rename from docs/docs-content/vm-management/create-manage-vm/access-cluster-with-virtctl.md rename to docs/docs-content/vm-management/create-manage-vm/advanced-topics/access-cluster-with-virtctl.md diff --git a/docs/docs-content/vm-management/create-manage-vm/create-disk-templates.md b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-disk-templates.md similarity index 100% rename from docs/docs-content/vm-management/create-manage-vm/create-disk-templates.md rename to docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-disk-templates.md diff --git a/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-manage-vm.md similarity index 100% rename from docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md rename to docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-manage-vm.md diff --git a/docs/docs-content/vm-management/create-manage-vm/create-vm-template.md b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-vm-template.md similarity index 100% rename from docs/docs-content/vm-management/create-manage-vm/create-vm-template.md rename to docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-vm-template.md diff --git a/docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/clone-vm.md b/docs/docs-content/vm-management/create-manage-vm/clone-vm.md similarity index 100% rename from docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/clone-vm.md rename to docs/docs-content/vm-management/create-manage-vm/clone-vm.md diff --git a/docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/deploy-vm-from-template.md b/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md similarity index 100% rename from docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/deploy-vm-from-template.md rename to docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md diff --git a/docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/migrate-vm-to-different-node.md b/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md similarity index 100% rename from docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/migrate-vm-to-different-node.md rename to docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md diff --git a/docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/standard-vm-operations.md b/docs/docs-content/vm-management/create-manage-vm/standard-vm-operations.md similarity index 100% rename from docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/standard-vm-operations.md rename to docs/docs-content/vm-management/create-manage-vm/standard-vm-operations.md diff --git a/docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/_category_.json b/docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/_category_.json deleted file mode 100644 index 3fca6fb9f9..0000000000 --- a/docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 0 -} diff --git a/docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/take-snapshot-of-vm.md b/docs/docs-content/vm-management/create-manage-vm/take-snapshot-of-vm.md similarity index 100% rename from docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/take-snapshot-of-vm.md rename to docs/docs-content/vm-management/create-manage-vm/take-snapshot-of-vm.md diff --git a/docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/update-vm-configuration.md b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md similarity index 100% rename from docs/docs-content/vm-management/create-manage-vm/standard-vm-operations/update-vm-configuration.md rename to docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md diff --git a/docs/docs-content/vm-management/vm-packs-profiles/create-vmo-profile.md b/docs/docs-content/vm-management/create-vmo-profile.md similarity index 100% rename from docs/docs-content/vm-management/vm-packs-profiles/create-vmo-profile.md rename to docs/docs-content/vm-management/create-vmo-profile.md diff --git a/docs/docs-content/vm-management/rbac/_category_.json b/docs/docs-content/vm-management/rbac/_category_.json new file mode 100644 index 0000000000..094470741d --- /dev/null +++ b/docs/docs-content/vm-management/rbac/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 10 +} diff --git a/docs/docs-content/vm-management/vm-packs-profiles/add-roles-and-role-bindings.md b/docs/docs-content/vm-management/rbac/add-roles-and-role-bindings.md similarity index 100% rename from docs/docs-content/vm-management/vm-packs-profiles/add-roles-and-role-bindings.md rename to docs/docs-content/vm-management/rbac/add-roles-and-role-bindings.md diff --git a/docs/docs-content/vm-management/vm-packs-profiles/configure_OIDC.md b/docs/docs-content/vm-management/rbac/configure_OIDC.md similarity index 100% rename from docs/docs-content/vm-management/vm-packs-profiles/configure_OIDC.md rename to docs/docs-content/vm-management/rbac/configure_OIDC.md diff --git a/docs/docs-content/vm-management/vm-roles-permissions.md b/docs/docs-content/vm-management/rbac/vm-roles-permissions.md similarity index 100% rename from docs/docs-content/vm-management/vm-roles-permissions.md rename to docs/docs-content/vm-management/rbac/vm-roles-permissions.md From 5be64de8d0a93ff773bbab5b3b5e348ae9d5e9ac Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Fri, 7 Jun 2024 15:33:31 -0700 Subject: [PATCH 02/26] docs: fix broken links --- .../cluster-management/palette-webctl.md | 6 +- .../advanced-topics/create-disk-templates.md | 18 +++--- .../vm-oversubscription.md | 0 .../{advanced-topics => }/create-manage-vm.md | 8 +-- .../deploy-vm-from-template.md | 4 +- .../migrate-vm-to-different-node.md | 4 +- .../standard-vm-operations.md | 62 ------------------- .../update-vm-configuration.md | 4 +- .../vm-management/create-vmo-profile.md | 25 ++++---- .../vm-management/rbac/_category_.json | 2 +- .../rbac/add-roles-and-role-bindings.md | 13 ++-- .../vm-management/rbac/configure_OIDC.md | 3 +- .../rbac/vm-roles-permissions.md | 6 +- .../vm-management/vm-management.md | 28 ++++----- 14 files changed, 57 insertions(+), 126 deletions(-) rename docs/docs-content/vm-management/create-manage-vm/{ => advanced-topics}/vm-oversubscription.md (100%) rename docs/docs-content/vm-management/create-manage-vm/{advanced-topics => }/create-manage-vm.md (89%) delete mode 100644 docs/docs-content/vm-management/create-manage-vm/standard-vm-operations.md diff --git a/docs/docs-content/clusters/cluster-management/palette-webctl.md b/docs/docs-content/clusters/cluster-management/palette-webctl.md index e7be28b8b6..a1722d37c1 100644 --- a/docs/docs-content/clusters/cluster-management/palette-webctl.md +++ b/docs/docs-content/clusters/cluster-management/palette-webctl.md @@ -19,9 +19,9 @@ Use the following steps to connect to your host cluster with the kubectl CLI. If you are using Palette Virtual Machine (VM) Management, you can find steps on how to connect to your virtual machines with the [virtctl CLI](https://kubevirt.io/user-guide/user_workloads/virtctl_client_tool/) in the -[Access VM Cluster with virtctl](../../vm-management/create-manage-vm/access-cluster-with-virtctl.md) guide. The virtctl -CLI facilitates some of the VM operations you will perform, such as copying, pasting, or transferring files to and from -a virtual machine using Secure Copy Protocol (SCP). +[Access VM Cluster with virtctl](../../vm-management/create-manage-vm/advanced-topics/access-cluster-with-virtctl.md) +guide. The virtctl CLI facilitates some of the VM operations you will perform, such as copying, pasting, or transferring +files to and from a virtual machine using Secure Copy Protocol (SCP). ::: diff --git a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-disk-templates.md b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-disk-templates.md index 71c6ff0d38..412cefec9b 100644 --- a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-disk-templates.md +++ b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-disk-templates.md @@ -19,16 +19,16 @@ This guide demonstrates how to implement your own disk and VM templates using Ku ## Prerequisites -- A VMO profile. Check out the [Create a VMO Profile](../vm-packs-profiles/create-vmo-profile.md) guide to learn how you - can create this profile. +- A VMO profile. Check out the [Create a VMO Profile](../../create-vmo-profile.md) guide to learn how you can create + this profile. - A cluster deployed with this VMO profile. Check out the - [Deploy a Cluster](../../clusters/public-cloud/deploy-k8s-cluster.md) tutorial for detailed steps on how you can + [Deploy a Cluster](../../../clusters/public-cloud/deploy-k8s-cluster.md) tutorial for detailed steps on how you can deploy clusters to a public cloud. ## Create a Template 1. Create a new **Add-on Profile** with the following manifest. Check out the - [Add a Manifest](../../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md) + [Add a Manifest](../../../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md) guide for more information. The provided manifest defines a `DataVolume` that imports the example disk template for Ubuntu 22.04 into the @@ -173,7 +173,7 @@ This guide demonstrates how to implement your own disk and VM templates using Ku 3. When the CDI clones a PVC, it runs under the `default` service account in the namespace of the target PVC. When the source PVC is in a different namespace, you must give the required permissions to the service account. The - [VMO pack](../vm-management.md) version 4.2.0 (or higher) does this automatically through its default pack + [VMO pack](../../vm-management.md) version 4.2.0 (or higher) does this automatically through its default pack specification. This configuration uses the `vmEnabledNamespaces` option to specify the namespaces for which the permissions are configured. @@ -327,7 +327,7 @@ This guide demonstrates how to implement your own disk and VM templates using Ku ![Add-on Profile](/create-disk-templates-guide/vm-management_create-manage-vm_create-disk-templates_add-on-disk-template-profile.webp) 4. Once the cluster updates, this VM template is available to the VMs you create on your cluster. Check out the - [Deploy VM From a Template](./standard-vm-operations/deploy-vm-from-template.md) guide for more information. + [Deploy VM From a Template](../deploy-vm-from-template.md) guide for more information. ![Create VM from template](/create-disk-templates-guide/vm-management_create-manage-vm_create-disk-templates_create-vm-from-template.webp) @@ -335,8 +335,6 @@ This guide demonstrates how to implement your own disk and VM templates using Ku To learn more about the Palette VMO, we encourage you to check out the reference resources below. -- [Virtual Machine Orchestrator Pack](../vm-packs-profiles/vm-packs-profiles.md) +- [Virtual Machine Orchestrator Pack](../../vm-packs-profiles/vm-packs-profiles.md) -- [Standard VM Operations](../create-manage-vm/standard-vm-operations/standard-vm-operations.md) - -- [Deploy VM From a Template](../create-manage-vm/standard-vm-operations/deploy-vm-from-template.md) +- [Deploy VM From a Template](../deploy-vm-from-template.md) diff --git a/docs/docs-content/vm-management/create-manage-vm/vm-oversubscription.md b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/vm-oversubscription.md similarity index 100% rename from docs/docs-content/vm-management/create-manage-vm/vm-oversubscription.md rename to docs/docs-content/vm-management/create-manage-vm/advanced-topics/vm-oversubscription.md diff --git a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-manage-vm.md b/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md similarity index 89% rename from docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-manage-vm.md rename to docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md index 45dfaff670..583c886629 100644 --- a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-manage-vm.md +++ b/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md @@ -28,7 +28,7 @@ containerized applications. You can create a VM three ways: - Deploy a VM from a template. Palette provides out-of-the-box templates, or your organization may provide templates. - For the latter, refer to the [Create a VM Template](create-vm-template.md) guide. + For the latter, refer to the [Create a VM Template](./advanced-topics/create-vm-template.md) guide. - Create an empty VM and install the Operating System (OS) using a standard method, such as a Preboot Execution Environment (PXE) or optical disk image (ISO). @@ -53,8 +53,6 @@ also recommend installing VirtIO drivers to ensure you can use the paravirtualiz ## Resources -- [Standard VM Operations](standard-vm-operations/standard-vm-operations.md) +- [Deploy VM from a Template](deploy-vm-from-template.md) -- [Deploy VM from a Template](standard-vm-operations/deploy-vm-from-template.md) - -- [Create a VM Template](create-vm-template.md) +- [Create a VM Template](./advanced-topics/create-vm-template.md) diff --git a/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md b/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md index c70121f1f3..7430480bb0 100644 --- a/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md +++ b/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md @@ -14,7 +14,7 @@ organization's administrator provides. ## Prerequisites - Configured Virtual Machine Orchestrator profile applied to your cluster. Review - [Create a VMO Profile](../../vm-packs-profiles/create-vmo-profile.md) to configure the dashboard. + [Create a VMO Profile](../create-vmo-profile.md) to configure the dashboard. ## Deploy VM from a Template @@ -81,4 +81,4 @@ Try installing your applications. If you did not install the QEMU guest agent as install it now. The guest agent displays additional details in the **Virtual Machines** > **Details** tab. You can update the VM configuration from the VM console or from tabs when you click on the VM. Learn about updates you -can make in the [Update VM Configuration](update-vm-configuration.md) guide. +can make in the [Update VM Configuration](./update-vm-configuration.md) guide. diff --git a/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md b/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md index 771159c4d8..1063a2abaa 100644 --- a/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md +++ b/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md @@ -15,7 +15,7 @@ node to another without any noticeable downtime. Successful live migrations rely on appropriately configured storage and networking, and live migration must be enabled as a feature gate. Live migration is enabled by default in the `feature-gates` section of the KubeVirt configuration file that is part of the **Virtual Machine Orchestrator** pack. Refer to -[Feature Gates](../../vm-management.md#feature-gates) for more information. +[Feature Gates](../vm-management.md#feature-gates) for more information. Live migration is used with rolling Kubernetes upgrades and workload balancing. To avoid interrupting a VM when a node is placed into maintenance or upgraded, all VM instances require a `LiveMigrate` eviction strategy. @@ -103,7 +103,7 @@ You can validate evacuation completed by following the steps below. 1. Obtain the kubeconfig file from Palette, and set the KUBECONFIG environment variable to access it so you can issue kubectl commands to the cluster. To learn how, refer to - [Set up Kubectl](../../../clusters/cluster-management/palette-webctl.md#set-up-kubectl). + [Set up Kubectl](../../clusters/cluster-management/palette-webctl.md#set-up-kubectl). 2. Issue the following command to mark the node as _un-schedulable_. This alerts the Kubernetes scheduler not to schedule any new pods on that node but allows existing pods on the node to continue to operate. diff --git a/docs/docs-content/vm-management/create-manage-vm/standard-vm-operations.md b/docs/docs-content/vm-management/create-manage-vm/standard-vm-operations.md deleted file mode 100644 index 88198c8d88..0000000000 --- a/docs/docs-content/vm-management/create-manage-vm/standard-vm-operations.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -sidebar_label: "Standard VM Operations" -title: "Standard VM Operations" -description: "Learn about standard VM operations that you can perform using Palette Virtual Machine Orchestrator." -icon: " " -hide_table_of_contents: false -tags: ["vmo"] ---- - -Palette Virtual Machine Orchestrator (VMO) supports standard VM power operations: - -- **Start** - -- **Stop** - -- **Pause** - -- **Restart** - -From the **Virtual Machines** tab, you can select a VM to view its details and perform standard VM operations, such as -live migration (vMotion), snapshots, and cloning. VM operations are accessible from the **three-dot Menu** at the right -of each listed VM. - -When you select a VM from the **Clusters** > **Virtual Machines** tab, the following tabs display. Tabs are specific to -the selected VM. - -- **Overview**: Provides general information about the VM, such as its IP address, operating system, creation date and - time zone, status, active users, whether the guest agent is installed or not, the quantity of Network Interface Cards - (NIC) and disks, and any recent events. - -- **Details**: Provides additional VM details such as labels associated with the VM, pod information, scheduling and - resource requirements, and CPU and memory. If the QEMU Guest Agent is not installed, **Not Available** displays in - place of details that would otherwise be available to you. - -- **YAML**: You can review and change the VM configuration from here. - -- **Events**: Displays streaming events in the VM. Any standard operations you perform on the VM are captured here. - -- **Console**: Allows you to access and interact with the VM through its console. If you are not using a template, you - can configure the VM using the console. - -- **Network Interfaces**: Allows you to add and manage network interfaces. By default, the Pod Networking interface is a - masquerade type interface, or in simple terms, it's a one-to-many IP address translation. You can change this to be a - Bridge or other interface type. - -- **Disks**: Allows you to add and manage disks. You can update the disk size, specify type `Disk`, `CD-ROM`, or `LUN`, - and specify the interface `virtuo`, `sata`, or `scsi`. By default, `spectro-storage-class` is applied to the disk. - -- **Snapshots**: Allows you to take a new snapshot of a VM's disk file at a given point in time and manage existing - snapshots. - -## Resources - -- [Deploy VM From a Template](deploy-vm-from-template.md) - -- [Update VM Configuration](update-vm-configuration.md) - -- [Migrate VM to a Different Node](migrate-vm-to-different-node.md) - -- [Take a VM Snapshot](take-snapshot-of-vm.md) - -- [Clone a VM](clone-vm.md) diff --git a/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md index 47639a1d73..0e5b263255 100644 --- a/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md +++ b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md @@ -59,7 +59,7 @@ Address Translation (NAT) behind the pod IP. Multus is a secondary network that uses Multus-CNI. Multus allows you to attach multiple network interfaces to pods in Kubernetes. If you use Multus as your network, ensure that Multus is installed across your cluster and that you have created a default `NetworkAttachmentDefinition` CRD. For more information, refer to the -[Multus CNI](/integrations/multus-cni) guide. +[Multus CNI](../../integrations/multus-cni) guide. ### Prerequisites @@ -90,4 +90,4 @@ The **Network Interfaces** tab lists the newly added interface. ## Resources -- [Multus CNI](../../../integrations/multus-cni.md) +- [Multus CNI](../../integrations/multus-cni.md) diff --git a/docs/docs-content/vm-management/create-vmo-profile.md b/docs/docs-content/vm-management/create-vmo-profile.md index 4d99e73bfb..fec377cf36 100644 --- a/docs/docs-content/vm-management/create-vmo-profile.md +++ b/docs/docs-content/vm-management/create-vmo-profile.md @@ -9,8 +9,8 @@ tags: ["vmo"] --- The **Virtual Machine Orchestrator** pack conveniently includes several components and automatically installs the -[Spectro Proxy](../../integrations/frp.md) pack when you use the default profile configuration. To learn about pack -components, refer to [Virtual Machine Orchestrator Pack](../vm-packs-profiles/vm-packs-profiles.md). +[Spectro Proxy](../integrations/frp.md) pack when you use the default profile configuration. To learn about pack +components, refer to [Virtual Machine Orchestrator Pack](./vm-packs-profiles/vm-packs-profiles.md). ## Limitations @@ -49,8 +49,8 @@ components, refer to [Virtual Machine Orchestrator Pack](../vm-packs-profiles/vm 7. Review the **Access** configuration panel at right. The default setting is **Proxied**, which automatically adds the **Spectro Proxy** pack when you create the cluster, allowing access to the Spectro VM Dashboard from anywhere. Check - out the [Spectro Proxy](../../integrations/frp.md) guide to learn more. Changing the default may require some - additional configuration. + out the [Spectro Proxy](../integrations/frp.md) guide to learn more. Changing the default may require some additional + configuration. The **Direct** option is intended for a private configuration where a proxy is not implemented or not desired. @@ -68,7 +68,7 @@ components, refer to [Virtual Machine Orchestrator Pack](../vm-packs-profiles/vm 10. Review the profile and click **Finish Configuration**. 11. Apply the profile to your cluster. For more information, refer to - [Create a Cluster](../../clusters/public-cloud/deploy-k8s-cluster.md). + [Create a Cluster](../clusters/public-cloud/deploy-k8s-cluster.md). @@ -89,7 +89,7 @@ components, refer to [Virtual Machine Orchestrator Pack](../vm-packs-profiles/vm 7. Review the **Access** configuration panel at right. The default setting is **Proxied**, which automatically adds the **Spectro Proxy** pack when you create the cluster, allowing access to the Spectro VM Dashboard from anywhere. Changing the default may require some additional configuration. Check out the - [Spectro Proxy](../../integrations/frp.md) guide to learn more + [Spectro Proxy](../integrations/frp.md) guide to learn more The **Direct** option is intended for a private configuration where a proxy is not implemented or not desired. @@ -108,7 +108,7 @@ components, refer to [Virtual Machine Orchestrator Pack](../vm-packs-profiles/vm ``` 9. If your cluster profile does include a load balancer such as MetalLB, no changes are required and you can skip this - step. For more information about MetalLB, refer to [MetalLB pack documentation](../../integrations/metallb.md). + step. For more information about MetalLB, refer to [MetalLB pack documentation](../integrations/metallb.md). If your cluster profile does not include a load balancer, update the services `charts.virtual-machine-orchestrator.kubevirt` and `charts.virtual-machine-orchestrator.cdi` to type ClusterIP in @@ -160,7 +160,7 @@ components, refer to [Virtual Machine Orchestrator Pack](../vm-packs-profiles/vm 12. Review the profile and click **Finish Configuration**. 13. Add the add-on profile when you create a cluster. For more information, refer to - [Create Cluster Definition](../../clusters/edge/site-deployment/site-installation/cluster-deployment.md). + [Create Cluster Definition](../clusters/edge/site-deployment/site-installation/cluster-deployment.md). @@ -185,13 +185,14 @@ You can validate the profile is created. You will need to configure roles and role bindings to give users access to clusters. You can use VM user roles and permissions or standard Kubernetes roles. For configuration guidance, refer to -[Add Roles and Role Bindings](add-roles-and-role-bindings.md). The -[VM User Roles and Permissions](../vm-roles-permissions.md) reference lists Cluster Roles and equivalent Palette Roles. +[Add Roles and Role Bindings](./rbac/add-roles-and-role-bindings.md). The +[VM User Roles and Permissions](./rbac/vm-roles-permissions.md) reference lists Cluster Roles and equivalent Palette +Roles. If you have OpenID Connect (OIDC) configured at the Kubernetes layer of your cluster profile, you can create a role binding that maps individual users or groups assigned within the OIDC provider's configuration to a role. To learn more, -review [Use RBAC with OIDC](../../integrations/kubernetes.md#use-rbac-with-oidc). +review [Use RBAC with OIDC](../integrations/kubernetes.md#use-rbac-with-oidc). ## Resources -- [Add Roles and Role Bindings](add-roles-and-role-bindings.md) +- [Add Roles and Role Bindings](./rbac/add-roles-and-role-bindings.md) diff --git a/docs/docs-content/vm-management/rbac/_category_.json b/docs/docs-content/vm-management/rbac/_category_.json index 094470741d..455b8e4969 100644 --- a/docs/docs-content/vm-management/rbac/_category_.json +++ b/docs/docs-content/vm-management/rbac/_category_.json @@ -1,3 +1,3 @@ { - "position": 10 + "position": 20 } diff --git a/docs/docs-content/vm-management/rbac/add-roles-and-role-bindings.md b/docs/docs-content/vm-management/rbac/add-roles-and-role-bindings.md index c7aadbccf6..34d5ade512 100644 --- a/docs/docs-content/vm-management/rbac/add-roles-and-role-bindings.md +++ b/docs/docs-content/vm-management/rbac/add-roles-and-role-bindings.md @@ -13,14 +13,14 @@ tags: ["vmo"] You must configure permissions for actions that users can perform on Virtual Machines (VMs) deployed using Palette Virtual Machine Orchestrator (VMO), such as cloning, updating, and migrating VMs. You can do this by creating roles and cluster role bindings to determine access permissions. Refer to -[VM User Roles and Permissions](../vm-roles-permissions.md) for a list of Cluster Roles and equivalent Palette Roles. To +[VM User Roles and Permissions](./vm-roles-permissions.md) for a list of Cluster Roles and equivalent Palette Roles. To learn more about Cluster RBAC in Palette, review the [RBAC and NS Support](../../clusters/cluster-management/cluster-rbac.md) guide. ## Prerequisites - A cluster profile with the **Virtual Machine Orchestrator** add-on pack configured. Check out the - [Create a VMO Profile](../vm-packs-profiles/create-vmo-profile.md) guide to learn more. + [Create a VMO Profile](../create-vmo-profile.md) guide to learn more. - Additional cluster roles, based on the user's persona, must be associated with the user by specifying a cluster role binding or a namespace-restricted role binding: @@ -43,7 +43,7 @@ learn more about Cluster RBAC in Palette, review the 3. Click on **Settings** and choose **RBAC** to add role bindings. Refer to [Create a Role Binding](../../clusters/cluster-management/cluster-rbac.md#create-role-bindings) for guidance. Refer - to [VM User Roles and Permissions](../vm-roles-permissions.md) for a list of Cluster Roles and equivalent Palette + to [VM User Roles and Permissions](./vm-roles-permissions.md) for a list of Cluster Roles and equivalent Palette Roles. If you have OpenID Connect (OIDC) configured at the Kubernetes layer of your cluster profile, you can create a role @@ -83,10 +83,9 @@ You can verify role creation and role binding is successful by following the ste ## Next Steps -Now you are ready to deploy a VM. Review the -[Deploy VM From a Template](../create-manage-vm/standard-vm-operations/deploy-vm-from-template.md) guide to get started -with the deployment process. +Now you are ready to deploy a VM. Review the [Deploy VM From a Template](../create-manage-vm/deploy-vm-from-template.md) +guide to get started with the deployment process. ## Resources -- [VM User Roles and Permissions](../vm-roles-permissions.md) +- [VM User Roles and Permissions](./vm-roles-permissions.md) diff --git a/docs/docs-content/vm-management/rbac/configure_OIDC.md b/docs/docs-content/vm-management/rbac/configure_OIDC.md index ae5785af20..bfff1ccdf0 100644 --- a/docs/docs-content/vm-management/rbac/configure_OIDC.md +++ b/docs/docs-content/vm-management/rbac/configure_OIDC.md @@ -54,5 +54,4 @@ select in the Kubernetes layer of the infrastructure profile. ## Next Steps -You are now ready to create the VMO profile. Refer to -[Create the VMO Profile](../vm-packs-profiles/create-vmo-profile.md) for guidance. +You are now ready to create the VMO profile. Refer to [Create the VMO Profile](../create-vmo-profile.md) for guidance. diff --git a/docs/docs-content/vm-management/rbac/vm-roles-permissions.md b/docs/docs-content/vm-management/rbac/vm-roles-permissions.md index 11596f02b3..f42aac7b13 100644 --- a/docs/docs-content/vm-management/rbac/vm-roles-permissions.md +++ b/docs/docs-content/vm-management/rbac/vm-roles-permissions.md @@ -36,8 +36,8 @@ to specify bindings to configure granular Role-Based Access Control (RBAC) rules You can configure namespaces and RBAC from within a cluster or from a Palette workspace that contains a cluster group. In a cluster group, all RoleBindings must occur at the namespace level. For details, review the -[Cluster RBAC](../clusters/cluster-management/cluster-rbac.md) and -[workspace RBAC](../workspace/workspace.md#role-based-access-controlrbac) guides. +[Cluster RBAC](../../clusters/cluster-management/cluster-rbac.md) and +[workspace RBAC](../../workspace/workspace.md#role-based-access-controlrbac) guides. Palette leverages Regex Pattern matching so you can select multiple namespaces to apply role bindings. Check out -[Regex for Namespaces](../workspace/workload-features.md#regex-for-namespaces) to learn more. +[Regex for Namespaces](../../workspace/workload-features.md#regex-for-namespaces) to learn more. diff --git a/docs/docs-content/vm-management/vm-management.md b/docs/docs-content/vm-management/vm-management.md index 41a06176e4..ba7f669c5f 100644 --- a/docs/docs-content/vm-management/vm-management.md +++ b/docs/docs-content/vm-management/vm-management.md @@ -37,7 +37,7 @@ Palette Virtual Machine Orchestrator requires the following: [Deploy to MAAS](../clusters/data-center/maas/create-manage-maas-clusters.md) guide. - For Edge deployment, your Edge cluster profile must have a CSI pack. For more information, refer to - [Create VMO Profile](./vm-packs-profiles/create-vmo-profile.md#create-the-profile) in the **Edge** tab. + [Create VMO Profile](./create-vmo-profile.md#create-the-profile) in the **Edge** tab. - VMs with Persistent Volume Claim (PVC) must have a StorageClass that supports `ReadWriteMany` (`RWX`) access mode for seamless live migration to a different node - either when triggered manually or during a Kubernetes upgrades. @@ -55,18 +55,18 @@ Palette Virtual Machine Orchestrator requires the following: To get started, review [Virtual Machine Orchestrator Pack](vm-packs-profiles/vm-packs-profiles.md) to learn about its components. -Review [Create a VMO Profile](vm-packs-profiles/create-vmo-profile.md) and -[Add Roles and Role Bindings](vm-packs-profiles/add-roles-and-role-bindings.md) to learn how to create the cluster -profile and add roles and permissions that allow users to create and manage Virtual Machines (VMs). +Review [Create a VMO Profile](./create-vmo-profile.md) and +[Add Roles and Role Bindings](./rbac/add-roles-and-role-bindings.md) to learn how to create the cluster profile and add +roles and permissions that allow users to create and manage Virtual Machines (VMs). Palette VM Orchestrator provides various methods to quickly deploy VMs from out-of-the-box templates or from your organization's templates. To learn more about using and creating templates, review -[Deploy VM From a Template](create-manage-vm/standard-vm-operations/deploy-vm-from-template.md) and -[Create a VM Template](create-manage-vm/create-vm-template.md). +[Deploy VM From a Template](create-manage-vm/deploy-vm-from-template.md) and +[Create a VM Template](create-manage-vm/advanced-topics/create-vm-template.md). While you can import template disks from external locations when deploying a VM, it can be inefficient. Instead, you can leverage the `DataVolume` resource to import template disks once and then clone them when deploying new VMs. Review the -[Create Disk Templates](create-manage-vm/create-disk-templates.md) guide for more information. +[Create Disk Templates](create-manage-vm/advanced-topics/create-disk-templates.md) guide for more information. ## Feature Gates @@ -102,20 +102,18 @@ VMO includes the following KubeVirt plugins: - [Virtual Machine Orchestrator Pack](vm-packs-profiles/vm-packs-profiles.md) -- [Create a VMO Profile](vm-packs-profiles/create-vmo-profile.md) +- [Create a VMO Profile](./create-vmo-profile.md) -- [Add Roles and Role Bindings](vm-packs-profiles/add-roles-and-role-bindings.md) +- [Add Roles and Role Bindings](./rbac/add-roles-and-role-bindings.md) - [Create and Manage VMs](create-manage-vm/create-manage-vm.md) -- [Standard VM Operations](create-manage-vm/standard-vm-operations/standard-vm-operations.md) +- [Deploy VM from a Template](create-manage-vm/deploy-vm-from-template.md) -- [Deploy VM from a Template](create-manage-vm/standard-vm-operations/deploy-vm-from-template.md) +- [Create a VM Template](create-manage-vm/advanced-topics/create-vm-template.md) -- [Create a VM Template](create-manage-vm/create-vm-template.md) +- [Create Disk Templates](create-manage-vm/advanced-topics/create-disk-templates.md) -- [Create Disk Templates](create-manage-vm/create-disk-templates.md) - -- [VM Roles and Permissions](vm-roles-permissions.md) +- [VM Roles and Permissions](./rbac/vm-roles-permissions.md) - [KubeVirt user guide](https://kubevirt.io/user-guide/) From 1cd71f1541b3f7f2ca268c7a435919f54dc4d949 Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Mon, 10 Jun 2024 09:56:28 -0700 Subject: [PATCH 03/26] fix redirect issue --- redirects.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/redirects.js b/redirects.js index 32b9b22d2e..cedcb47fac 100644 --- a/redirects.js +++ b/redirects.js @@ -181,15 +181,15 @@ const redirects = [ }, { from: `/vm-management/vm-packs-profiles/enable-vm-dashboard/`, - to: `/vm-management/vm-packs-profiles/add-roles-and-role-bindings/`, + to: `/vm-management/rbac/add-roles-and-role-bindings/`, }, { from: `/vm-management/vm-packs-profiles/vm-dashboard/`, - to: `/vm-management/create-manage-vm/standard-vm-operations/`, + to: `/vm-management/create-manage-vm`, }, { from: `/vm-management/vm-packs-profiles/create-vm-dashboard-profile/`, - to: `/vm-management/vm-packs-profiles/create-vmo-profile/`, + to: `/vm-management/create-vmo-profile/`, }, { from: `/knowledgebase/`, From af6a552b12fcf7e24a6b328308c43830de92d199 Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Mon, 10 Jun 2024 11:10:14 -0700 Subject: [PATCH 04/26] docs: fix broken link --- .../vm-management/create-manage-vm/update-vm-configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md index 0e5b263255..22673563bd 100644 --- a/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md +++ b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md @@ -90,4 +90,4 @@ The **Network Interfaces** tab lists the newly added interface. ## Resources -- [Multus CNI](../../integrations/multus-cni.md) +- [Multus CNI](../../../integrations/multus-cni.md) From 06a86a16003c6e28aa1d90eba8ab12ceb4269543 Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Mon, 10 Jun 2024 12:47:24 -0700 Subject: [PATCH 05/26] docs: fix broken link --- .../advanced-topics/access-cluster-with-virtctl.md | 4 ++-- .../vm-management/create-manage-vm/update-vm-configuration.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/access-cluster-with-virtctl.md b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/access-cluster-with-virtctl.md index 0246413198..ef3eec378a 100644 --- a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/access-cluster-with-virtctl.md +++ b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/access-cluster-with-virtctl.md @@ -1,6 +1,6 @@ --- -sidebar_label: "Access VM Cluster with virtctl" -title: "Set up virtctl" +sidebar_label: "Access VM Cluster with Virtctl" +title: "Set up Virtctl" description: "Set up KubeVirt virtctl to facilitate VM operations in Palette Virtual Machine Orchestrator" icon: " " hide_table_of_contents: false diff --git a/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md index 22673563bd..0e5b263255 100644 --- a/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md +++ b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md @@ -90,4 +90,4 @@ The **Network Interfaces** tab lists the newly added interface. ## Resources -- [Multus CNI](../../../integrations/multus-cni.md) +- [Multus CNI](../../integrations/multus-cni.md) From 6d17ee252640fcc0d731e98e9a196fdb6bb3e62a Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Mon, 10 Jun 2024 13:00:20 -0700 Subject: [PATCH 06/26] docs: fix broken link --- .../vm-management/create-manage-vm/update-vm-configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md index 0e5b263255..81e13e1bf4 100644 --- a/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md +++ b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md @@ -59,7 +59,7 @@ Address Translation (NAT) behind the pod IP. Multus is a secondary network that uses Multus-CNI. Multus allows you to attach multiple network interfaces to pods in Kubernetes. If you use Multus as your network, ensure that Multus is installed across your cluster and that you have created a default `NetworkAttachmentDefinition` CRD. For more information, refer to the -[Multus CNI](../../integrations/multus-cni) guide. +[Multus CNI](../../integrations/multus-cni.md) guide. ### Prerequisites From 6526a3043218c6f4cb2316b8a6fca8e76699129a Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Mon, 10 Jun 2024 15:22:49 -0700 Subject: [PATCH 07/26] docs: start refactoring VMO pages --- .../advanced-topics/advanced-topics.md | 23 +++++++++++++++ .../advanced-topics/vm-oversubscription.md | 18 ++++++++---- .../create-manage-vm/clone-vm.md | 20 +++++++------ .../create-manage-vm/create-manage-vm.md | 28 +++++++++++++------ .../deploy-vm-from-template.md | 1 - .../migrate-vm-to-different-node.md | 1 - 6 files changed, 65 insertions(+), 26 deletions(-) create mode 100644 docs/docs-content/vm-management/create-manage-vm/advanced-topics/advanced-topics.md diff --git a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/advanced-topics.md b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/advanced-topics.md new file mode 100644 index 0000000000..35461691f9 --- /dev/null +++ b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/advanced-topics.md @@ -0,0 +1,23 @@ +--- +sidebar_label: "Advanced Topics" +title: "Advanced Topics" +description: "Advanced topics for Palette Virtual Machine Orchestrator." +icon: " " +hide_table_of_contents: false +sidebar_position: 60 +tags: ["vmo"] +--- + +Beyond the standard Virtual Machine (VM) operations such as deployment, clone, and migration, Palette Virtual Machine +Orchestrator (VMO) supports further customization and advanced use cases. + +This section discusses advanced topics such as creating and modifying VM template and disk templates. You will also +learn how to perform standard VM operations via the command-line tool, virtctl, and how to maximize your VM performance +by over-committing CPU and memory. + +## Resources + +- [Access VM Cluster with Virtctl](./access-cluster-with-virtctl.md) +- [Create VM Templates](./create-vm-template.md) +- [Create DISK Templates](./create-disk-templates.md) +- [Over-commit Resources to Enhance VM Performance](./vm-oversubscription.md) diff --git a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/vm-oversubscription.md b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/vm-oversubscription.md index bf2eb73bff..d30dcf163b 100644 --- a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/vm-oversubscription.md +++ b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/vm-oversubscription.md @@ -1,5 +1,5 @@ --- -sidebar_label: "VM Performance" +sidebar_label: "Over-commit Resources to Enhance VM Performance" title: "VM Performance" description: "Learn how to improve VM performance by maximizing virtual machine CPU and memory using Palette." icon: " " @@ -15,19 +15,25 @@ VM workloads typically have varying resource demands and peak utilization patter possible to allocate them flexibly and take advantage of the fact that not all VMs will require their maximum allocation simultaneously. -The hypervisor automatically overcommits CPU and memory. This means that more virtualized CPU and memory can be +The hypervisor automatically over-commits CPU and memory. This means that more virtualized CPU and memory can be allocated to VMs than there are physical resources on the system. -## CPU Overcommit +## Over-commit CPUs Kubevirt offers the `cpuAllocationRatio` in its Custom Resource Definitions (CRD). This ratio is used to normalize the amount of CPU time the pod will request based on the number of virtual CPUs (vCPUs). Using the following algorithm, when `cpuAllocationRatio` is set to 1, the full amount of vCPUs are requested for the -pod: `pod CPU request = number of vCPUs * 1/cpuAllocationRatio`. +pod: `pod CPU request = number of vCPUs * 1/cpuAllocationRatio`. The `cpuAllocationRatio` is global, so setting it to +greater than 1 has the effect of requesting less CPU from Kubernetes for each VM. -The `cpuAllocationRatio` is global, so setting it to greater than 1 has the effect of requesting less CPU from -Kubernetes for each VM. +### Prerequisites + +- An active VMO cluster in Palette. + +### Instructions + +1. Certain workloads that require a predictable latency and enhanced performance would benefit from obtaining dedicated CPU resources. KubeVirt relies on the Kubernetes CPU manager to pin vCPUs to the physical host’s CPUs. To learn more, refer diff --git a/docs/docs-content/vm-management/create-manage-vm/clone-vm.md b/docs/docs-content/vm-management/create-manage-vm/clone-vm.md index 641e677867..876aae03bf 100644 --- a/docs/docs-content/vm-management/create-manage-vm/clone-vm.md +++ b/docs/docs-content/vm-management/create-manage-vm/clone-vm.md @@ -8,20 +8,20 @@ sidebar_position: 40 tags: ["vmo"] --- -A VM clone is a copy of an existing, or parent, virtual machine (VM). The cloned VM has the same configuration settings -and identifiers as the parent VM. After you clone a VM, it as a separate virtual machine. +A VM clone is a copy of an existing virtual machine (VM). The cloned VM has the same configuration settings and +identifiers as the parent VM. After you clone a VM, the cloned VM acts as a separate virtual machine. Cloning is a quick way to create a new virtual machine that shares the same properties as the parent. You may want to clone a VM for the following reasons: -- Software testing - developers can clone an active VM to test new changes to their code. +- Software testing. Developers can clone an active VM to test new changes to their code. -- Forensics - security administators can clone an infected machine and connect it to an air-gaped network to investigate +- Forensics. Security administrators can clone an infected machine and connect it to an air-gaped network to investigate the source of the infection while the parent VM can be destroyed or remediated. ## Prerequisites -There are no requirements. +- An active cluster in Palette with the Virtual Machine Orchestrator (VMO) pack. ## Clone a VM @@ -29,14 +29,16 @@ There are no requirements. 2. From the left **Main Menu**, click **Clusters** and click on your cluster. -3. Select the VM to clone and click either the **three-dot Menu** or **Actions** +3. Click on the **Virtual Machine** tab. -4. Power off the parent VM and click **Clone**. If you forget to power it off, the parent VM will automatically be +4. Select the VM to clone and click either the **three-dot Menu** or **Actions**. + +5. Power off the parent VM and click **Clone**. If you forget to power it off, the parent VM will automatically be powered off while cloning is in progress. -5. Give the clone a name, give an optional description, and select a namespace. +6. Give the clone a name, an optional description, and select a namespace. -6. Optionally, you can enable the checkbox to start the cloned VM automatically when cloning is complete. +7. Optionally, you can enable the checkbox to start the cloned VM automatically when cloning is complete. ## Validate diff --git a/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md b/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md index 583c886629..8dfc86c278 100644 --- a/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md +++ b/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md @@ -2,7 +2,6 @@ sidebar_label: "Create and Manage VMs" title: "Create and Manage VMs" description: "Learn methods to create VMs using Palette's Virtual Machine Orchestrator.." -icon: " " hide_table_of_contents: false tags: ["vmo"] --- @@ -25,34 +24,45 @@ containerized applications. ## VM Creation -You can create a VM three ways: +You can create a VM in one of the following ways: - Deploy a VM from a template. Palette provides out-of-the-box templates, or your organization may provide templates. For the latter, refer to the [Create a VM Template](./advanced-topics/create-vm-template.md) guide. -- Create an empty VM and install the Operating System (OS) using a standard method, such as a Preboot Execution +- Create an empty VM and install the Operating System (OS) using a standard method, such as a Pre-boot Execution Environment (PXE) or optical disk image (ISO). -- Clone an existing VM. +- Clone an existing VM. For more information, refer to [Clone a VM](./clone-vm.md). Administrators can also import VMs from their existing VMware vSphere environment into Palette. +### Optional Components + Although no additional components are required in VMs, the **QEMU Guest Agent** is an optional component that runs inside a VM and provides runtime information. Additionally, Virtio is a virtualization standard for network and disk device drivers where only the guest's device driver knows it is deployed in a virtual environment, and cooperates with the hypervisor. This enables guests to receive -high performance network and disk operations and provides most of the performance benefits of paravirtualization. +high performance network and disk operations and provides most of the performance benefits of para-virtualization. :::warning We recommend installing the QEMU guest agent to display additional details in Palette Virtual Machine Orchestrator. We -also recommend installing VirtIO drivers to ensure you can use the paravirtualized hardware properly. +also recommend installing VirtIO drivers to ensure you can use the para-virtualized hardware properly. ::: -## Resources +## VM Management + +After creating your VMs, you can make updates, take snapshots, or migrate them to a different node. Refer to the +following resources to learn about VM management. + +- [Migrate VM to Different Node](./migrate-vm-to-different-node.md) +- [Update VM Configuration](./update-vm-configuration.md) +- [Take Snapshot of VM](./take-snapshot-of-vm.md) -- [Deploy VM from a Template](deploy-vm-from-template.md) +## Advanced Topics -- [Create a VM Template](./advanced-topics/create-vm-template.md) +Beyond the standard Virtual Machine (VM) operations such as deployment, clone, and migration, Palette Virtual Machine +Orchestrator (VMO) supports further customization and advanced use cases. For more information, refer to the +[Advanced Topics](./advanced-topics/advanced-topics.md) section. diff --git a/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md b/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md index 7430480bb0..fa33737ee8 100644 --- a/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md +++ b/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md @@ -2,7 +2,6 @@ sidebar_label: "Deploy VM From a Template" title: "Deploy VM From a Template" description: "Learn how to deploy a VM from a template using Palette Virtual Machine Orchestrator" -icon: " " hide_table_of_contents: false sidebar_position: 0 tags: ["vmo"] diff --git a/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md b/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md index 1063a2abaa..b4617090a5 100644 --- a/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md +++ b/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md @@ -2,7 +2,6 @@ sidebar_label: "Migrate a VM" title: "Migrate a VM to a Different Node" description: "Learn how to migrate a VM to another physical host in the cluster using Palette." -icon: " " hide_table_of_contents: false sidebar_position: 20 tags: ["vmo"] From 2cceb877d94cc71966f0505a943815b6319e1954 Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Mon, 10 Jun 2024 16:56:15 -0700 Subject: [PATCH 08/26] docs: refactor create and manage VMs --- .../create-manage-vm/create-manage-vm.md | 5 +- .../migrate-vm-to-different-node.md | 59 +++++++++++++------ .../create-manage-vm/take-snapshot-of-vm.md | 4 +- 3 files changed, 47 insertions(+), 21 deletions(-) diff --git a/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md b/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md index 8dfc86c278..d8dc57c7a0 100644 --- a/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md +++ b/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md @@ -54,8 +54,9 @@ also recommend installing VirtIO drivers to ensure you can use the para-virtuali ## VM Management -After creating your VMs, you can make updates, take snapshots, or migrate them to a different node. Refer to the -following resources to learn about VM management. +After creating your VMs, you can make updates to the VM such as adding disk storage and adding network interfaces. You +can also take snapshots of the VMs and use those snapshots to provision other VMs. You can also migrate them to a +different node. Refer to the following resources to learn about VM management. - [Migrate VM to Different Node](./migrate-vm-to-different-node.md) - [Update VM Configuration](./update-vm-configuration.md) diff --git a/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md b/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md index b4617090a5..e8f4c0e595 100644 --- a/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md +++ b/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md @@ -7,7 +7,7 @@ sidebar_position: 20 tags: ["vmo"] --- -Palette supports virtual machine (VM) migration to another physical host in the cluster. This is known as _live +Palette supports Virtual Machine (VM) migration to another physical host in the cluster. This is known as _live migration_. During live migration, the VM and its memory, storage, and CPU resources are moved from one cluster compute node to another without any noticeable downtime. @@ -19,7 +19,11 @@ file that is part of the **Virtual Machine Orchestrator** pack. Refer to Live migration is used with rolling Kubernetes upgrades and workload balancing. To avoid interrupting a VM when a node is placed into maintenance or upgraded, all VM instances require a `LiveMigrate` eviction strategy. -## Prerequisites +## Migrate VM to a Different Node + +Follow the instructions below to migrate VMs to a different node. + +### Prerequisites - All VM instances must have an eviction strategy set as `evictionStrategy: LiveMigrate` to ensure that a VM is not interrupted if the node is placed into maintenance. This is configured automatically in the KubeVirt configuration @@ -33,7 +37,7 @@ is placed into maintenance or upgraded, all VM instances require a `LiveMigrate` - A VM’s pod network cannot use a Bridge interface. Disable the default Bridge interface on the pod network. However, other interfaces such as those that Multus grants, may use a bridge interface for live migration. -## Migrate VM to a Different Node +### Instructions 1. Log in to [Palette](https://console.spectrocloud.com). @@ -70,7 +74,11 @@ Kubernetes resource. - Ensure `LiveMigrate` is set as the eviction strategy for all affected VMs. When the host is put in maintenance mode, this feature allows for a smooth and uninterrupted migration process. -### Evacuate VMs in Palette +### Instructions + + + + 1. Log in to [Palette](https://console.spectrocloud.com). @@ -88,20 +96,12 @@ Kubernetes resource. ::: -### Validate - -You can validate evacuation completed by following the steps below. - -1. Log in to [Palette](https://console.spectrocloud.com). - -2. From the left **Main Menu**, choose **Clusters**. - -3. Verify the **Health** column displays the **Maintenance mode: Completed** icon. + -## Evacuate VMs Manually + -1. Obtain the kubeconfig file from Palette, and set the KUBECONFIG environment variable to access it so you can issue - kubectl commands to the cluster. To learn how, refer to +1. Obtain the kubeconfig file from Palette, and set the `KUBECONFIG` environment variable to access it so you can issue + kubectl commands to the cluster. For more information, refer to [Set up Kubectl](../../clusters/cluster-management/palette-webctl.md#set-up-kubectl). 2. Issue the following command to mark the node as _un-schedulable_. This alerts the Kubernetes scheduler not to @@ -132,9 +132,30 @@ You can validate evacuation completed by following the steps below. ::: + + + + ### Validate -1. Using kubectl, log in to a machine that has access to the kubernetes cluster. + + + + +You can validate evacuation completed by following the steps below. + +1. Log in to [Palette](https://console.spectrocloud.com). + +2. From the left **Main Menu**, choose **Clusters**. + +3. Verify the **Health** column displays the **Maintenance mode: Completed** icon. + + + + + +1. Using kubectl, log in to a machine that has access to the Kubernetes cluster. For more information, refer to + [Access Cluster with Kubectl](../../clusters/cluster-management/palette-webctl.md). 2. Issue the following command to verify the pods are rescheduled on a different node by verifying the name and IP address of the new node changed. @@ -143,6 +164,10 @@ You can validate evacuation completed by following the steps below. kubectl get pods --output wide ``` + + + + ## Resources - [Persistent Volume Access Modes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes) diff --git a/docs/docs-content/vm-management/create-manage-vm/take-snapshot-of-vm.md b/docs/docs-content/vm-management/create-manage-vm/take-snapshot-of-vm.md index fd03b7a503..8e94c336d9 100644 --- a/docs/docs-content/vm-management/create-manage-vm/take-snapshot-of-vm.md +++ b/docs/docs-content/vm-management/create-manage-vm/take-snapshot-of-vm.md @@ -1,7 +1,7 @@ --- sidebar_label: "Take a VM Snapshot" title: "Take a Snapshot of the VM" -description: "Learn how to snapshot a VM using Palette Virtual Machine Orchestrator.." +description: "Learn how to snapshot a VM using Palette Virtual Machine Orchestrator." icon: " " hide_table_of_contents: false sidebar_position: 30 @@ -33,7 +33,7 @@ is found, the **Snapshot** action is not possible. ## Prerequisites -- A deployed VM. +- A deployed VM in an active cluster in Palette with the Virtual Machine Orchestrator (VMO) pack. ## Take a Snapshot From 1cc5c2c42dd91784dd4dbdfcc360a00f4bb0619a Mon Sep 17 00:00:00 2001 From: Yuliia Horbenko <31223054+yuliiiah@users.noreply.github.com> Date: Tue, 18 Jun 2024 17:22:27 +0200 Subject: [PATCH 09/26] Update the VMO index page and document its architecture (#3073) * docs: Update the VMO index page * docs: Document the VMO architecture (WIP) * docs: Finish the VMO arch draft and update the higl-level topic structure * chore: Fix formatting * Optimised images with calibre/image-actions * Optimised images with calibre/image-actions * chore: Fix typos flagged by Vale --------- Co-authored-by: vault-token-factory-spectrocloud[bot] <133815545+vault-token-factory-spectrocloud[bot]@users.noreply.github.com> --- docs/api-content/api-docs/v1/api.json | 84452 +++++++++++++++- .../vm-management/architecture.md | 307 +- .../create-manage-vm/_category_.json | 2 +- .../advanced-topics/create-disk-templates.md | 2 +- .../advanced-topics/vm-oversubscription.md | 2 +- .../migrate-vm-to-different-node.md | 4 +- .../create-manage-vmo-cluster.md | 9 + .../vm-management/create-vmo-profile.md | 4 +- .../vm-management/rbac/_category_.json | 2 +- docs/docs-content/vm-management/rbac/rbac.md | 9 + .../vm-management/vm-management.md | 111 +- .../vm-packs-profiles/_category_.json | 3 - .../vm-packs-profiles/vm-packs-profiles.md | 75 - .../images/docs_vm-mangement_vmo-diagram.webp | Bin 52042 -> 0 bytes ...m-mangement_architecture_arch-diagram.webp | Bin 0 -> 36200 bytes .../docs/images/vm-mangement_vmo-diagram.webp | Bin 0 -> 23034 bytes styleguide/spectro-cloud-style-guide.md | 4 +- 17 files changed, 84808 insertions(+), 178 deletions(-) create mode 100644 docs/docs-content/vm-management/create-manage-vmo-cluster.md create mode 100644 docs/docs-content/vm-management/rbac/rbac.md delete mode 100644 docs/docs-content/vm-management/vm-packs-profiles/_category_.json delete mode 100644 docs/docs-content/vm-management/vm-packs-profiles/vm-packs-profiles.md delete mode 100644 static/assets/docs/images/docs_vm-mangement_vmo-diagram.webp create mode 100644 static/assets/docs/images/vm-mangement_architecture_arch-diagram.webp create mode 100644 static/assets/docs/images/vm-mangement_vmo-diagram.webp diff --git a/docs/api-content/api-docs/v1/api.json b/docs/api-content/api-docs/v1/api.json index 79b47ddde2..ae6acdecaf 100644 --- a/docs/api-content/api-docs/v1/api.json +++ b/docs/api-content/api-docs/v1/api.json @@ -1 +1,84451 @@ -{"consumes":["application/json"],"definitions":{"URLEncodedBase64":{"format":"url-encoded-base64","type":"string"},"V1AwsAccountSts":{"description":"AWS cloud account sts","properties":{"accountId":{"description":"A 12-digit number, such as 123456789012, that uniquely identifies an AWS account","type":"string"},"externalId":{"description":"It can be passed to the AssumeRole API of the STS. It can be used in the condition element in a role's trust policy, allowing the role to be assumed only when a certain value is present in the external ID","type":"string"},"partition":{"$ref":"#/definitions/v1AwsPartition"}},"type":"object"},"V1AwsPropertiesValidateSpec":{"description":"AWS properties validate spec","properties":{"cloudAccountUid":{"type":"string"},"region":{"type":"string"},"sshKeyName":{"type":"string"}},"type":"object"},"V1EksPropertiesValidateSpec":{"description":"Eks properties validate spec","properties":{"cloudAccountUid":{"type":"string"},"name":{"type":"string"},"region":{"type":"string"},"sshKeyName":{"type":"string"},"subnets":{"items":{"type":"string"},"type":"array"},"vpcId":{"type":"string"}},"type":"object"},"V1GcpPropertiesValidateSpec":{"description":"Gcp properties validate spec","properties":{"azs":{"items":{"type":"string"},"type":"array"},"cloudAccountUid":{"type":"string"},"projectId":{"type":"string"},"region":{"type":"string"}},"type":"object"},"V1PasswordsBlockList":{"description":"List of blocklisted passwords","properties":{"spec":{"$ref":"#/definitions/v1PasswordsBlockListEntity"}},"type":"object"},"urlEncodedBase64":{"format":"url-encoded-base64","type":"string"},"v1.AzureAccountEntitySpec":{"properties":{"clientCloud":{"default":"public","description":"Contains configuration for Azure cloud","enum":["azure-china","azure-government","public"],"type":"string"},"clientId":{"type":"string"},"clientSecret":{"type":"string"},"subscriptionId":{"type":"string"},"tenantId":{"type":"string"}},"type":"object"},"v1.CloudWatchConfig":{"description":"Cloud watch config entity","properties":{"credentials":{"$ref":"#/definitions/v1AwsCloudAccount"},"group":{"description":"Name of the group","type":"string"},"region":{"description":"Name of the region","type":"string"},"stream":{"description":"Name of the stream","type":"string"}},"type":"object"},"v1.DataSinkCloudWatchConfig":{"description":"Data sink cloud watch config","properties":{"payload":{"$ref":"#/definitions/v1.DataSinkPayloads"},"spec":{"$ref":"#/definitions/v1.CloudWatchConfig"}},"type":"object"},"v1.DataSinkPayload":{"additionalProperties":{"type":"object"},"description":"Data sink payload entity","properties":{"refUid":{"description":"RefUid of the data sink payload","type":"string"},"timestamp":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1.DataSinkPayloads":{"description":"List of data sink payload entities","items":{"$ref":"#/definitions/v1.DataSinkPayload"},"type":"array","uniqueItems":true},"v1.GcpAccountEntitySpec":{"properties":{"jsonCredentials":{"type":"string"},"jsonCredentialsFileUid":{"type":"string"}},"type":"object"},"v1AADProfile":{"description":"AADProfile - AAD integration is managed by AKS.","properties":{"adminGroupObjectIDs":{"description":"AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.","items":{"type":"string"},"type":"array"},"managed":{"description":"Managed - Whether to enable managed AAD.","type":"boolean","x-omitempty":false}},"required":["managed","adminGroupObjectIDs"],"type":"object"},"v1APIEndpoint":{"description":"APIEndpoint represents a reachable Kubernetes API endpoint.","properties":{"host":{"description":"The hostname on which the API server is serving.","type":"string"},"port":{"description":"The port on which the API server is serving.","format":"int32","type":"integer"}},"required":["host","port"],"type":"object"},"v1APIServerAccessProfile":{"description":"APIServerAccessProfile - access profile for AKS API server.","properties":{"authorizedIPRanges":{"description":"AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.","items":{"default":"","type":"string"},"type":"array"},"enablePrivateCluster":{"description":"EnablePrivateCluster - Whether to create the cluster as a private cluster or not.","type":"boolean"},"enablePrivateClusterPublicFQDN":{"description":"EnablePrivateClusterPublicFQDN - Whether to create additional public FQDN for private cluster or not.","type":"boolean"},"privateDNSZone":{"description":"PrivateDNSZone - Private dns zone mode for private cluster.","type":"string"}},"type":"object"},"v1AWSVolumeTypes":{"description":"AWS Volume Types","properties":{"volumeTypes":{"items":{"$ref":"#/definitions/v1AwsVolumeType"},"type":"array"}},"type":"object"},"v1AclMeta":{"description":"Resource access control information (Read-only response data)","properties":{"ownerUid":{"description":"User or service uid which created the resource","type":"string"},"projectUid":{"description":"Project's uid if the resource is under a project","type":"string"},"tenantUid":{"description":"Tenant's uid","type":"string"}},"type":"object"},"v1ActiveTenantResources":{"description":"Active resources of tenant","properties":{"activeResources":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"}},"type":"object"},"v1Address":{"description":"Tenant Address","properties":{"addressLine1":{"type":"string"},"addressLine2":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"pincode":{"type":"string"},"state":{"type":"string"}},"type":"object"},"v1Alert":{"properties":{"channels":{"items":{"$ref":"#/definitions/v1Channel"},"type":"array"},"component":{"type":"string"}},"type":"object"},"v1AlertEntity":{"properties":{"channels":{"items":{"$ref":"#/definitions/v1Channel"},"type":"array"}},"type":"object"},"v1AlertNotificationStatus":{"properties":{"isSucceeded":{"type":"boolean","x-omitempty":false},"message":{"type":"string"},"time":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1Alerts":{"items":{"$ref":"#/definitions/v1Alert"},"type":"array"},"v1ApiEndpoint":{"description":"APIEndpoint represents a reachable Kubernetes API endpoint.","properties":{"host":{"description":"The hostname on which the API server is serving.","type":"string"},"port":{"description":"The port on which the API server is serving.","format":"int32","type":"integer"}},"required":["host","port"],"type":"object"},"v1ApiKey":{"description":"API key information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ApiKeySpec"},"status":{"$ref":"#/definitions/v1ApiKeyStatus"}},"type":"object"},"v1ApiKeyActiveState":{"properties":{"isActive":{"description":"API key active state","type":"boolean"}}},"v1ApiKeyCreateResponse":{"description":"Response of create API key","properties":{"apiKey":{"description":"Api key is used for authentication","type":"string"},"uid":{"description":"User uid","type":"string"}},"type":"object"},"v1ApiKeyEntity":{"description":"API key request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ApiKeySpecEntity"}},"type":"object"},"v1ApiKeySpec":{"description":"API key specification","properties":{"expiry":{"$ref":"#/definitions/v1Time","description":"API key expiry date"},"key":{"description":"Deprecated: API key field will be no longer available","type":"string"},"user":{"$ref":"#/definitions/v1ApiKeyUser","description":"User to whom the API key is created"}},"type":"object"},"v1ApiKeySpecEntity":{"description":"API key specification","properties":{"expiry":{"$ref":"#/definitions/v1Time","description":"API key expiry date"},"userUid":{"description":"User to whom the API key has to be created","type":"string"}},"type":"object"},"v1ApiKeySpecUpdate":{"description":"API key update request specification","properties":{"expiry":{"$ref":"#/definitions/v1Time","description":"API key expiry date"}}},"v1ApiKeyStatus":{"description":"API key status","properties":{"isActive":{"description":"API key active state","type":"boolean"}},"type":"object"},"v1ApiKeyUpdate":{"description":"API key update request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ApiKeySpecUpdate"}},"type":"object"},"v1ApiKeyUser":{"description":"API key user information","properties":{"firstName":{"description":"First name of user","type":"string"},"lastName":{"description":"Last name of user","type":"string"},"uid":{"description":"User uid","type":"string"}},"type":"object"},"v1ApiKeys":{"properties":{"items":{"description":"List of API keys","items":{"$ref":"#/definitions/v1ApiKey"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1ApiProfiler":{"properties":{"api":{"type":"string"},"endTime":{"format":"date-time","type":"string"},"ops":{"items":{"type":"string"},"type":"array"},"requestUid":{"type":"string"},"startTime":{"format":"date-time","type":"string"},"timeTaken":{"format":"int64","type":"integer"}},"type":"object"},"v1AppDeployment":{"description":"Application deployment response","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1AppDeploymentSpec"},"status":{"$ref":"#/definitions/v1AppDeploymentStatus"}},"type":"object"},"v1AppDeploymentClusterGroupConfigEntity":{"description":"Application deployment cluster group config","properties":{"targetSpec":{"$ref":"#/definitions/v1AppDeploymentClusterGroupTargetSpec"}},"type":"object"},"v1AppDeploymentClusterGroupEntity":{"description":"Application deployment cluster group request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"$ref":"#/definitions/v1AppDeploymentClusterGroupSpec"}},"type":"object"},"v1AppDeploymentClusterGroupSpec":{"description":"Application deployment cluster group spec","properties":{"config":{"$ref":"#/definitions/v1AppDeploymentClusterGroupConfigEntity"},"profile":{"$ref":"#/definitions/v1AppDeploymentProfileEntity"}},"type":"object"},"v1AppDeploymentClusterGroupTargetSpec":{"description":"Application deployment cluster group target spec","properties":{"clusterGroupUid":{"description":"Application deployment cluster group uid","type":"string"},"clusterLimits":{"$ref":"#/definitions/v1AppDeploymentTargetClusterLimits"},"clusterName":{"description":"Application deployment virtual cluster name","type":"string"}},"required":["clusterName","clusterGroupUid"],"type":"object"},"v1AppDeploymentClusterHealth":{"description":"Application deployment cluster health status","properties":{"state":{"type":"string"}}},"v1AppDeploymentClusterRef":{"description":"Application deployment cluster reference","properties":{"deploymentClusterType":{"description":"Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]","enum":["virtual","host"],"type":"string"},"name":{"description":"Application deployment cluster name","type":"string"},"uid":{"description":"Application deployment cluster uid","type":"string"}},"type":"object"},"v1AppDeploymentClusterRefSummary":{"description":"Application deployment cluster reference","properties":{"deploymentClusterType":{"description":"Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]","enum":["virtual","host"],"type":"string"},"name":{"description":"Application deployment source cluster name","type":"string"},"uid":{"description":"Application deployment source cluster uid","type":"string"}}},"v1AppDeploymentClusterStatus":{"description":"Application deployment cluster status","properties":{"health":{"$ref":"#/definitions/v1AppDeploymentClusterHealth"},"state":{"type":"string"}}},"v1AppDeploymentConfig":{"description":"Application deployment config response","properties":{"target":{"$ref":"#/definitions/v1AppDeploymentTargetConfig"}},"type":"object"},"v1AppDeploymentConfigSummary":{"description":"Application deployment config summary","properties":{"target":{"$ref":"#/definitions/v1AppDeploymentTargetConfigSummary"}}},"v1AppDeploymentFilterSpec":{"description":"Application deployment filter spec","properties":{"appDeploymentName":{"$ref":"#/definitions/v1FilterString"},"clusterUids":{"$ref":"#/definitions/v1FilterArray"},"tags":{"$ref":"#/definitions/v1FilterArray"}}},"v1AppDeploymentNotifications":{"description":"Application deployment notifications","properties":{"isAvailable":{"type":"boolean","x-omitempty":false}}},"v1AppDeploymentProfile":{"description":"Application deployment profile","properties":{"metadata":{"$ref":"#/definitions/v1AppDeploymentProfileMeta"},"template":{"$ref":"#/definitions/v1AppProfileTemplate"}},"type":"object"},"v1AppDeploymentProfileEntity":{"description":"Application deployment profile request payload","properties":{"appProfileUid":{"description":"Application deployment profile uid","type":"string"}},"required":["appProfileUid"],"type":"object"},"v1AppDeploymentProfileMeta":{"description":"Application deployment profile metadata","properties":{"name":{"description":"Application deployment profile name","type":"string"},"uid":{"description":"Application deployment profile uid","type":"string"},"version":{"description":"Application deployment profile version","type":"string"}},"type":"object"},"v1AppDeploymentProfileMetadataSummary":{"description":"Application deployment profile metadata summary","properties":{"name":{"type":"string"},"uid":{"type":"string"},"version":{"type":"string"}}},"v1AppDeploymentProfileSpec":{"description":"Application deployment profile spec","properties":{"metadata":{"$ref":"#/definitions/v1AppDeploymentProfileMeta"},"template":{"$ref":"#/definitions/v1AppProfileTemplateSpec"}},"type":"object"},"v1AppDeploymentProfileSummary":{"description":"Application deployment profile summary","properties":{"metadata":{"$ref":"#/definitions/v1AppDeploymentProfileMetadataSummary"},"template":{"$ref":"#/definitions/v1AppProfileTemplateSummary"}}},"v1AppDeploymentProfileVersion":{"description":"Application deployment profile version","properties":{"uid":{"description":"Application deployment profile uid","type":"string"},"version":{"description":"Application deployment profile version","type":"string"}},"type":"object"},"v1AppDeploymentProfileVersions":{"description":"Application deployment profile versions","properties":{"availableVersions":{"description":"Application deployment profile available versions","items":{"$ref":"#/definitions/v1AppDeploymentProfileVersion"},"type":"array"},"latestVersions":{"description":"Application deployment profile latest versions","items":{"$ref":"#/definitions/v1AppDeploymentProfileVersion"},"type":"array"},"metadata":{"$ref":"#/definitions/v1AppDeploymentProfileMeta"}},"type":"object"},"v1AppDeploymentSortFields":{"enum":["appDeploymentName","creationTimestamp","lastModifiedTimestamp"],"type":"string","x-nullable":true},"v1AppDeploymentSortSpec":{"properties":{"field":{"$ref":"#/definitions/v1AppDeploymentSortFields"},"order":{"$ref":"#/definitions/v1SortOrder"}}},"v1AppDeploymentSpec":{"description":"Application deployment spec","properties":{"config":{"$ref":"#/definitions/v1AppDeploymentConfig"},"profile":{"$ref":"#/definitions/v1AppDeploymentProfile"}},"type":"object"},"v1AppDeploymentStatus":{"description":"Application deployment status","properties":{"appTiers":{"description":"Application deployment tiers","items":{"$ref":"#/definitions/v1ClusterPackStatus"},"type":"array"},"lifecycleStatus":{"$ref":"#/definitions/v1LifecycleStatus"},"state":{"description":"Application deployment state [ \"Pending\", \"Deploying\", \"Deployed\", \"Updating\" ]","type":"string"}},"type":"object"},"v1AppDeploymentStatusSummary":{"description":"Application deployment status summary","properties":{"cluster":{"$ref":"#/definitions/v1AppDeploymentClusterStatus"},"notifications":{"$ref":"#/definitions/v1AppDeploymentNotifications"},"state":{"type":"string"}},"type":"object"},"v1AppDeploymentSummary":{"description":"Application deployment summary","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"description":"Application deployment spec summary","properties":{"config":{"$ref":"#/definitions/v1AppDeploymentConfigSummary"},"profile":{"$ref":"#/definitions/v1AppDeploymentProfileSummary"}},"type":"object"},"status":{"$ref":"#/definitions/v1AppDeploymentStatusSummary"}},"type":"object"},"v1AppDeploymentTargetClusterLimits":{"description":"Application deployment target cluster limits","properties":{"cpu":{"description":"CPU cores","format":"int32","type":"integer"},"memoryMiB":{"description":"Memory in MiB","format":"int32","type":"integer"},"storageGiB":{"description":"Storage in GiB","format":"int32","type":"integer"}}},"v1AppDeploymentTargetConfig":{"description":"Application deployment target config response","properties":{"clusterRef":{"$ref":"#/definitions/v1AppDeploymentClusterRef"},"envRef":{"$ref":"#/definitions/v1AppDeploymentTargetEnvironmentRef"}},"type":"object"},"v1AppDeploymentTargetConfigSummary":{"description":"Application deployment target config summary","properties":{"clusterRef":{"$ref":"#/definitions/v1AppDeploymentClusterRefSummary"}}},"v1AppDeploymentTargetEnvironmentRef":{"description":"Application deployment target environment reference","properties":{"name":{"description":"Application deployment target resource name","type":"string"},"type":{"description":"Application deployment target resource type [ \"nestedCluster\", \"clusterGroup\" ]","type":"string"},"uid":{"description":"Application deployment target resource uid","type":"string"}},"type":"object"},"v1AppDeploymentVirtualClusterConfigEntity":{"description":"Application deployment virtual cluster config","properties":{"targetSpec":{"$ref":"#/definitions/v1AppDeploymentVirtualClusterTargetSpec"}},"type":"object"},"v1AppDeploymentVirtualClusterEntity":{"description":"Application deployment virtual cluster request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"$ref":"#/definitions/v1AppDeploymentVirtualClusterSpec"}},"type":"object"},"v1AppDeploymentVirtualClusterSpec":{"description":"Application deployment virtual cluster spec","properties":{"config":{"$ref":"#/definitions/v1AppDeploymentVirtualClusterConfigEntity"},"profile":{"$ref":"#/definitions/v1AppDeploymentProfileEntity"}},"type":"object"},"v1AppDeploymentVirtualClusterTargetSpec":{"description":"Application deployment virtual cluster target spec","properties":{"clusterUid":{"description":"Application deployment virtual cluster uid","type":"string"}},"required":["clusterUid"],"type":"object"},"v1AppDeploymentsFilterSpec":{"description":"Application deployment filter summary spec","properties":{"filter":{"$ref":"#/definitions/v1AppDeploymentFilterSpec"},"sort":{"items":{"$ref":"#/definitions/v1AppDeploymentSortSpec"},"type":"array","uniqueItems":true}}},"v1AppDeploymentsSummary":{"properties":{"appDeployments":{"items":{"$ref":"#/definitions/v1AppDeploymentSummary"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"type":"object"},"v1AppFeatureFreemium":{"description":"Freemium information","properties":{"activeClustersLimit":{"type":"integer","x-omitempty":false},"isFreemium":{"type":"boolean","x-omitempty":false},"overageUsageLimit":{"format":"float64","type":"number","x-omitempty":false},"totalUsageLimit":{"format":"float64","type":"number","x-omitempty":false}}},"v1AppFeatures":{"description":"System app features","properties":{"developerCredit":{"$ref":"#/definitions/v1DeveloperCredit"},"freeCloudCredit":{"type":"boolean","x-omitempty":false},"freemium":{"$ref":"#/definitions/v1AppFeatureFreemium"}}},"v1AppProfile":{"description":"Application profile response","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"parentUid":{"description":"Application profile parent profile uid","type":"string"},"template":{"$ref":"#/definitions/v1AppProfileTemplate"},"version":{"description":"Application profile version","type":"string"},"versions":{"description":"Application profile versions list","items":{"$ref":"#/definitions/v1AppProfileVersion"},"type":"array"}},"type":"object"},"status":{"description":"Application profile status","properties":{"inUseApps":{"description":"Application profile apps array","items":{"$ref":"#/definitions/v1ObjectResReference"},"type":"array"}},"type":"object"}},"type":"object"},"v1AppProfileCloneEntity":{"description":"Application profile clone request payload","properties":{"metadata":{"$ref":"#/definitions/v1AppProfileCloneMetaInputEntity"}},"type":"object"},"v1AppProfileCloneMetaInputEntity":{"description":"Application profile clone metadata","properties":{"name":{"description":"Application profile name","type":"string"},"target":{"$ref":"#/definitions/v1AppProfileCloneTarget"},"version":{"description":"Application profile version","type":"string"}},"required":["name"],"type":"object"},"v1AppProfileCloneTarget":{"description":"Application profile clone target","properties":{"projectUid":{"description":"Application profile clone target project uid","type":"string"}},"type":"object"},"v1AppProfileEntity":{"description":"Application profile request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"description":"Application profile spec","properties":{"template":{"$ref":"#/definitions/v1AppProfileTemplateEntity"},"version":{"description":"Application profile version","type":"string"}},"type":"object"}},"type":"object"},"v1AppProfileFilterSpec":{"description":"Application profile filter spec","properties":{"profileName":{"$ref":"#/definitions/v1FilterString"},"tags":{"$ref":"#/definitions/v1FilterArray"},"version":{"$ref":"#/definitions/v1FilterVersionString"}}},"v1AppProfileMetaEntity":{"description":"Application profile metadata request payload","properties":{"metadata":{"$ref":"#/definitions/v1AppProfileMetaUpdateEntity"},"version":{"description":"Application profile version","type":"string"}},"required":["metadata"],"type":"object"},"v1AppProfileMetaUpdateEntity":{"description":"Application profile metadata update request payload","properties":{"annotations":{"additionalProperties":{"type":"string"},"description":"Application profile annotations","type":"object"},"labels":{"additionalProperties":{"type":"string"},"description":"Application profile labels","type":"object"}},"type":"object"},"v1AppProfileMetadata":{"description":"Application profile metadata summary","properties":{"metadata":{"$ref":"#/definitions/v1ObjectEntity"},"spec":{"properties":{"version":{"type":"string"}}}},"type":"object"},"v1AppProfileSortFields":{"enum":["profileName","creationTimestamp","lastModifiedTimestamp"],"type":"string","x-nullable":true},"v1AppProfileSortSpec":{"properties":{"field":{"$ref":"#/definitions/v1AppProfileSortFields"},"order":{"$ref":"#/definitions/v1SortOrder"}}},"v1AppProfileSummary":{"description":"Application profile summary","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"description":"Application profile spec summary","properties":{"parentUid":{"type":"string"},"template":{"$ref":"#/definitions/v1AppProfileTemplateSummary"},"version":{"type":"string"},"versions":{"description":"Application profile's list of all the versions","items":{"$ref":"#/definitions/v1AppProfileVersion"},"type":"array"}},"type":"object"}},"type":"object"},"v1AppProfileTemplate":{"description":"Application profile template information","properties":{"appTiers":{"description":"Application profile tiers","items":{"$ref":"#/definitions/v1AppTierRef"},"type":"array","uniqueItems":true},"registryRefs":{"description":"Application profile registries reference","items":{"$ref":"#/definitions/v1ObjectReference"},"type":"array"}},"type":"object"},"v1AppProfileTemplateEntity":{"description":"Application profile template spec","properties":{"appTiers":{"description":"Application profile tiers","items":{"$ref":"#/definitions/v1AppTierEntity"},"type":"array","uniqueItems":true}},"type":"object"},"v1AppProfileTemplateSpec":{"description":"Application profile template specs","properties":{"appTiers":{"description":"Application profile tiers","items":{"$ref":"#/definitions/v1AppTier"},"type":"array","uniqueItems":true},"registryRefs":{"description":"Application profile registries reference","items":{"$ref":"#/definitions/v1ObjectReference"},"type":"array"}},"type":"object"},"v1AppProfileTemplateSummary":{"description":"Application profile template summary","properties":{"appTiers":{"items":{"$ref":"#/definitions/v1AppTierSummary"},"type":"array"}},"type":"object"},"v1AppProfileTiers":{"description":"Application profile tiers information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1AppProfileTiersSpec"}},"type":"object"},"v1AppProfileTiersSpec":{"description":"Application profile tiers information","properties":{"appTiers":{"description":"Application profile tiers","items":{"$ref":"#/definitions/v1AppTier"},"type":"array","uniqueItems":true}},"type":"object"},"v1AppProfileVersion":{"description":"Application profile version","properties":{"uid":{"type":"string"},"version":{"type":"string"}},"type":"object"},"v1AppProfilesFilterSpec":{"description":"Application profile filter summary spec","properties":{"filter":{"$ref":"#/definitions/v1AppProfileFilterSpec"},"sort":{"items":{"$ref":"#/definitions/v1AppProfileSortSpec"},"type":"array","uniqueItems":true}}},"v1AppProfilesMetadata":{"properties":{"appProfiles":{"items":{"$ref":"#/definitions/v1AppProfileMetadata"},"type":"array","uniqueItems":true}},"type":"object"},"v1AppProfilesSummary":{"properties":{"appProfiles":{"items":{"$ref":"#/definitions/v1AppProfileSummary"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"type":"object"},"v1AppTier":{"properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1AppTierSpec"}}},"v1AppTierEntity":{"description":"Application tier request payload","properties":{"containerRegistryUid":{"description":"Application tier container registry uid","type":"string"},"installOrder":{"description":"Application tier installation order","format":"int32","type":"integer"},"manifests":{"description":"Application tier manifests","items":{"$ref":"#/definitions/v1ManifestInputEntity"},"type":"array"},"name":{"description":"Application tier name","type":"string"},"properties":{"description":"Application tier properties","items":{"$ref":"#/definitions/v1AppTierPropertyEntity"},"type":"array"},"registryUid":{"description":"Application tier registry uid","type":"string"},"sourceAppTierUid":{"description":"Application tier source pack uid","type":"string"},"type":{"$ref":"#/definitions/v1AppTierType"},"values":{"description":"Application tier configuration values in yaml format","type":"string"},"version":{"description":"Application tier version","type":"string"}},"required":["name"],"type":"object"},"v1AppTierManifests":{"description":"Application tier manifests data","properties":{"manifests":{"description":"Application tier manifests array","items":{"$ref":"#/definitions/v1Manifest"},"type":"array"}}},"v1AppTierPatchEntity":{"description":"Application tier patch request payload","properties":{"appTier":{"$ref":"#/definitions/v1AppTierEntity"},"replaceWithAppTier":{"description":"Application tier UID to be replaced with new tier","type":"string"}}},"v1AppTierProperty":{"description":"Application tier property object","properties":{"format":{"description":"Application tier property format","type":"string"},"name":{"description":"Application tier property name","type":"string"},"type":{"description":"Application tier property data type","type":"string"},"value":{"description":"Application tier property value","type":"string"}}},"v1AppTierPropertyEntity":{"description":"Application tier property object","properties":{"name":{"description":"Application tier property name","type":"string"},"value":{"description":"Application tier property value","type":"string"}}},"v1AppTierRef":{"description":"Application tier reference","properties":{"name":{"description":"Application tier name","type":"string"},"type":{"$ref":"#/definitions/v1AppTierType"},"uid":{"description":"Application tier uid to uniquely identify the tier","type":"string"},"version":{"description":"Application tier version","type":"string"}},"type":"object"},"v1AppTierResolvedValues":{"description":"Application tier resolved macro values","properties":{"resolved":{"additionalProperties":{"type":"string"},"description":"Application tier resolved macro values map","type":"object"}}},"v1AppTierSourceSummary":{"description":"Application profile's tier source information","properties":{"addonSubType":{"type":"string"},"addonType":{"type":"string"},"logoUrl":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"uid":{"type":"string"}}},"v1AppTierSpec":{"description":"Application tier specs","properties":{"containerRegistryUid":{"description":"Application tier container registry uid","type":"string"},"installOrder":{"description":"Application tier installation order","format":"int32","type":"integer"},"manifests":{"description":"Application tier attached manifest content in yaml format","items":{"$ref":"#/definitions/v1ObjectReference"},"type":"array"},"properties":{"description":"Application tier properties","items":{"$ref":"#/definitions/v1AppTierProperty"},"type":"array"},"registryUid":{"description":"Registry uid","type":"string"},"sourceAppTierUid":{"description":"Application tier source pack uid","type":"string"},"type":{"$ref":"#/definitions/v1AppTierType","description":"Application tier type"},"values":{"description":"Application tier configuration values in yaml format","type":"string"},"version":{"description":"Application tier version","type":"string"}},"type":"object"},"v1AppTierSummary":{"description":"Application profile's tier summary","properties":{"name":{"type":"string"},"source":{"$ref":"#/definitions/v1AppTierSourceSummary"},"type":{"type":"string"},"uid":{"type":"string"},"version":{"type":"string"}}},"v1AppTierType":{"default":"manifest","enum":["manifest","helm","operator-instance","container"],"type":"string"},"v1AppTierUpdateEntity":{"description":"Application tier update request payload","properties":{"containerRegistryUid":{"description":"Application tier container registry uid","type":"string"},"installOrder":{"description":"Application tier installation order","format":"int32","type":"integer"},"manifests":{"description":"Application tier manifests","items":{"$ref":"#/definitions/v1ManifestRefUpdateEntity"},"type":"array"},"name":{"description":"Application tier name","type":"string"},"properties":{"description":"Application tier properties","items":{"$ref":"#/definitions/v1AppTierPropertyEntity"},"type":"array"},"values":{"description":"Application tier configuration values in yaml format","type":"string"},"version":{"description":"Application tier version","type":"string"}},"type":"object"},"v1AppVersion":{"description":"spectro application management app version information","properties":{"intermediateVersions":{"items":{"$ref":"#/definitions/v1ReleaseVersion"},"type":"array","uniqueItems":true},"latestVerson":{"$ref":"#/definitions/v1ReleaseVersion"}}},"v1ArchType":{"default":"amd64","enum":["amd64","arm64"],"type":"string"},"v1AsyncOperationIdEntity":{"description":"Async operation id","properties":{"operationId":{"description":"OperationId for a particular sync operation id","type":"string"}},"type":"object"},"v1AsyncResult":{"properties":{"data":{"type":"object"},"error":{"type":"string"},"isSuccess":{"type":"boolean"}},"type":"object"},"v1AsyncStatus":{"properties":{"endTime":{"$ref":"#/definitions/v1Time"},"result":{"$ref":"#/definitions/v1AsyncResult","type":"object"},"stage":{"type":"string"},"startTime":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1Audit":{"description":"Audit response payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1AuditSpec"}},"type":"object"},"v1AuditActor":{"description":"Audit actor object","properties":{"actorType":{"enum":["user","system","service"],"type":"string"},"project":{"$ref":"#/definitions/v1ProjectMeta"},"serviceName":{"type":"string"},"user":{"$ref":"#/definitions/v1UserMeta"}}},"v1AuditMsgUpdate":{"description":"Audit user message update request payload","properties":{"userMsg":{"description":"User message","maxLength":255,"minLength":3,"type":"string"}},"type":"object"},"v1AuditResourceReference":{"description":"Audit resource reference object","properties":{"kind":{"description":"Audit resource type","type":"string"},"label":{"description":"Audit resource label","type":"string"},"name":{"description":"Audit resource name","type":"string"},"uid":{"description":"Audit resource uid","type":"string"}},"required":["uid"],"type":"object"},"v1AuditSpec":{"description":"Audit specifications","properties":{"actionMsg":{"description":"Audit action message","type":"string"},"actionType":{"enum":["create","update","delete","publish","deploy"],"type":"string"},"actor":{"$ref":"#/definitions/v1AuditActor"},"contentMsg":{"description":"Audit content message","type":"string"},"resource":{"$ref":"#/definitions/v1AuditResourceReference"},"userMsg":{"description":"Audit user message","type":"string"}}},"v1AuditSysMsg":{"description":"Audit system message","properties":{"actionMsg":{"description":"Audit resource action message","type":"string"},"contentMsg":{"description":"Audit resource content message","type":"string"}},"type":"object"},"v1Audits":{"properties":{"items":{"description":"List of audit message","items":{"$ref":"#/definitions/v1Audit"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1AuthAllyTokenRequest":{"properties":{"edgeAuthToken":{"type":"string"},"edgeHostUid":{"type":"string"},"spectroClusterUid":{"type":"string"}},"type":"object"},"v1AuthCertsGet":{"description":"Auth certs get","properties":{"caCert":{"type":"string","x-omitempty":false},"insecureSkipVerify":{"type":"boolean","x-omitempty":false}}},"v1AuthEdgeJetKeyRequest":{"properties":{"edgeAuthToken":{"type":"string"},"edgeHostUid":{"type":"string"},"spectroClusterUid":{"type":"string"}},"required":["edgeAuthToken","edgeHostUid"],"type":"object"},"v1AuthJetKeyRequest":{"properties":{"allyAuthToken":{"type":"string"},"hostClusterUid":{"type":"string"}},"required":["allyAuthToken","hostClusterUid"],"type":"object"},"v1AuthLogin":{"description":"Describes the credential details required for authentication","properties":{"emailId":{"description":"Describes the email id required for the user to authenticate","type":"string"},"org":{"description":"Describes the user's organization name to login","type":"string"},"password":{"description":"Describes the password required for the user to authenticate","format":"password","type":"string"}},"type":"object"},"v1AuthLoginEntity":{"description":"Auth login entity","properties":{"authType":{"enum":["password","sso"],"type":"string"},"orgName":{"type":"string"},"redirectUrl":{"type":"string","x-omitempty":false}},"type":"object"},"v1AuthLogins":{"description":"Deprecated. Applicable auth logins with multiple orgs","properties":{"appEnv":{"type":"string"},"authType":{"description":"Deprecated.","enum":["password","sso"],"type":"string"},"orgName":{"description":"Deprecated.","type":"string"},"orgs":{"items":{"$ref":"#/definitions/v1AuthLoginEntity"},"type":"array"},"redirectUrl":{"description":"Deprecated.","type":"string","x-omitempty":false}},"type":"object"},"v1AuthMfaLoginFinishRequest":{"properties":{"_type":{"type":"string"},"authenticatorAttachment":{"type":"string"},"clientExtensionResults":{"additionalProperties":{"type":"object"},"type":"object"},"deviceName":{"type":"string"},"id":{"type":"string"},"rawId":{"$ref":"#/definitions/urlEncodedBase64"},"response":{"properties":{"authenticatorData":{"$ref":"#/definitions/urlEncodedBase64"},"clientDataJSON":{"$ref":"#/definitions/urlEncodedBase64"},"signature":{"$ref":"#/definitions/urlEncodedBase64"},"userHandle":{"$ref":"#/definitions/urlEncodedBase64"}},"type":"object"}},"type":"object"},"v1AuthServiceTokenRequest":{"properties":{"authKey":{"type":"string"},"edgeHostUid":{"type":"string"},"hostClusterUid":{"type":"string"},"isSystem":{"type":"boolean"},"jetUid":{"type":"string"},"overlordUid":{"type":"string"},"serviceVersion":{"type":"string"},"spectroClusterUid":{"type":"string"},"tenantUid":{"type":"string"}},"type":"object"},"v1AuthServiceTokenResponse":{"properties":{"token":{"type":"string"}},"type":"object"},"v1AuthShellyLoginRequest":{"properties":{"secret":{"type":"string"}},"type":"object"},"v1AuthToken":{"properties":{"token":{"type":"string"}},"type":"object"},"v1AuthTokenRevoke":{"properties":{"tokens":{"items":{"type":"string"},"type":"array","uniqueItems":true}}},"v1AuthTokenSettings":{"description":"System auth token settings","properties":{"expiryTimeMinutes":{"description":"Auth token expiry time in minutes","format":"int32","maximum":1440,"minimum":15,"type":"integer","x-omitempty":false}}},"v1AwsAMI":{"properties":{"id":{"type":"string"},"os":{"type":"string"},"region":{"type":"string"},"state":{"type":"string"}},"type":"object"},"v1AwsAccount":{"description":"Aws cloud account information","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the account.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1AwsCloudAccount"},"status":{"$ref":"#/definitions/v1CloudAccountStatus"}},"type":"object"},"v1AwsAccounts":{"description":"List of AWS accounts","properties":{"items":{"items":{"$ref":"#/definitions/v1AwsAccount"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1AwsAmiReference":{"description":"AMI is the reference to the AMI from which to create the machine instance","properties":{"eksOptimizedLookupType":{"description":"EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store","enum":["AmazonLinux","AmazonLinuxGPU"],"type":"string"},"id":{"description":"ID of resource","type":"string"}},"type":"object"},"v1AwsAvailabilityZone":{"description":"Distinct locations within an AWS Region that are engineered to be isolated from failures in other Zones","properties":{"name":{"description":"AWS availability zone name","type":"string"},"state":{"description":"AWS availability zone state","type":"string"},"zoneId":{"description":"AWS availability zone id","type":"string"}},"type":"object"},"v1AwsAvailabilityZones":{"properties":{"zones":{"description":"List of AWS Zones","items":{"$ref":"#/definitions/v1AwsAvailabilityZone"},"type":"array"}},"required":["zones"],"type":"object"},"v1AwsCloudAccount":{"description":"AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects","properties":{"accessKey":{"description":"AWS account access key","type":"string"},"credentialType":{"$ref":"#/definitions/v1AwsCloudAccountCredentialType"},"partition":{"default":"aws","description":"AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values","enum":["aws","aws-us-gov"],"type":"string"},"policyARNs":{"description":"List of policy ARNs required in case of credentialType sts.","items":{"type":"string"},"type":"array"},"secretKey":{"description":"AWS account secret key","type":"string"},"sts":{"$ref":"#/definitions/v1AwsStsCredentials","description":"AWS STS credentials in case of credentialType sts, will be empty in case of credential type secret"}},"type":"object"},"v1AwsCloudAccountCredentialType":{"default":"secret","description":"Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.","enum":["secret","sts"],"type":"string"},"v1AwsCloudClusterConfigEntity":{"description":"AWS cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1AwsClusterConfig"}},"type":"object"},"v1AwsCloudConfig":{"description":"AwsCloudConfig is the Schema for the awscloudconfigs API","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Cloud type of the cloud config","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1AwsCloudConfigSpec"},"status":{"$ref":"#/definitions/v1AwsCloudConfigStatus"}},"type":"object"},"v1AwsCloudConfigSpec":{"description":"AwsCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api","properties":{"cloudAccountRef":{"$ref":"#/definitions/v1ObjectReference","description":"cloudAccountRef should point to the secret which contains AwsCloudAccount"},"clusterConfig":{"$ref":"#/definitions/v1AwsClusterConfig"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1AwsMachinePoolConfig"},"type":"array"}},"type":"object"},"v1AwsCloudConfigStatus":{"description":"AwsCloudConfigStatus defines the observed state of AwsCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool","properties":{"ansibleRoleDigest":{"description":"For mold controller to identify if is there any changes in Pack","type":"string"},"conditions":{"items":{"$ref":"#/definitions/v1ClusterCondition"},"type":"array"},"images":{"description":"Images array items should be 1-to-1 mapping to Spec.MachinePoolConfig","items":{"$ref":"#/definitions/v1AwsAMI"},"type":"array"},"isAddonLayer":{"description":"addon layers present in spc","type":"boolean"},"roleDigest":{"additionalProperties":{"type":"string"},"description":"this map will be for ansible roles present in eack pack","type":"object"},"sourceImageId":{"description":"sourceImageId, it can be from packref's annotations or from pack.json","type":"string"},"useCapiImage":{"description":"PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add","type":"boolean"}},"type":"object"},"v1AwsCloudCostSpec":{"description":"Aws cloud account usage cost payload spec","properties":{"accountId":{"description":"AccountId of AWS cloud cost","type":"string"},"credentials":{"$ref":"#/definitions/v1AwsCloudAccount"},"filter":{"$ref":"#/definitions/v1AwsCloudCostSpecFilter"}},"required":["credentials"],"type":"object"},"v1AwsCloudCostSpecFilter":{"description":"Aws cloud account usage cost payload filter. startTime and endTime should be within 12 months range from now.","properties":{"endTime":{"$ref":"#/definitions/v1Time"},"iamUserId":{"description":"IAM UserId of AWS account","type":"string"},"startTime":{"$ref":"#/definitions/v1Time"}},"required":["startTime"],"type":"object"},"v1AwsCloudCostSummary":{"description":"AWS cloud account usage cost summary response data","properties":{"cost":{"$ref":"#/definitions/v1AwsCloudCostSummaryCloudCost"}},"type":"object"},"v1AwsCloudCostSummaryCloudCost":{"description":"AWS cloud account usage cost summary of monthlyCosts and totalCost","properties":{"monthlyCosts":{"description":"Monthly cost of AWS cost","items":{"$ref":"#/definitions/v1AwsCloudCostSummaryMonthlyCost"},"type":"array"},"total":{"description":"Total cost of AWS cost","format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1AwsCloudCostSummaryMonthlyCost":{"properties":{"amount":{"description":"Amount for aws cloud cost","format":"float64","type":"number","x-omitempty":false},"timestamp":{"description":"Time duration for aws cloud cost","type":"integer"}},"type":"object"},"v1AwsClusterConfig":{"description":"Cluster level configuration for aws cloud and applicable for all the machine pools","properties":{"bastionDisabled":{"description":"Create bastion node option we have earlier supported creation of bastion by default capa seems to favour session manager against bastion node https://github.com/kubernetes-sigs/cluster-api-provider-aws/issues/947","type":"boolean"},"controlPlaneLoadBalancer":{"description":"ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"","type":"string"},"region":{"type":"string"},"sshKeyName":{"type":"string"},"vpcId":{"description":"VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created","type":"string"}},"required":["region"],"type":"object"},"v1AwsCreditAccount":{"properties":{"creditLimitInDollars":{"format":"float64","type":"number"},"loginCredentials":{"$ref":"#/definitions/v1AwsLoginCredentials"},"userCloudAccount":{"$ref":"#/definitions/v1AwsUserCloudAccount"}},"type":"object"},"v1AwsCreditAccountEntity":{"properties":{"creditLimitInDollars":{"format":"float64","type":"number","x-omitempty":false},"creditUsedInDollars":{"format":"float64","type":"number","x-omitempty":false},"loginCredentials":{"$ref":"#/definitions/v1AwsLoginCredentials"},"userCloudAccount":{"$ref":"#/definitions/v1AwsUserCloudAccount"}},"type":"object"},"v1AwsFindImageRequest":{"description":"AWS image name and credentials","properties":{"amiName":{"description":"AWS image ami name","type":"string"},"awsAccount":{"$ref":"#/definitions/v1AwsCloudAccount"}},"type":"object"},"v1AwsIamPolicy":{"description":"Aws policy","properties":{"arn":{"type":"string"},"policyId":{"type":"string"},"policyName":{"type":"string"}},"type":"object"},"v1AwsImage":{"description":"AWS image name and ami","properties":{"id":{"description":"AWS image id","type":"string"},"name":{"description":"AWS image name","type":"string"},"owner":{"description":"AWS image owner id","type":"string"}},"type":"object"},"v1AwsInstanceTypes":{"description":"List of AWS instance types","properties":{"instanceTypes":{"items":{"$ref":"#/definitions/v1InstanceType"},"type":"array"}},"type":"object"},"v1AwsKeyPairs":{"description":"List of AWS keypairs","properties":{"keyNames":{"description":"Array of Aws Keypair names","items":{"type":"string"},"type":"array"}},"type":"object"},"v1AwsKmsKey":{"description":"AWS KMS Key - gives you centralized control over the cryptographic keys used to protect your data.","properties":{"keyAlias":{"description":"AWS KMS alias","type":"string"},"keyArn":{"description":"AWS KMS arn","type":"string"},"keyId":{"description":"AWS KMS keyid","type":"string"}},"required":["keyId","keyArn"],"type":"object"},"v1AwsKmsKeyEntity":{"description":"List of AWS Keys","properties":{"awsAccountId":{"description":"The twelve-digit account ID of the Amazon Web Services account that owns the KMS key","type":"string"},"enabled":{"description":"Specifies whether the KMS key is enabled.","type":"boolean"},"keyId":{"description":"The globally unique identifier for the KMS key","type":"string"}},"type":"object"},"v1AwsKmsKeys":{"description":"List of AWS Keys","properties":{"kmsKeys":{"items":{"$ref":"#/definitions/v1AwsKmsKey"},"type":"array"}},"required":["kmsKeys"],"type":"object"},"v1AwsLaunchTemplate":{"description":"AWSLaunchTemplate specifies the launch template to use to create the managed node group","properties":{"additionalSecurityGroups":{"description":"AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances","items":{"$ref":"#/definitions/v1AwsResourceReference"},"type":"array","uniqueItems":true},"ami":{"$ref":"#/definitions/v1AwsAmiReference"},"imageLookupBaseOS":{"description":"ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set","type":"string"},"imageLookupFormat":{"description":"ImageLookupFormat is the AMI naming format to look up the image","type":"string"},"imageLookupOrg":{"description":"ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set","type":"string"},"rootVolume":{"$ref":"#/definitions/v1AwsRootVolume"}},"type":"object"},"v1AwsLoginCredentials":{"properties":{"iamUser":{"type":"string"},"password":{"format":"password","type":"string"}},"type":"object"},"v1AwsMachine":{"description":"AWS cloud VM definition","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the machine.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1AwsMachineSpec"},"status":{"$ref":"#/definitions/v1CloudMachineStatus"}},"type":"object"},"v1AwsMachinePoolCloudConfigEntity":{"properties":{"additionalSecurityGroups":{"description":"Additional Security groups","items":{"$ref":"#/definitions/v1AwsResourceReference"},"type":"array"},"azs":{"items":{"type":"string"},"type":"array"},"capacityType":{"default":"on-demand","description":"EC2 instance capacity type","enum":["on-demand","spot"],"type":"string"},"instanceType":{"description":"instance type","type":"string"},"rootDeviceSize":{"description":"rootDeviceSize in GBs","format":"int64","maximum":2000,"minimum":1,"type":"integer"},"spotMarketOptions":{"$ref":"#/definitions/v1SpotMarketOptions","description":"SpotMarketOptions allows users to configure instances to be run using AWS Spot instances."},"subnets":{"items":{"$ref":"#/definitions/v1AwsSubnetEntity"},"type":"array"}},"required":["instanceType"],"type":"object"},"v1AwsMachinePoolConfig":{"properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"additionalLabels","type":"object"},"additionalSecurityGroups":{"description":"Additional Security groups","items":{"$ref":"#/definitions/v1AwsResourceReference"},"type":"array"},"additionalTags":{"additionalProperties":{"type":"string"},"description":"AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole","type":"object"},"azs":{"description":"AZs is only used for dynamic placement","items":{"type":"string"},"type":"array"},"capacityType":{"default":"on-demand","description":"EC2 instance capacity type","enum":["on-demand","spot"],"type":"string"},"instanceConfig":{"$ref":"#/definitions/v1InstanceConfig"},"instanceType":{"description":"instance type","type":"string"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean","x-omitempty":false},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"machinePoolProperties":{"$ref":"#/definitions/v1MachinePoolProperties"},"maxSize":{"description":"max size of the pool, for scaling","format":"int32","type":"integer"},"minSize":{"description":"min size of the pool, for scaling","format":"int32","type":"integer"},"name":{"type":"string"},"nodeRepaveInterval":{"description":"Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster","format":"int32","type":"integer"},"rootDeviceSize":{"description":"rootDeviceSize in GBs","format":"int64","type":"integer"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"spotMarketOptions":{"$ref":"#/definitions/v1SpotMarketOptions","description":"SpotMarketOptions allows users to configure instances to be run using AWS Spot instances."},"subnetIds":{"additionalProperties":{"type":"string"},"description":"AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment","type":"object"},"taints":{"description":"master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array","uniqueItems":true},"updateStrategy":{"$ref":"#/definitions/v1UpdateStrategy","description":"rolling update strategy for this machinepool if not specified, will use ScaleOut"},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean","x-omitempty":false}},"required":["isControlPlane"],"type":"object"},"v1AwsMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1AwsMachinePoolCloudConfigEntity"},"poolConfig":{"$ref":"#/definitions/v1MachinePoolConfigEntity"}},"required":["cloudConfig"],"type":"object"},"v1AwsMachineSpec":{"description":"AWS cloud VM definition spec","properties":{"additionalSecurityGroups":{"description":"Additional Security groups","items":{"$ref":"#/definitions/v1AwsResourceReference"},"type":"array"},"ami":{"type":"string"},"az":{"type":"string"},"dnsName":{"type":"string"},"iamProfile":{"type":"string"},"instanceType":{"type":"string"},"nics":{"items":{"$ref":"#/definitions/v1AwsNic"},"type":"array"},"phase":{"type":"string"},"sshKeyName":{"type":"string"},"subnetId":{"type":"string"},"type":{"type":"string"},"vpcId":{"type":"string"}},"required":["instanceType","vpcId","ami"],"type":"object"},"v1AwsMachines":{"description":"AWS machine list","properties":{"items":{"items":{"$ref":"#/definitions/v1AwsMachine"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1AwsNic":{"description":"AWS network interface","properties":{"index":{"format":"int8","type":"integer"},"privateIPs":{"items":{"type":"string"},"type":"array"},"publicIp":{"type":"string"}},"type":"object"},"v1AwsPartition":{"default":"aws","description":"AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values","enum":["aws","aws-us-gov"],"type":"string"},"v1AwsPolicies":{"properties":{"policies":{"items":{"$ref":"#/definitions/v1AwsIamPolicy"},"type":"array"}},"required":["policies"],"type":"object"},"v1AwsPolicyArnsSpec":{"description":"Aws policy ARNs spec","properties":{"account":{"$ref":"#/definitions/v1AwsCloudAccount"},"policyArns":{"items":{"type":"string"},"type":"array"}},"required":["policyArns","account"],"type":"object"},"v1AwsRegion":{"description":"AWS region which represents separate geographic area.","properties":{"endpoint":{"description":"AWS offer a regional endpoint that can used to make requests","type":"string"},"name":{"description":"Name of the AWS region","type":"string"},"optInStatus":{"description":"Enable your account to operate in the particular regions","type":"string"}},"type":"object"},"v1AwsRegions":{"properties":{"regions":{"description":"List of AWS regions","items":{"$ref":"#/definitions/v1AwsRegion"},"type":"array"}},"required":["regions"],"type":"object"},"v1AwsResourceFilter":{"description":"Filter is a filter used to identify an AWS resource","properties":{"name":{"description":"Name of the filter. Filter names are case-sensitive","type":"string"},"values":{"description":"Values includes one or more filter values. Filter values are case-sensitive","items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1AwsResourceReference":{"description":"AWSResourceReference is a reference to a specific AWS resource by ID or filters","properties":{"arn":{"description":"ARN of resource","type":"string"},"filters":{"description":"Filters is a set of key/value pairs used to identify a resource","items":{"$ref":"#/definitions/v1AwsResourceFilter"},"type":"array","uniqueItems":true},"id":{"description":"ID of resource","type":"string"}},"type":"object"},"v1AwsRootVolume":{"description":"Volume encapsulates the configuration options for the storage device.","properties":{"deviceName":{"description":"Device name","type":"string"},"encrypted":{"description":"EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN","type":"boolean"},"encryptionKey":{"description":"EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN","type":"string"},"iops":{"description":"IOPS is the number of IOPS requested for the disk. Not applicable to all types","format":"int64","type":"integer"},"throughput":{"description":"Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.","format":"int64","type":"integer"},"type":{"description":"Type is the type of the volume (e.g. gp2, io1, etc...)","type":"string"}},"type":"object"},"v1AwsS3BucketCredentials":{"description":"AWS S3 Bucket credentials","properties":{"bucket":{"description":"Name of AWS S3 bucket","type":"string"},"credentials":{"$ref":"#/definitions/v1AwsCloudAccount"},"folder":{"description":"Name of the folder in the specified AWS S3 bucket.","type":"string"},"region":{"description":"Name of the available AWS region.","type":"string"}},"required":["credentials","bucket","region"],"type":"object"},"v1AwsSecurityGroups":{"properties":{"groups":{"items":{"$ref":"#/definitions/v1AwsSecuritygroup"},"type":"array"}},"required":["groups"],"type":"object"},"v1AwsSecuritygroup":{"description":"Aws security group","properties":{"groupId":{"type":"string"},"groupName":{"type":"string"},"ownerId":{"type":"string"}},"type":"object"},"v1AwsStorageTypes":{"properties":{"storageTypes":{"description":"List of AWS storage types","items":{"$ref":"#/definitions/v1StorageType"},"type":"array"}},"type":"object"},"v1AwsStsCredentials":{"description":"Aws sts credentials","properties":{"arn":{"description":"Arn for the aws sts credentials in cloud account","type":"string"},"externalId":{"description":"ExternalId for the aws sts credentials in cloud account","type":"string"}},"type":"object"},"v1AwsSubnet":{"description":"A subnet is a range of IP addresses in a AWS VPC","properties":{"az":{"description":"Every subnet can only be associated with only one Availability Zone","type":"string"},"isPrivate":{"description":"Is this subnet private","type":"boolean"},"mapPublicIpOnLaunch":{"description":"Indicates whether instances launched in this subnet receive a public IPv4 address.","type":"boolean","x-omitempty":false},"name":{"description":"Name of the subnet","type":"string"},"subnetId":{"description":"Id of the subnet","type":"string"}}},"v1AwsSubnetEntity":{"properties":{"az":{"type":"string"},"id":{"type":"string"}}},"v1AwsUserCloudAccount":{"properties":{"accountId":{"type":"string"},"cloudAccount":{"$ref":"#/definitions/v1AwsCloudAccount"}}},"v1AwsVolumeSize":{"description":"AWS Volume Size entity","properties":{"sizeGB":{"description":"AWS volume size","type":"integer"}},"type":"object"},"v1AwsVolumeType":{"description":"AWS Volume Type entity","properties":{"id":{"description":"AWS volume type id","type":"string"},"maxIops":{"description":"Iops through put of volume type","type":"string"},"maxThroughPut":{"description":"Max through put of volume type","type":"string"},"name":{"description":"AWS Volume Type Name","type":"string"}},"type":"object"},"v1AwsVpc":{"description":"A virtual network dedicated to a AWS account","properties":{"cidrBlock":{"type":"string"},"name":{"description":"Name of the virtual network","type":"string"},"subnets":{"description":"List of subnets associated to a AWS VPC","items":{"$ref":"#/definitions/v1AwsSubnet"},"type":"array"},"vpcId":{"description":"Id of the virtual network","type":"string"}},"required":["vpcId"],"type":"object"},"v1AwsVpcs":{"description":"List of AWS VPCs","properties":{"vpcs":{"items":{"$ref":"#/definitions/v1AwsVpc"},"type":"array"}},"required":["vpcs"],"type":"object"},"v1AzValidateEntity":{"description":"Az validate entity","properties":{"azs":{"description":"Gcp Azs","items":{"type":"string"},"type":"array"},"project":{"description":"Gcp project","type":"string"},"region":{"description":"Gcp region","type":"string"},"uid":{"description":"Cloud account uid","type":"string"}},"type":"object"},"v1AzureAccount":{"description":"Azure account information","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the account.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1AzureCloudAccount"},"status":{"$ref":"#/definitions/v1CloudAccountStatus"}},"type":"object"},"v1AzureAccounts":{"properties":{"items":{"items":{"$ref":"#/definitions/v1AzureAccount"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1AzureAvailabilityZone":{"description":"Azure availability zone","properties":{"name":{"description":"Azure availability zone name","type":"string"}},"type":"object"},"v1AzureCloudAccount":{"properties":{"azureEnvironment":{"default":"AzurePublicCloud","description":"Contains configuration for Azure cloud","enum":["AzureChinaCloud","AzurePublicCloud","AzureUSGovernment","AzureUSGovernmentCloud"],"type":"string"},"clientId":{"description":"Client ID(Directory ID) is a unique identifier generated by Azure AD that is tied to an application","type":"string"},"clientSecret":{"description":"ClientSecret is the secret associated with Client","type":"string"},"settings":{"$ref":"#/definitions/v1CloudAccountSettings","description":"Palette internal cloud settings"},"tenantId":{"description":"Tenant ID is the ID for the Azure AD tenant that the user belongs to.","type":"string"},"tenantName":{"description":"Tenant ID is the ID for the Azure AD tenant that the user belongs to.","type":"string"}},"required":["tenantId","clientId","clientSecret"],"type":"object"},"v1AzureCloudClusterConfigEntity":{"description":"Azure cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1AzureClusterConfig"}},"type":"object"},"v1AzureCloudConfig":{"description":"AzureCloudConfig is the Schema for the azurecloudconfigs API","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Cloud type of the cloud config","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1AzureCloudConfigSpec"},"status":{"$ref":"#/definitions/v1AzureCloudConfigStatus"}},"type":"object"},"v1AzureCloudConfigSpec":{"description":"AzureCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api","properties":{"cloudAccountRef":{"$ref":"#/definitions/v1ObjectReference","description":"cloudAccountRef should point to the secret which contains AzureCloudAccount"},"clusterConfig":{"$ref":"#/definitions/v1AzureClusterConfig"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1AzureMachinePoolConfig"},"type":"array"}},"type":"object"},"v1AzureCloudConfigStatus":{"description":"AzureCloudConfigStatus defines the observed state of AzureCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool","properties":{"ansibleRoleDigest":{"description":"For mold controller to identify if is there any changes in Pack","type":"string"},"conditions":{"description":"spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`","items":{"$ref":"#/definitions/v1ClusterCondition"},"type":"array"},"images":{"$ref":"#/definitions/v1AzureImage","description":"Images array items should be 1-to-1 mapping to Spec.MachinePoolConfig"},"isAddonLayer":{"description":"addon layers present in spc","type":"boolean"},"roleDigest":{"additionalProperties":{"type":"string"},"description":"this map will be for ansible roles present in eack pack","type":"object"},"sourceImageId":{"description":"sourceImageId, it can be from packref's annotations or from pack.json","type":"string"},"useCapiImage":{"description":"PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add","type":"boolean"},"vhdImage":{"$ref":"#/definitions/v1AzureVHDImage"}},"type":"object"},"v1AzureClusterConfig":{"description":"Cluster level configuration for Azure cloud and applicable for all the machine pools","properties":{"aadProfile":{"$ref":"#/definitions/v1AADProfile","description":"AadProfile is Azure Active Directory configuration to integrate with AKS for aad authentication."},"apiServerAccessProfile":{"$ref":"#/definitions/v1APIServerAccessProfile","description":"APIServerAccessProfile is the access profile for AKS API server."},"containerName":{"type":"string"},"controlPlaneSubnet":{"$ref":"#/definitions/v1Subnet","description":"Subnet for Kubernetes control-plane node"},"enablePrivateCluster":{"description":"Deprecated. use apiServerAccessProfile.enablePrivateCluster","type":"boolean"},"infraLBConfig":{"$ref":"#/definitions/v1InfraLBConfig","description":"APIServerLB is the configuration for the control-plane load balancer."},"location":{"description":"Location is the Azure datacenter location","type":"string"},"resourceGroup":{"type":"string"},"sshKey":{"type":"string"},"storageAccountName":{"type":"string"},"subscriptionId":{"description":"Subscription ID is unique identifier for the subscription used to access Azure services","type":"string"},"vnetCidrBlock":{"type":"string"},"vnetName":{"description":"VNETName is the virtual network in which the cluster is to be provisioned.","type":"string"},"vnetResourceGroup":{"type":"string"},"workerSubnet":{"$ref":"#/definitions/v1Subnet","description":"Subnet for Kubernetes worker node"}},"required":["subscriptionId","location","sshKey"],"type":"object"},"v1AzureGroup":{"description":"Azure group entity","properties":{"id":{"description":"Azure group id","type":"string"},"name":{"description":"Azure group name","type":"string"}},"type":"object"},"v1AzureGroups":{"description":"List of Azure groups","properties":{"groups":{"items":{"$ref":"#/definitions/v1AzureGroup"},"type":"array"}},"required":["groups"],"type":"object"},"v1AzureImage":{"description":"Refers to Azure Shared Gallery image","properties":{"gallery":{"type":"string"},"name":{"type":"string"},"resourceGroup":{"type":"string"},"state":{"type":"string"},"subscriptionID":{"type":"string"},"version":{"type":"string"}},"type":"object"},"v1AzureInstanceTypes":{"description":"List of Azure instance types","properties":{"instanceTypes":{"items":{"$ref":"#/definitions/v1InstanceType"},"type":"array"}},"type":"object"},"v1AzureMachine":{"description":"Azure cloud VM definition","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the machine.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1AzureMachineSpec"},"status":{"$ref":"#/definitions/v1CloudMachineStatus"}},"type":"object"},"v1AzureMachinePoolCloudConfigEntity":{"properties":{"azs":{"items":{"type":"string"},"type":"array"},"instanceType":{"description":"Instance type stands for VMSize in Azure","type":"string"},"isSystemNodePool":{"description":"whether this pool is for system node Pool","type":"boolean"},"osDisk":{"$ref":"#/definitions/v1AzureOSDisk"}},"type":"object"},"v1AzureMachinePoolConfig":{"properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"additionalLabels","type":"object"},"additionalTags":{"additionalProperties":{"type":"string"},"description":"AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole","type":"object"},"azs":{"items":{"type":"string"},"type":"array"},"instanceConfig":{"$ref":"#/definitions/v1InstanceConfig"},"instanceType":{"description":"Instance type stands for VMSize in Azure","type":"string"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean","x-omitempty":false},"isSystemNodePool":{"description":"whether this pool is for system node Pool","type":"boolean","x-omitempty":false},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"machinePoolProperties":{"$ref":"#/definitions/v1MachinePoolProperties"},"maxSize":{"description":"max size of the pool, for scaling","format":"int32","type":"integer"},"minSize":{"description":"min size of the pool, for scaling","format":"int32","type":"integer"},"name":{"type":"string"},"nodeRepaveInterval":{"description":"Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster","format":"int32","type":"integer"},"osDisk":{"$ref":"#/definitions/v1AzureOSDisk"},"osType":{"$ref":"#/definitions/v1OsType","type":"string"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"spotVMOptions":{"$ref":"#/definitions/v1SpotVMOptions","description":"SpotVMOptions allows the ability to specify the Machine should use a Spot VM"},"taints":{"description":"master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array","uniqueItems":true},"updateStrategy":{"$ref":"#/definitions/v1UpdateStrategy","description":"rolling update strategy for this machinepool if not specified, will use ScaleOut"},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean","x-omitempty":false}},"required":["isControlPlane"],"type":"object"},"v1AzureMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1AzureMachinePoolCloudConfigEntity"},"managedPoolConfig":{"$ref":"#/definitions/v1AzureManagedMachinePoolConfig"},"poolConfig":{"$ref":"#/definitions/v1MachinePoolConfigEntity"}},"required":["cloudConfig"],"type":"object"},"v1AzureMachineSpec":{"description":"Azure cloud VM definition spec","properties":{"additionalTags":{"additionalProperties":{"type":"string"},"type":"object"},"allocatePublicIP":{"type":"boolean"},"availabilityZone":{"$ref":"#/definitions/v1AzureMachineSpecAvailabilityZone"},"image":{"$ref":"#/definitions/v1AzureMachineSpecImage"},"instanceType":{"type":"string"},"location":{"type":"string"},"nics":{"items":{"$ref":"#/definitions/v1AzureNic"},"type":"array"},"osDisk":{"$ref":"#/definitions/v1AzureOSDisk"},"sshPublicKey":{"type":"string"}},"required":["instanceType","location","osDisk"],"type":"object"},"v1AzureMachineSpecAvailabilityZone":{"description":"Azure Machine Spec Availability zone","properties":{"enabled":{"type":"boolean"},"id":{"type":"string"}},"type":"object"},"v1AzureMachineSpecImage":{"description":"Azure Machine Spec Image","properties":{"gallery":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"offer":{"type":"string"},"publisher":{"type":"string"},"resourceGroup":{"type":"string"},"sku":{"type":"string"},"subscriptionId":{"type":"string"},"version":{"type":"string"}},"type":"object"},"v1AzureMachines":{"description":"Azure machine list","properties":{"items":{"items":{"$ref":"#/definitions/v1AzureMachine"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1AzureManagedMachinePoolConfig":{"properties":{"isSystemNodePool":{"description":"whether this pool is for system node Pool","type":"boolean","x-omitempty":false},"osType":{"$ref":"#/definitions/v1OsType","type":"string"}},"type":"object"},"v1AzureNic":{"description":"AWS network interface","properties":{"index":{"format":"int8","type":"integer"},"privateIPs":{"items":{"type":"string"},"type":"array"},"publicIp":{"type":"string"}},"type":"object"},"v1AzureOSDisk":{"properties":{"diskSizeGB":{"format":"int32","type":"integer"},"managedDisk":{"$ref":"#/definitions/v1ManagedDisk"},"osType":{"$ref":"#/definitions/v1OsType","type":"string"}},"type":"object"},"v1AzurePrivateDnsZone":{"description":"Azure Private DNS zone entity","properties":{"id":{"description":"Fully qualified resource Id for the resource","type":"string"},"location":{"description":"The Azure Region where the resource lives","type":"string"},"name":{"description":"The name of the resource","type":"string"}},"type":"object"},"v1AzurePrivateDnsZones":{"description":"List of Azure storage accounts","properties":{"privateDnsZones":{"items":{"$ref":"#/definitions/v1AzurePrivateDnsZone"},"type":"array"}},"type":"object"},"v1AzureRegion":{"description":"Azure region entity","properties":{"displayName":{"description":"Azure region displayname","type":"string"},"name":{"description":"Azure region name","type":"string"},"zones":{"description":"List of zones associated to a particular Azure region","items":{"$ref":"#/definitions/v1AzureAvailabilityZone"},"type":"array"}},"type":"object"},"v1AzureRegions":{"description":"List of Azure regions","properties":{"regions":{"items":{"$ref":"#/definitions/v1AzureRegion"},"type":"array"}},"required":["regions"],"type":"object"},"v1AzureResourceGroupList":{"description":"List of Azure resource group","properties":{"resourceGroupList":{"items":{"$ref":"#/definitions/v1ResourceGroup"},"type":"array"}},"type":"object"},"v1AzureStorageAccountEntity":{"description":"Azure Storage Account Entity","properties":{"storageAccountTypes":{"items":{"$ref":"#/definitions/v1StorageAccountEntity"},"type":"array"}},"type":"object"},"v1AzureStorageAccounts":{"description":"List of Azure storage accounts","properties":{"accounts":{"items":{"$ref":"#/definitions/v1StorageAccount"},"type":"array"}},"type":"object"},"v1AzureStorageConfig":{"description":"Azure storage config object","properties":{"containerName":{"description":"Azure container name","type":"string"},"credentials":{"$ref":"#/definitions/v1.AzureAccountEntitySpec","description":"Azure cloud account credentials"},"resourceGroup":{"description":"Azure resource group name, to which the storage account is mapped","type":"string"},"sku":{"description":"Azure sku","type":"string"},"storageName":{"description":"Azure storage name","type":"string"}},"required":["resourceGroup","containerName","storageName","credentials"],"type":"object"},"v1AzureStorageContainers":{"description":"List of Azure storage containers","properties":{"containers":{"items":{"$ref":"#/definitions/v1StorageContainer"},"type":"array"}},"type":"object"},"v1AzureStorageTypes":{"description":"List of Azure storage types","properties":{"storageTypes":{"items":{"$ref":"#/definitions/v1StorageType"},"type":"array"}},"type":"object"},"v1AzureSubscriptionList":{"description":"List of Azure subscription","properties":{"subscriptionList":{"items":{"$ref":"#/definitions/v1Subscription"},"type":"array"}},"type":"object"},"v1AzureVHDImage":{"description":"Mold always create VHD image for custom image, and this can be use as golden images","properties":{"id":{"type":"string"},"name":{"type":"string"},"os":{"type":"string"},"region":{"type":"string"},"state":{"type":"string"}},"type":"object"},"v1AzureVhdUrlEntity":{"description":"Azure vhd url entity","properties":{"name":{"description":"The name of the resource","type":"string"},"url":{"description":"The url of the Azure Vhd","type":"string"}},"type":"object"},"v1AzureVirtualNetworkList":{"description":"List of Azure virtual network","properties":{"virtualNetworkList":{"items":{"$ref":"#/definitions/v1VirtualNetwork"},"type":"array"}},"type":"object"},"v1AzureZoneEntity":{"description":"List of Azure zone","properties":{"zoneList":{"items":{"$ref":"#/definitions/v1ZoneEntity"},"type":"array"}},"type":"object"},"v1BackupLocationConfig":{"description":"Backup location configuration","properties":{"name":{"type":"string"},"type":{"type":"string"},"uid":{"type":"string"}}},"v1BackupRestoreStatusMeta":{"description":"Backup restored status","properties":{"backupName":{"type":"string"},"destinationClusterRef":{"$ref":"#/definitions/v1ResourceReference"},"restoreState":{"type":"string"}}},"v1BackupState":{"description":"Backup state","properties":{"backupTime":{"$ref":"#/definitions/v1Time"},"deleteState":{"type":"string"},"msg":{"type":"string"},"state":{"type":"string"}}},"v1BackupStatusConfig":{"description":"Backup config","properties":{"includeAllDisks":{"type":"boolean"},"includeClusterResources":{"type":"boolean"},"namespaces":{"items":{"type":"string"},"type":"array","uniqueItems":true}}},"v1BackupStatusMeta":{"description":"Backup status meta","properties":{"backupName":{"type":"string"},"backupState":{"$ref":"#/definitions/v1BackupState"},"backupedNamespaces":{"items":{"type":"string"},"type":"array","uniqueItems":true},"expiryDate":{"$ref":"#/definitions/v1Time"}}},"v1BasicOciRegistry":{"description":"Basic oci registry information","properties":{"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1BasicOciRegistrySpec"}},"type":"object"},"v1BasicOciRegistrySpec":{"description":"Basic oci registry spec","properties":{"auth":{"$ref":"#/definitions/v1RegistryAuth"},"baseContentPath":{"description":"OCI registry content base path","type":"string"},"basePath":{"description":"OCI registry api base path","type":"string"},"endpoint":{"description":"OCI registry endpoint","type":"string"},"providerType":{"default":"helm","enum":["helm","zarf","pack"],"type":"string"},"registryUid":{"description":"Basic oci registry uid","type":"string"},"scope":{"type":"string"}},"required":["endpoint","auth"],"type":"object"},"v1Billing":{"description":"billing preference","properties":{"billingDay":{"type":"integer"},"tierPricing":{"$ref":"#/definitions/v1TierPrice"}}},"v1BrokerLogin":{"description":"Request for broker login request","properties":{"subscriberSubjects":{"description":"subjects that client need to subscribe","items":{"type":"string"},"type":"array"}},"type":"object"},"v1BrokerToken":{"description":"Response for broker login request","properties":{"msgCtxData":{"additionalProperties":{"type":"string"},"description":"message context data can be used as contextual information for the message exchange"},"publisherSubjects":{"description":"subjects that client can publish","items":{"type":"string"},"type":"array"},"subscriberSubjects":{"description":"subjects that client has subscribed","items":{"type":"string"},"type":"array"}},"type":"object"},"v1BulkDeleteFailure":{"properties":{"errMsg":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}}},"v1BulkDeleteRequest":{"properties":{"uids":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"required":["uids"]},"v1BulkDeleteResponse":{"properties":{"deletedCount":{"type":"integer","x-omitempty":false},"failures":{"items":{"$ref":"#/definitions/v1BulkDeleteFailure"},"type":"array","uniqueItems":true,"x-omitempty":false},"isSucceeded":{"type":"boolean","x-omitempty":false},"message":{"type":"string","x-omitempty":false}}},"v1BulkEvents":{"description":"Describes a list component events' details","items":{"$ref":"#/definitions/v1Event"},"type":"array","uniqueItems":true},"v1CPU":{"properties":{"cores":{"description":"number of cpu cores","format":"int32","type":"integer"}},"type":"object"},"v1CPUPassthroughSpec":{"properties":{"cachePassthrough":{"type":"boolean"},"isEnabled":{"description":"Enables the CPU Passthrough for the libvirt domain","type":"boolean"}},"type":"object"},"v1Card":{"description":"Card details object","properties":{"brand":{"description":"Card brand","type":"string"},"country":{"description":"Country name the card belongs","type":"string"},"expMonth":{"description":"Expiry month of the card","format":"uint64","type":"number"},"expYear":{"description":"Expiry year of the card","format":"uint64","type":"number"},"fingerPrint":{"description":"Finger print","type":"string"},"funding":{"description":"Funding","type":"string"},"last4":{"description":"Last 4 digit of the card","type":"string"}}},"v1Cert":{"properties":{"certificate":{"type":"string","x-omitempty":false},"isCA":{"type":"boolean","x-omitempty":false},"key":{"type":"string","x-omitempty":false}},"type":"object"},"v1Certificate":{"description":"Certificate details","properties":{"expiry":{"$ref":"#/definitions/v1Time","description":"Certificate expiry time"},"name":{"type":"string"}},"type":"object"},"v1CertificateAuthority":{"description":"Certificate Authority","properties":{"certificates":{"items":{"$ref":"#/definitions/v1Certificate"},"type":"array"},"expiry":{"$ref":"#/definitions/v1Time","description":"Certificate expiry time"},"name":{"type":"string"}},"type":"object"},"v1Channel":{"properties":{"alertAllUsers":{"type":"boolean","x-omitempty":false},"createdBy":{"type":"string"},"http":{"properties":{"body":{"type":"string"},"headers":{"additionalProperties":{"type":"string"}},"method":{"type":"string"},"url":{"type":"string"}},"type":"object"},"identifiers":{"items":{"type":"string"},"type":"array","uniqueItems":true},"isActive":{"type":"boolean","x-omitempty":false},"status":{"$ref":"#/definitions/v1AlertNotificationStatus"},"type":{"enum":["email","app","http"],"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1CleanUpResource":{"description":"Resources of tenant","properties":{"activeResources":{"$ref":"#/definitions/v1ActiveTenantResources"},"tenantStatus":{"$ref":"#/definitions/v1TenantCleanUpStatus"}},"type":"object"},"v1CloudAccountMeta":{"description":"Cloud account meta information","properties":{"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1CloudAccountMetadata":{"description":"Cloud account metadata summary","properties":{"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"}}},"v1CloudAccountSettings":{"description":"Cloud account settings","properties":{"disablePropertiesRequest":{"description":"Will disable certain properties request to cloud and the input is collected directly from the user","type":"boolean","x-omitempty":false}},"type":"object"},"v1CloudAccountStatus":{"description":"Status of the account","properties":{"state":{"description":"Cloud account status","type":"string"}},"type":"object"},"v1CloudAccountSummary":{"description":"Cloud account summary","properties":{"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"specSummary":{"description":"Cloud account spec summary","properties":{"accountId":{"type":"string"}},"type":"object"},"status":{"$ref":"#/definitions/v1CloudAccountStatus"}},"type":"object"},"v1CloudAccountUidEntity":{"description":"Cloud account uid entity","properties":{"uid":{"description":"Cloud account uid","type":"string"}},"type":"object"},"v1CloudAccountsMetadata":{"properties":{"items":{"items":{"$ref":"#/definitions/v1CloudAccountMetadata"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1CloudAccountsPatch":{"items":{"$ref":"#/definitions/v1HttpPatch"},"type":"array"},"v1CloudAccountsSummary":{"properties":{"items":{"items":{"$ref":"#/definitions/v1CloudAccountSummary"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1CloudCategory":{"default":"cloud","description":"Cloud category description","enum":["datacenter","cloud","edge"],"type":"string"},"v1CloudConfigMeta":{"properties":{"cloudType":{"type":"string"},"machinePools":{"description":"Machine pool meta information","items":{"$ref":"#/definitions/v1MachinePoolMeta"},"type":"array"},"uid":{"description":"Cluster's cloud config uid","type":"string"}},"type":"object"},"v1CloudCost":{"description":"Cloud cost information","properties":{"compute":{"format":"float64","type":"number","x-omitempty":false},"storage":{"format":"float64","type":"number","x-omitempty":false},"total":{"format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1CloudCostDataPoint":{"description":"Cloud cost data point information","properties":{"compute":{"format":"float64","type":"number","x-omitempty":false},"storage":{"format":"float64","type":"number","x-omitempty":false},"timestamp":{"format":"int64","type":"number"},"total":{"format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1CloudInstanceRateConfig":{"description":"Cloud instance rate config","properties":{"computeRateProportion":{"format":"float","type":"number"},"memoryRateProportion":{"format":"float","type":"number"}}},"v1CloudMachineStatus":{"description":"cloud machine status","properties":{"health":{"$ref":"#/definitions/v1MachineHealth"},"instanceState":{"enum":["Pending","Provisioning","Provisioned","Running","Deleting","Deleted","Failed","Unknown"],"type":"string"},"maintenanceStatus":{"$ref":"#/definitions/v1MachineMaintenanceStatus"}},"type":"object"},"v1CloudRate":{"description":"Cloud estimated rate information","properties":{"compute":{"$ref":"#/definitions/v1ComputeRate"},"storage":{"items":{"$ref":"#/definitions/v1StorageRate"},"type":"array"},"total":{"format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1CloudResourceMetadata":{"description":"Cloud resource metadata","properties":{"instanceTypes":{"additionalProperties":{"$ref":"#/definitions/v1InstanceType"},"type":"object"},"storageTypes":{"additionalProperties":{"$ref":"#/definitions/v1StorageType"},"type":"object"}},"type":"object"},"v1CloudSpotPrice":{"description":"Spot price entity of a particular cloud type","properties":{"spotPrice":{"description":"Spot price of a resource for a particular cloud","format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1CloudWatch":{"properties":{"credentials":{"$ref":"#/definitions/v1AwsCloudAccount"},"group":{"type":"string"},"region":{"type":"string"},"stream":{"type":"string"}},"type":"object"},"v1ClusterBackup":{"description":"Cluster Backup","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterBackupSpec"},"status":{"$ref":"#/definitions/v1ClusterBackupStatus"}}},"v1ClusterBackupConfig":{"description":"Cluster backup config","properties":{"backupLocationName":{"type":"string"},"backupLocationUid":{"type":"string"},"backupName":{"type":"string"},"backupPrefix":{"type":"string"},"durationInHours":{"format":"int64","type":"number"},"includeAllDisks":{"type":"boolean"},"includeClusterResources":{"type":"boolean"},"locationType":{"type":"string"},"namespaces":{"items":{"type":"string"},"type":"array","uniqueItems":true},"schedule":{"$ref":"#/definitions/v1ClusterFeatureSchedule"}}},"v1ClusterBackupLocationType":{"description":"Cluster backup location type","properties":{"locationType":{"type":"string"}},"required":["locationType"]},"v1ClusterBackupSpec":{"description":"Cluster Backup Spec","properties":{"clusterUid":{"type":"string"},"config":{"$ref":"#/definitions/v1ClusterBackupConfig"}}},"v1ClusterBackupStatus":{"description":"Cluster Backup Status","properties":{"clusterBackupStatuses":{"items":{"$ref":"#/definitions/v1ClusterBackupStatusMeta"},"type":"array"}}},"v1ClusterBackupStatusMeta":{"description":"Cluster Backup Status Meta","properties":{"actor":{"$ref":"#/definitions/v1ClusterFeatureActor"},"backupConfig":{"$ref":"#/definitions/v1BackupStatusConfig"},"backupLocationConfig":{"$ref":"#/definitions/v1BackupLocationConfig"},"backupRequestUid":{"type":"string"},"backupStatusMeta":{"items":{"$ref":"#/definitions/v1BackupStatusMeta"},"type":"array"},"restoreStatusMeta":{"items":{"$ref":"#/definitions/v1BackupRestoreStatusMeta"},"type":"array"},"state":{"type":"string"}}},"v1ClusterComplianceOnDemandConfig":{"description":"Cluster compliance scan on demand configuration","properties":{"kubeBench":{"$ref":"#/definitions/v1ClusterComplianceScanKubeBenchConfig"},"kubeHunter":{"$ref":"#/definitions/v1ClusterComplianceScanKubeHunterConfig"},"sonobuoy":{"$ref":"#/definitions/v1ClusterComplianceScanSonobuoyConfig"},"syft":{"$ref":"#/definitions/v1ClusterComplianceScanSyftConfig"}}},"v1ClusterComplianceScan":{"description":"Cluster Compliance Scan","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterComplianceScanSpec"}}},"v1ClusterComplianceScanKubeBenchConfig":{"description":"Cluster compliance scan config for kube bench driver","properties":{"runScan":{"type":"boolean"}}},"v1ClusterComplianceScanKubeBenchScheduleConfig":{"description":"Cluster compliance scan schedule config for kube bench driver","properties":{"schedule":{"$ref":"#/definitions/v1ClusterFeatureSchedule"}}},"v1ClusterComplianceScanKubeHunterConfig":{"description":"Cluster compliance scan config for kube hunter driver","properties":{"runScan":{"type":"boolean"}}},"v1ClusterComplianceScanKubeHunterScheduleConfig":{"description":"Cluster compliance scan schedule config for kube hunter driver","properties":{"schedule":{"$ref":"#/definitions/v1ClusterFeatureSchedule"}}},"v1ClusterComplianceScanLogSpec":{"description":"Cluster compliance scan logs spec","properties":{"clusterUid":{"type":"string"},"driverType":{"type":"string"}}},"v1ClusterComplianceScanLogs":{"description":"Cluster compliance scan Logs","properties":{"kubeBenchLogs":{"items":{"$ref":"#/definitions/v1ClusterScanLogKubeBench"},"type":"array"},"kubeHunterLogs":{"items":{"$ref":"#/definitions/v1ClusterScanLogKubeHunter"},"type":"array"},"sonobuoyLogs":{"items":{"$ref":"#/definitions/v1ClusterScanLogSonobuoy"},"type":"array"},"syftLogs":{"items":{"$ref":"#/definitions/v1ClusterScanLogSyft"},"type":"array"}}},"v1ClusterComplianceScanSonobuoyConfig":{"description":"Cluster compliance scan config for sonobuoy driver","properties":{"runScan":{"type":"boolean"}}},"v1ClusterComplianceScanSonobuoyScheduleConfig":{"description":"Cluster compliance scan schedule config for sonobuoy driver","properties":{"schedule":{"$ref":"#/definitions/v1ClusterFeatureSchedule"}}},"v1ClusterComplianceScanSpec":{"description":"Cluster compliance scan Spec","properties":{"clusterUid":{"type":"string"},"driverSpec":{"additionalProperties":{"$ref":"#/definitions/v1ComplianceScanDriverSpec"},"type":"object"}}},"v1ClusterComplianceScanSyftConfig":{"description":"Cluster compliance scan config for syft driver","properties":{"config":{"$ref":"#/definitions/v1ClusterComplianceScanSyftDriverConfig"},"runScan":{"type":"boolean"}}},"v1ClusterComplianceScanSyftDriverConfig":{"description":"Cluster compliance scan specification","properties":{"format":{"enum":["cyclonedx-json","github-json","spdx-json","syft-json"],"type":"string"},"labelSelector":{"type":"string"},"location":{"$ref":"#/definitions/v1ObjectEntity"},"namespace":{"type":"string"},"podName":{"type":"string"},"scope":{"enum":["cluster","namespace","label-selector","pod"],"type":"string"}}},"v1ClusterComplianceScheduleConfig":{"description":"Cluster compliance scan schedule configuration","properties":{"kubeBench":{"$ref":"#/definitions/v1ClusterComplianceScanKubeBenchScheduleConfig"},"kubeHunter":{"$ref":"#/definitions/v1ClusterComplianceScanKubeHunterScheduleConfig"},"sonobuoy":{"$ref":"#/definitions/v1ClusterComplianceScanSonobuoyScheduleConfig"}}},"v1ClusterCondition":{"properties":{"lastProbeTime":{"$ref":"#/definitions/v1Time"},"lastTransitionTime":{"$ref":"#/definitions/v1Time"},"message":{"description":"Human-readable message indicating details about last transition.","type":"string"},"reason":{"description":"Unique, one-word, CamelCase reason for the condition's last transition.","type":"string"},"status":{"type":"string"},"type":{"type":"string"}},"required":["type","status"],"type":"object"},"v1ClusterConfig":{"properties":{"clusterMetaAttribute":{"description":"ClusterMetaAttribute contains additional cluster metadata information.","type":"string"},"clusterRbac":{"description":"Deprecated. Use clusterResources","items":{"$ref":"#/definitions/v1ResourceReference"},"type":"array"},"clusterResources":{"$ref":"#/definitions/v1ClusterResources","description":"ClusterResources defines the managment of namespace resource allocations, role bindings."},"controlPlaneHealthCheckTimeout":{"description":"ControlPlaneHealthCheckTimeout is the timeout to check for ready state of the control plane nodes. If the node is not ready within the time out set, the node will be deleted and a new node will be launched.","type":"string"},"hostClusterConfig":{"$ref":"#/definitions/v1HostClusterConfig","description":"HostClusterConfiguration defines the configuration of host clusters, where virtual clusters be deployed"},"lifecycleConfig":{"$ref":"#/definitions/v1LifecycleConfig"},"machineHealthConfig":{"$ref":"#/definitions/v1MachineHealthCheckConfig","description":"MachineHealthCheckConfig defines the healthcheck timeouts for the node. The timeouts are configured by the user to overide the default healthchecks."},"machineManagementConfig":{"$ref":"#/definitions/v1MachineManagementConfig","description":"MachineManagementConfig defines the management configurations for the node. Patching OS security updates etc can be configured by user."},"updateWorkerPoolsInParallel":{"description":"UpdateWorkerPoolsInParallel is used to decide if the update of workerpools happen in parallel. When this flag is false, the workerpools are updated sequentially.","type":"boolean"}},"type":"object"},"v1ClusterConfigEntity":{"properties":{"clusterMetaAttribute":{"description":"ClusterMetaAttribute can be used to set additional cluster metadata information.","type":"string"},"controlPlaneHealthCheckTimeout":{"type":"string"},"hostClusterConfig":{"$ref":"#/definitions/v1HostClusterConfig"},"lifecycleConfig":{"$ref":"#/definitions/v1LifecycleConfig"},"location":{"$ref":"#/definitions/v1ClusterLocation"},"machineManagementConfig":{"$ref":"#/definitions/v1MachineManagementConfig"},"resources":{"$ref":"#/definitions/v1ClusterResourcesEntity"},"updateWorkerPoolsInParallel":{"type":"boolean"}},"type":"object"},"v1ClusterConfigParamEntity":{"properties":{"clusterMetaAttribute":{"description":"ClusterMetaAttribute can be used to set additional cluster metadata information.","type":"string"},"controlPlaneHealthCheckTimeout":{"type":"string"},"hostClusterConfig":{"$ref":"#/definitions/v1HostClusterConfig"},"location":{"$ref":"#/definitions/v1ClusterLocation"},"resources":{"$ref":"#/definitions/v1ClusterResourcesEntity"},"updateWorkerPoolsInParallel":{"type":"boolean"}},"type":"object"},"v1ClusterConfigResponse":{"properties":{"hostClusterConfig":{"$ref":"#/definitions/v1HostClusterConfigResponse","description":"HostClusterConfig defines the configuration entity of host clusters config entity"}},"type":"object"},"v1ClusterDefinitionEntity":{"description":"Cluster definition entity","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"$ref":"#/definitions/v1ClusterDefinitionSpecEntity"}},"type":"object"},"v1ClusterDefinitionProfileEntity":{"description":"Cluster definition profile entity","properties":{"packs":{"description":"Cluster profile packs array","items":{"$ref":"#/definitions/v1PackValuesEntity"},"type":"array","uniqueItems":true},"uid":{"description":"Cluster profile uid","type":"string"}},"required":["uid"],"type":"object"},"v1ClusterDefinitionSpecEntity":{"description":"Cluster definition spec entity","properties":{"cloudType":{"type":"string"},"profiles":{"description":"Cluster definition profiles","items":{"$ref":"#/definitions/v1ClusterDefinitionProfileEntity"},"type":"array","uniqueItems":true}},"required":["profiles","cloudType"],"type":"object"},"v1ClusterEdgeInstallerConfig":{"properties":{"installerDownloadLinks":{"additionalProperties":{"type":"string"}}}},"v1ClusterFeatureActor":{"description":"Compliance Scan actor","properties":{"actorType":{"type":"string"},"uid":{"type":"string"}}},"v1ClusterFeatureSchedule":{"description":"Cluster feature schedule","properties":{"scheduledRunTime":{"type":"string"}}},"v1ClusterFips":{"properties":{"mode":{"$ref":"#/definitions/v1ClusterFipsMode"}}},"v1ClusterFipsMode":{"default":"none","enum":["full","none","partial","unknown"],"type":"string"},"v1ClusterGroup":{"description":"Cluster group information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterGroupSpec"},"status":{"$ref":"#/definitions/v1ClusterGroupStatus"}}},"v1ClusterGroupClusterRef":{"description":"Cluster group cluster reference","properties":{"clusterName":{"type":"string"},"clusterUid":{"type":"string"}}},"v1ClusterGroupClustersConfig":{"description":"Clusters config of cluster group","properties":{"endpointType":{"description":"Host cluster endpoint type","enum":["Ingress","LoadBalancer"],"type":"string"},"hostClustersConfig":{"items":{"$ref":"#/definitions/v1ClusterGroupHostClusterConfig"},"type":"array","uniqueItems":true},"kubernetesDistroType":{"$ref":"#/definitions/v1ClusterKubernetesDistroType"},"limitConfig":{"$ref":"#/definitions/v1ClusterGroupLimitConfig"},"values":{"type":"string"}}},"v1ClusterGroupEntity":{"description":"Cluster group information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterGroupSpecEntity"}}},"v1ClusterGroupHostClusterConfig":{"properties":{"clusterUid":{"type":"string"},"endpointConfig":{"$ref":"#/definitions/v1HostClusterEndpointConfig","description":"host cluster endpoint configuration"}}},"v1ClusterGroupHostClusterEntity":{"description":"Clusters and clusters config of cluster group","properties":{"clusterRefs":{"items":{"$ref":"#/definitions/v1ClusterGroupClusterRef"},"type":"array","uniqueItems":true},"clustersConfig":{"$ref":"#/definitions/v1ClusterGroupClustersConfig"}}},"v1ClusterGroupLimitConfig":{"description":"Cluster group limit config","properties":{"cpu":{"description":"Deprecated. Use field cpuMilliCore","format":"int32","type":"integer"},"cpuMilliCore":{"description":"CPU in milli cores","format":"int32","type":"integer"},"memory":{"description":"Deprecated. Use field memoryMiB","format":"int32","type":"integer"},"memoryMiB":{"description":"Memory in MiB","format":"int32","type":"integer"},"overSubscription":{"description":"Over subscription percentage","format":"int32","type":"integer"},"storageGiB":{"description":"Storage in GiB","format":"int32","type":"integer"}}},"v1ClusterGroupResource":{"description":"Cluster group resource allocated and usage information","properties":{"allocated":{"format":"float64","type":"number","x-omitempty":false},"used":{"format":"float64","type":"number","x-omitempty":false}}},"v1ClusterGroupSpec":{"description":"Cluster group specifications","properties":{"clusterProfileTemplates":{"description":"ClusterProfileTemplate is a copy of the draft version or latest published version of the clusterprofileSpec. It consists of list of add on profiles at a cluster group level which will be enforced on all virtual cluster. ClusterProfileTemplate will be updated from the clusterprofile pointed by ClusterProfileRef","items":{"$ref":"#/definitions/v1ClusterProfileTemplate"},"type":"array"},"clusterRefs":{"items":{"$ref":"#/definitions/v1ClusterGroupClusterRef"},"type":"array","uniqueItems":true},"clustersConfig":{"$ref":"#/definitions/v1ClusterGroupClustersConfig"},"type":{"enum":["hostCluster"],"type":"string"}}},"v1ClusterGroupSpecEntity":{"description":"Cluster group specifications request entity","properties":{"clusterRefs":{"items":{"$ref":"#/definitions/v1ClusterGroupClusterRef"},"type":"array","uniqueItems":true},"clustersConfig":{"$ref":"#/definitions/v1ClusterGroupClustersConfig"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"},"type":{"enum":["hostCluster"],"type":"string"}}},"v1ClusterGroupStatus":{"description":"Cluster group status","properties":{"isActive":{"type":"boolean","x-omitempty":false}}},"v1ClusterGroupSummary":{"description":"Cluster group summay","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterGroupSummarySpec"}}},"v1ClusterGroupSummarySpec":{"description":"Cluster group summay spec","properties":{"clusterProfileTemplates":{"items":{"$ref":"#/definitions/v1ClusterProfileTemplateMeta"},"type":"array"},"cpu":{"$ref":"#/definitions/v1ClusterGroupResource","description":"Deprecated"},"endpointType":{"enum":["Ingress","LoadBalancer"],"type":"string"},"hostClusters":{"items":{"$ref":"#/definitions/v1ObjectResReference"},"type":"array","uniqueItems":true},"hostClustersCount":{"type":"integer","x-omitempty":false},"memory":{"$ref":"#/definitions/v1ClusterGroupResource","description":"Deprecated"},"scope":{"type":"string"},"virtualClustersCount":{"type":"integer","x-omitempty":false}}},"v1ClusterGroupsDeveloperCreditUsage":{"description":"Cluster group resource allocated and usage information","properties":{"allocatedCredit":{"$ref":"#/definitions/v1DeveloperCredit"},"usedCredit":{"$ref":"#/definitions/v1DeveloperCredit"}}},"v1ClusterGroupsHostClusterMetadata":{"properties":{"items":{"items":{"$ref":"#/definitions/v1ObjectScopeEntity"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1ClusterGroupsHostClusterSummary":{"properties":{"summaries":{"items":{"$ref":"#/definitions/v1ClusterGroupSummary"},"type":"array","uniqueItems":true}},"required":["summaries"],"type":"object"},"v1ClusterHelmChart":{"description":"Cluster helm chart metadata","properties":{"localName":{"type":"string"},"matchedRegistries":{"items":{"$ref":"#/definitions/v1ClusterHelmRegistry"},"type":"array","uniqueItems":true},"name":{"type":"string"},"values":{"type":"string"},"version":{"type":"string"}}},"v1ClusterHelmCharts":{"description":"Cluster helm charts metadata","properties":{"charts":{"items":{"$ref":"#/definitions/v1ClusterHelmChart"},"type":"array","uniqueItems":true}}},"v1ClusterHelmRegistry":{"description":"Cluster helm registry information","properties":{"name":{"type":"string"},"uid":{"type":"string"}}},"v1ClusterImport":{"properties":{"importLink":{"description":"import link to download and install ally-lite, palette-lite","type":"string"},"isBrownfield":{"description":"Deprecated. Use the 'spec.clusterType'","type":"boolean","x-omitempty":false},"state":{"description":"cluster import status","type":"string"}},"type":"object"},"v1ClusterKubeBenchLogStatus":{"description":"Cluster compliance scan KubeBench Log Status","properties":{"actor":{"$ref":"#/definitions/v1ClusterFeatureActor"},"message":{"type":"string"},"reports":{"additionalProperties":{"$ref":"#/definitions/v1KubeBenchReport"},"type":"object"},"requestUid":{"type":"string"},"scanTime":{"$ref":"#/definitions/v1ClusterScanTime"},"state":{"type":"string"}}},"v1ClusterKubeHunterLogStatus":{"description":"Cluster compliance scan KubeHunter Log Status","properties":{"actor":{"$ref":"#/definitions/v1ClusterFeatureActor"},"message":{"type":"string"},"reports":{"additionalProperties":{"$ref":"#/definitions/v1KubeHunterReport"},"type":"object"},"requestUid":{"type":"string"},"scanTime":{"$ref":"#/definitions/v1ClusterScanTime"},"state":{"type":"string"}}},"v1ClusterKubernetesDistroType":{"default":"k3s","enum":["k3s","cncf_k8s"],"type":"string"},"v1ClusterLocation":{"description":"Cluster location information","properties":{"countryCode":{"description":"country code for cluster location","type":"string"},"countryName":{"description":"country name for cluster location","type":"string"},"geoLoc":{"$ref":"#/definitions/v1GeolocationLatlong"},"regionCode":{"description":"region code for cluster location","type":"string"},"regionName":{"description":"region name for cluster location","type":"string"}},"type":"object"},"v1ClusterLogFetcher":{"description":"Cluster Log Fetcher","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterLogFetcherSpec"},"status":{"$ref":"#/definitions/v1ClusterLogFetcherStatus"}}},"v1ClusterLogFetcherK8sRequest":{"description":"Cluster Log Fetcher K8s","properties":{"labelSelector":{"items":{"type":"string"},"type":"array","uniqueItems":true},"namespaces":{"items":{"type":"string"},"type":"array","uniqueItems":true}}},"v1ClusterLogFetcherNodeRequest":{"description":"Cluster Log Fetcher Node Request","properties":{"logs":{"description":"Array of logs","items":{"type":"string"},"type":"array","uniqueItems":true}}},"v1ClusterLogFetcherRequest":{"description":"Cluster Log Fetcher Request","properties":{"duration":{"default":10,"description":"Duration for which log is requested","format":"int64","type":"integer"},"k8s":{"$ref":"#/definitions/v1ClusterLogFetcherK8sRequest"},"mode":{"default":"cluster","description":"Accepted Values - [\"cluster\", \"app\"]. if \"app\" then logs will be fetched from the virtual cluster","enum":["cluster","app"],"type":"string"},"noOfLines":{"default":1000,"description":"No of lines of logs requested","format":"int64","type":"integer"},"node":{"$ref":"#/definitions/v1ClusterLogFetcherNodeRequest"}}},"v1ClusterLogFetcherSpec":{"description":"Cluster Log Fetcher Spec","properties":{"clusterUid":{"type":"string"},"log":{"type":"string"}}},"v1ClusterLogFetcherStatus":{"description":"Cluster Log Fetcher Status","properties":{"state":{"type":"string"}}},"v1ClusterManifest":{"description":"Cluster manifest information","properties":{"content":{"type":"string"},"name":{"type":"string"},"namespace":{"type":"string"},"type":{"type":"string"}}},"v1ClusterManifests":{"description":"Cluster manifests information","properties":{"manifests":{"items":{"$ref":"#/definitions/v1ClusterManifest"},"type":"array","uniqueItems":true}}},"v1ClusterMeta":{"description":"Active cluster meta","properties":{"cloudType":{"type":"string"},"clusterType":{"type":"string"},"creationTimestamp":{"$ref":"#/definitions/v1Time"},"duration":{"type":"string"},"name":{"type":"string"},"projectName":{"type":"string"},"state":{"$ref":"#/definitions/v1ClusterState"},"uid":{"type":"string"}},"type":"object"},"v1ClusterMetaAttributeEntity":{"description":"Cluster additional metadata entity","properties":{"clusterMetaAttribute":{"type":"string"}},"type":"object"},"v1ClusterMetaSpecLocation":{"description":"Cluster location information","properties":{"coordinates":{"items":{"format":"float64","type":"number"},"type":"array"},"countryCode":{"type":"string"},"countryName":{"type":"string"},"regionCode":{"type":"string"},"regionName":{"type":"string"}},"type":"object"},"v1ClusterMetaStatusCost":{"description":"Cluster meta Cost information","properties":{"total":{"format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1ClusterMetaStatusHealth":{"description":"Cluster meta health information","properties":{"isHeartBeatFailed":{"type":"boolean","x-omitempty":false},"state":{"type":"string"}},"type":"object"},"v1ClusterMetaStatusUpdates":{"description":"Cluster meta updates information","properties":{"isUpdatesPending":{"type":"boolean","x-omitempty":false}},"type":"object"},"v1ClusterNamespace":{"description":"Cluster's namespace","properties":{"namespace":{"type":"string"},"pvcCount":{"format":"int32","type":"number"}}},"v1ClusterNamespaceResource":{"description":"Cluster Namespace resource defintion","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterNamespaceSpec"},"status":{"$ref":"#/definitions/v1ClusterNamespaceStatus"}},"type":"object"},"v1ClusterNamespaceResourceAllocation":{"description":"Cluster namespace resource allocation","properties":{"cpuCores":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"memoryMiB":{"exclusiveMinimum":true,"minimum":0,"type":"number"}}},"v1ClusterNamespaceResourceInputEntity":{"description":"Cluster Namespace resource defintion","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaUpdateEntity"},"spec":{"$ref":"#/definitions/v1ClusterNamespaceSpec"}},"type":"object"},"v1ClusterNamespaceResources":{"properties":{"items":{"items":{"$ref":"#/definitions/v1ClusterNamespaceResource"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1ClusterNamespaceResourcesUpdateEntity":{"properties":{"namespaces":{"items":{"$ref":"#/definitions/v1ClusterNamespaceResourceInputEntity"},"type":"array","uniqueItems":true}},"type":"object"},"v1ClusterNamespaceSpec":{"description":"Cluster namespace spec","properties":{"isRegex":{"type":"boolean","x-omitempty":false},"relatedObject":{"$ref":"#/definitions/v1RelatedObject"},"resourceAllocation":{"$ref":"#/definitions/v1ClusterNamespaceResourceAllocation"}}},"v1ClusterNamespaceStatus":{"description":"Cluster namespace status","properties":{"errors":{"items":{"$ref":"#/definitions/v1ClusterResourceError"},"type":"array","uniqueItems":true}}},"v1ClusterNamespaces":{"description":"Cluster's available namespaces","properties":{"namespaces":{"items":{"$ref":"#/definitions/v1ClusterNamespace"},"type":"array"}}},"v1ClusterNotificationUpdateEntity":{"description":"Cluster input for notification update","properties":{"profiles":{"items":{"$ref":"#/definitions/v1ClusterProfileNotificationUpdateEntity"},"type":"array","uniqueItems":true},"spcApplySettings":{"$ref":"#/definitions/v1SpcApplySettings"}},"type":"object"},"v1ClusterPackManifestStatus":{"properties":{"condition":{"$ref":"#/definitions/v1ClusterCondition"},"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1ClusterPackStatus":{"properties":{"condition":{"$ref":"#/definitions/v1ClusterCondition"},"endTime":{"$ref":"#/definitions/v1Time"},"manifests":{"items":{"$ref":"#/definitions/v1ClusterPackManifestStatus"},"type":"array"},"name":{"type":"string"},"profileUid":{"type":"string"},"services":{"items":{"$ref":"#/definitions/v1LoadBalancerService"},"type":"array"},"startTime":{"$ref":"#/definitions/v1Time"},"type":{"type":"string"},"version":{"type":"string"}},"type":"object"},"v1ClusterPreference":{"description":"cluster preference","properties":{"archivalIntervalInHour":{"description":"clusters cleanup interval post deletion","type":"integer"},"deletePeriodInHour":{"description":"clusters deleted before delete period are eligible for cleanup","type":"integer"},"healthPollIntervalInMinutes":{"description":"clusters health poll interval","maximum":60,"minimum":3,"type":"integer"},"monitorIntervalInMinutes":{"description":"clusters state and consistency monitor","type":"integer"}}},"v1ClusterProfile":{"description":"ClusterProfile is the Schema for the clusterprofiles API","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Cloud type of the cloud config","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterProfileSpec"},"status":{"$ref":"#/definitions/v1ClusterProfileStatus"}},"type":"object"},"v1ClusterProfileCloneEntity":{"description":"Cluster profile clone request payload","properties":{"metadata":{"$ref":"#/definitions/v1ClusterProfileCloneMetaInputEntity"}},"type":"object"},"v1ClusterProfileCloneMetaInputEntity":{"description":"Cluster profile clone metadata","properties":{"name":{"description":"Cloned cluster profile name","type":"string"},"target":{"$ref":"#/definitions/v1ClusterProfileCloneTarget"},"version":{"description":"Cloned cluster profile version","type":"string"}},"required":["name"],"type":"object"},"v1ClusterProfileCloneTarget":{"description":"Cluster profile clone meta input entity","properties":{"projectUid":{"description":"Cloned cluster profile project uid","type":"string"},"scope":{"$ref":"#/definitions/v1Scope"}},"required":["scope"],"type":"object"},"v1ClusterProfileEntity":{"description":"Cluster profile request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"template":{"$ref":"#/definitions/v1ClusterProfileTemplateDraft"},"variables":{"description":"List of unique variable fields defined for a cluster profile with schema constraints","items":{"$ref":"#/definitions/v1Variable"},"type":"array","uniqueItems":true},"version":{"description":"Cluster profile version","type":"string"}},"type":"object"}},"type":"object"},"v1ClusterProfileFilterSpec":{"description":"Cluster profile filter spec","properties":{"environment":{"items":{"type":"string"},"type":"array","uniqueItems":true},"fips":{"$ref":"#/definitions/v1ClusterFipsMode"},"profileName":{"$ref":"#/definitions/v1FilterString"},"profileType":{"items":{"$ref":"#/definitions/v1ProfileType"},"type":"array","uniqueItems":true},"scope":{"$ref":"#/definitions/v1ClusterProfileScope"},"tags":{"$ref":"#/definitions/v1FilterArray"},"version":{"$ref":"#/definitions/v1FilterVersionString"}}},"v1ClusterProfileFips":{"description":"Cluster profile fips compliance status","properties":{"mode":{"$ref":"#/definitions/v1ClusterFipsMode"}}},"v1ClusterProfileImportEntity":{"description":"Cluster profile import request payload","properties":{"metadata":{"$ref":"#/definitions/v1ClusterProfileMetadataImportEntity"},"spec":{"$ref":"#/definitions/v1ClusterProfileSpecImportEntity"}},"type":"object"},"v1ClusterProfileMetadata":{"description":"Cluster profile filter spec","properties":{"metadata":{"$ref":"#/definitions/v1ObjectEntity"},"spec":{"properties":{"cloudType":{"type":"string"},"version":{"type":"string"}}}}},"v1ClusterProfileMetadataImportEntity":{"description":"Cluster profile import metadata","properties":{"description":{"description":"Cluster profile description","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"Cluster profile labels","type":"object"},"name":{"description":"Cluster profile name","type":"string"}},"type":"object"},"v1ClusterProfileNotificationUpdateEntity":{"description":"Cluster profile notification update request payload","properties":{"packs":{"description":"Cluster profile packs array","items":{"$ref":"#/definitions/v1PackManifestUpdateEntity"},"type":"array","uniqueItems":true},"uid":{"description":"Cluster profile uid","type":"string"}},"type":"object"},"v1ClusterProfilePackConfigList":{"properties":{"items":{"description":"Cluster profile packs array","items":{"$ref":"#/definitions/v1PackConfig"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1ClusterProfilePackManifests":{"description":"Cluster profile pack manifests","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1PackManifestsSpec"},"status":{"$ref":"#/definitions/v1PackSummaryStatus"}},"type":"object"},"v1ClusterProfilePackSummary":{"description":"Cluster profile packs summary about the deprecated, disabled, deleted packs count","properties":{"deleted":{"description":"Total count of deleted packs in a cluster profile","type":"number","x-omitempty":false},"deprecated":{"description":"Total count of deprecated packs in a cluster profile","type":"number","x-omitempty":false},"disabled":{"description":"Total count of disabled packs in a cluster profile","type":"number","x-omitempty":false}},"type":"object"},"v1ClusterProfilePacksEntities":{"description":"List of cluster profile packs","properties":{"items":{"description":"Cluster profile packs array","items":{"$ref":"#/definitions/v1ClusterProfilePacksEntity"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1ClusterProfilePacksEntity":{"description":"Cluster profile packs object","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1PackSummarySpec"},"status":{"$ref":"#/definitions/v1PackSummaryStatus"}},"type":"object"},"v1ClusterProfilePacksManifests":{"description":"Cluster profile pack manifests","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"packs":{"description":"Cluster profile packs array","items":{"$ref":"#/definitions/v1ClusterProfilePackManifests"},"type":"array","uniqueItems":true}},"type":"object"}},"type":"object"},"v1ClusterProfileScope":{"enum":["system","tenant","project"],"type":"string"},"v1ClusterProfileSortFields":{"enum":["profileName","environment","profileType","creationTimestamp","lastModifiedTimestamp"],"type":"string","x-nullable":true},"v1ClusterProfileSortSpec":{"properties":{"field":{"$ref":"#/definitions/v1ClusterProfileSortFields"},"order":{"$ref":"#/definitions/v1SortOrder"}}},"v1ClusterProfileSpec":{"description":"ClusterProfileTemplate can be in draft mode, or published mode User only see the latest published template, and (or) the draft template User can apply either the draft version or the latest published version to a cluster when user create a draft version, just copy the Published template, increment the version, and keep changing the draft template without increment the draft version when user publish a draft, the version is fixed, and won't be able to make any modification on published template For each clusterprofile that has a published version, there will be a ClusterProfileArchive automatically created when user publish a draft, the published version will also be copied over to the corresponding ClusterProfileArchive it is just in case in the future for whatever reason we may want to expose earlier versions","properties":{"draft":{"$ref":"#/definitions/v1ClusterProfileTemplate"},"published":{"$ref":"#/definitions/v1ClusterProfileTemplate"},"version":{"type":"string"},"versions":{"description":"Cluster profile's list of all the versions","items":{"$ref":"#/definitions/v1ClusterProfileVersion"},"type":"array"}},"type":"object"},"v1ClusterProfileSpecEntity":{"description":"Cluster profile update spec","properties":{"version":{"description":"Cluster profile version","type":"string"}},"type":"object"},"v1ClusterProfileSpecImportEntity":{"description":"Cluster profile import spec","properties":{"template":{"$ref":"#/definitions/v1ClusterProfileTemplateImportEntity"},"variables":{"description":"List of unique variable fields defined for a cluster profile with schema constraints","items":{"$ref":"#/definitions/v1Variable"},"type":"array","uniqueItems":true},"version":{"description":"Cluster profile version","type":"string"}},"type":"object"},"v1ClusterProfileStatus":{"description":"ClusterProfileStatus defines the observed state of ClusterProfile","properties":{"hasUserMacros":{"description":"If it is true then profile pack values has a reference to user defined macros","type":"boolean","x-omitempty":false},"inUseClusterUids":{"description":"Deprecated. Use inUseClusters","items":{"type":"string"},"type":"array"},"inUseClusters":{"items":{"$ref":"#/definitions/v1ObjectResReference"},"type":"array"},"isPublished":{"type":"boolean","x-omitempty":false}},"type":"object"},"v1ClusterProfileStatusSummary":{"description":"ClusterProfileStatusSummary defines the observed state of ClusterProfile","properties":{"fips":{"$ref":"#/definitions/v1ClusterProfileFips"},"inUseClusterUids":{"description":"Deprecated. Use inUseClusters","items":{"type":"string"},"type":"array"},"inUseClusters":{"items":{"$ref":"#/definitions/v1ObjectEntity"},"type":"array"},"isPublished":{"type":"boolean","x-omitempty":false},"pack":{"$ref":"#/definitions/v1ClusterProfilePackSummary"}},"type":"object"},"v1ClusterProfileSummary":{"description":"Cluster profile summary","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"specSummary":{"description":"Cluster profile spec summary","properties":{"draft":{"$ref":"#/definitions/v1ClusterProfileTemplateSummary"},"published":{"$ref":"#/definitions/v1ClusterProfileTemplateSummary"},"version":{"description":"Cluster profile's latest version","type":"string"},"versions":{"description":"Cluster profile's list of all the versions","items":{"$ref":"#/definitions/v1ClusterProfileVersion"},"type":"array"}},"type":"object"},"status":{"$ref":"#/definitions/v1ClusterProfileStatusSummary"}},"type":"object"},"v1ClusterProfileTemplate":{"description":"ClusterProfileTemplate contains details of a clusterprofile definition","properties":{"cloudType":{"type":"string"},"name":{"type":"string"},"packServerRefs":{"description":"PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array","items":{"$ref":"#/definitions/v1ObjectReference"},"type":"array"},"packServerSecret":{"description":"This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette","type":"string"},"packs":{"description":"Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge","items":{"$ref":"#/definitions/v1PackRef"},"type":"array"},"profileVersion":{"description":"version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster","type":"string"},"relatedObject":{"$ref":"#/definitions/v1ObjectReference","description":"RelatedObject refers to the type of object(clustergroup, cluster or edgeHost) the cluster profile is associated with"},"type":{"type":"string"},"uid":{"type":"string"},"version":{"description":"Deprecated. Use profileVersion","format":"int32","type":"integer"}},"type":"object"},"v1ClusterProfileTemplateDraft":{"description":"Cluster profile template spec","properties":{"cloudType":{"type":"string"},"packs":{"description":"Cluster profile packs array","items":{"$ref":"#/definitions/v1PackManifestEntity"},"type":"array","uniqueItems":true},"type":{"$ref":"#/definitions/v1ProfileType"}},"type":"object"},"v1ClusterProfileTemplateImportEntity":{"description":"Cluster profile import template","properties":{"cloudType":{"description":"Cluster profile cloud type","type":"string"},"packs":{"description":"Cluster profile packs array","items":{"$ref":"#/definitions/v1PackImportEntity"},"type":"array","uniqueItems":true},"type":{"description":"Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]","type":"string"}},"type":"object"},"v1ClusterProfileTemplateMeta":{"description":"Cluster profile template meta information","properties":{"cloudType":{"type":"string"},"name":{"description":"Cluster profile name","type":"string"},"packs":{"description":"Cluster profile packs array","items":{"$ref":"#/definitions/v1PackRef"},"type":"array"},"scope":{"description":"scope or context(system, tenant or project)","type":"string"},"type":{"description":"Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]","type":"string"},"uid":{"description":"Cluster profile uid","type":"string"},"version":{"format":"int32","type":"integer"}},"type":"object"},"v1ClusterProfileTemplateSummary":{"description":"Cluster profile template summary","properties":{"cloudType":{"type":"string"},"packs":{"items":{"$ref":"#/definitions/v1PackRefSummary"},"type":"array"},"type":{"type":"string"}},"type":"object"},"v1ClusterProfileTemplateUpdate":{"description":"Cluster profile template update spec","properties":{"packs":{"description":"Cluster profile packs array","items":{"$ref":"#/definitions/v1PackManifestUpdateEntity"},"type":"array","uniqueItems":true},"type":{"$ref":"#/definitions/v1ProfileType"}},"type":"object"},"v1ClusterProfileUpdateEntity":{"description":"Cluster profile update request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"description":"Cluster profile update spec","properties":{"template":{"$ref":"#/definitions/v1ClusterProfileTemplateUpdate"},"version":{"description":"Cluster profile version","type":"string"}},"type":"object"}},"type":"object"},"v1ClusterProfileValidatorResponse":{"description":"Cluster profile validator response","properties":{"packs":{"$ref":"#/definitions/v1ConstraintValidatorResponse"}},"type":"object"},"v1ClusterProfileVersion":{"description":"Cluster profile with version","properties":{"uid":{"type":"string"},"version":{"type":"string"}}},"v1ClusterProfiles":{"properties":{"items":{"items":{"$ref":"#/definitions/v1ClusterProfile"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1ClusterProfilesFilterSpec":{"description":"Spectro cluster filter summary spec","properties":{"filter":{"$ref":"#/definitions/v1ClusterProfileFilterSpec"},"sort":{"items":{"$ref":"#/definitions/v1ClusterProfileSortSpec"},"type":"array","uniqueItems":true}}},"v1ClusterProfilesMetadata":{"properties":{"items":{"items":{"$ref":"#/definitions/v1ClusterProfileMetadata"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1ClusterProfilesSummary":{"properties":{"items":{"items":{"$ref":"#/definitions/v1ClusterProfileSummary"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1ClusterProxySpec":{"description":"cluster proxy config spec","properties":{"caContainerMountPath":{"description":"Location to mount Proxy CA cert inside container","type":"string"},"caHostPath":{"description":"Location for Proxy CA cert on host nodes","type":"string"},"httpProxy":{"description":"URL for HTTP requests unless overridden by NoProxy","type":"string"},"httpsProxy":{"description":"HTTPS requests unless overridden by NoProxy","type":"string"},"noProxy":{"description":"NoProxy represents the NO_PROXY or no_proxy environment","type":"string"}},"type":"object"},"v1ClusterRbac":{"description":"Cluster RBAC role binding defintion","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterRbacSpec"},"status":{"$ref":"#/definitions/v1ClusterRbacStatus"}},"type":"object"},"v1ClusterRbacBinding":{"description":"Cluster RBAC binding","properties":{"namespace":{"type":"string"},"role":{"$ref":"#/definitions/v1ClusterRoleRef"},"subjects":{"items":{"$ref":"#/definitions/v1ClusterRbacSubjects"},"type":"array","uniqueItems":true},"type":{"enum":["RoleBinding","ClusterRoleBinding"],"type":"string"}},"type":"object"},"v1ClusterRbacEntity":{"properties":{"clusterRbac":{"description":"Cluster RBAC role bindings","items":{"$ref":"#/definitions/v1ResourceReference"},"type":"array"}}},"v1ClusterRbacInputEntity":{"description":"Cluster RBAC role binding defintion","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaUpdateEntity"},"spec":{"$ref":"#/definitions/v1ClusterRbacSpec"}},"type":"object"},"v1ClusterRbacResourcesUpdateEntity":{"properties":{"rbacs":{"items":{"$ref":"#/definitions/v1ClusterRbacInputEntity"},"type":"array","uniqueItems":true}},"type":"object"},"v1ClusterRbacSpec":{"description":"Cluster RBAC spec","properties":{"bindings":{"items":{"$ref":"#/definitions/v1ClusterRbacBinding"},"type":"array","uniqueItems":true},"relatedObject":{"$ref":"#/definitions/v1RelatedObject"}},"type":"object"},"v1ClusterRbacStatus":{"description":"Cluster rbac status","properties":{"errors":{"items":{"$ref":"#/definitions/v1ClusterResourceError"},"type":"array","uniqueItems":true}}},"v1ClusterRbacSubjects":{"description":"Cluster role ref","properties":{"name":{"type":"string"},"namespace":{"type":"string"},"type":{"enum":["User","Group","ServiceAccount"],"type":"string"}},"type":"object"},"v1ClusterRbacs":{"properties":{"items":{"items":{"$ref":"#/definitions/v1ClusterRbac"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1ClusterRefs":{"description":"Cluster Object References","properties":{"clusters":{"items":{"$ref":"#/definitions/v1ObjectReference"},"type":"array"}}},"v1ClusterRepaveSource":{"enum":["user","hubble","palette","stylus"],"type":"string"},"v1ClusterRepaveState":{"default":"Pending","enum":["Pending","Approved","Reverted"],"type":"string"},"v1ClusterRepaveStatus":{"description":"Cluster repave status","properties":{"state":{"$ref":"#/definitions/v1ClusterRepaveState"}}},"v1ClusterResourceAllocation":{"description":"Workspace resource allocation","properties":{"clusterUid":{"type":"string"},"resourceAllocation":{"$ref":"#/definitions/v1WorkspaceResourceAllocation"}}},"v1ClusterResourceError":{"description":"Cluster resource error","properties":{"msg":{"type":"string"},"name":{"type":"string"},"resourceType":{"type":"string"}}},"v1ClusterResources":{"properties":{"namespaces":{"description":"Cluster namespaces","items":{"$ref":"#/definitions/v1ResourceReference"},"type":"array"},"rbacs":{"description":"Cluster RBAC role bindings","items":{"$ref":"#/definitions/v1ResourceReference"},"type":"array"}},"type":"object"},"v1ClusterResourcesEntity":{"properties":{"namespaces":{"items":{"$ref":"#/definitions/v1ClusterNamespaceResourceInputEntity"},"type":"array","uniqueItems":true},"rbacs":{"items":{"$ref":"#/definitions/v1ClusterRbacInputEntity"},"type":"array","uniqueItems":true}},"type":"object"},"v1ClusterRestore":{"description":"Cluster Restore","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterRestoreSpec"},"status":{"$ref":"#/definitions/v1ClusterRestoreStatus"}}},"v1ClusterRestoreConfig":{"description":"Cluster restore config","properties":{"backupName":{"type":"string"},"backupRequestUid":{"type":"string"},"destinationClusterUid":{"type":"string"},"includeClusterResources":{"type":"boolean"},"includeNamespaces":{"items":{"type":"string"},"type":"array","uniqueItems":true},"preserveNodePorts":{"type":"boolean"},"restorePVs":{"type":"boolean"}},"required":["backupRequestUid","backupName","destinationClusterUid"]},"v1ClusterRestoreSpec":{"description":"Cluster Restore Spec","properties":{"clusterUid":{"type":"string"}}},"v1ClusterRestoreStatus":{"description":"Cluster Restore Status","properties":{"clusterRestoreStatuses":{"items":{"$ref":"#/definitions/v1ClusterRestoreStatusMeta"},"type":"array"}}},"v1ClusterRestoreStatusMeta":{"description":"Cluster Restore Status Meta","properties":{"actor":{"$ref":"#/definitions/v1ClusterFeatureActor"},"backupName":{"type":"string"},"backupRequestUid":{"type":"string"},"restoreRequestUid":{"type":"string"},"restoreStatusMeta":{"$ref":"#/definitions/v1RestoreStatusMeta"},"sourceClusterRef":{"$ref":"#/definitions/v1ResourceReference"},"state":{"type":"string"}}},"v1ClusterRoleRef":{"description":"Cluster role ref","properties":{"kind":{"enum":["Role","ClusterRole"],"type":"string"},"name":{"type":"string"}},"type":"object"},"v1ClusterScanLogKubeBench":{"description":"Cluster compliance scan KubeBench Log","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterComplianceScanLogSpec"},"status":{"$ref":"#/definitions/v1ClusterKubeBenchLogStatus"}}},"v1ClusterScanLogKubeHunter":{"description":"Cluster compliance scan KubeHunter Log","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterComplianceScanLogSpec"},"status":{"$ref":"#/definitions/v1ClusterKubeHunterLogStatus"}}},"v1ClusterScanLogSonobuoy":{"description":"Cluster compliance scan Sonobuoy Log","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterComplianceScanLogSpec"},"status":{"$ref":"#/definitions/v1ClusterSonobuoyLogStatus"}}},"v1ClusterScanLogSyft":{"description":"Cluster Compliance Scan Syft Log","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterComplianceScanLogSpec"},"status":{"$ref":"#/definitions/v1ClusterSyftLogStatus"}}},"v1ClusterScanTime":{"description":"Cluster compliance scan Time","properties":{"endTime":{"$ref":"#/definitions/v1Time"},"startTime":{"$ref":"#/definitions/v1Time"}}},"v1ClusterSearchInputSpec":{"properties":{"inputs":{"additionalProperties":{"$ref":"#/definitions/v1ClusterSearchInputSpecProperty"},"type":"object"}}},"v1ClusterSearchInputSpecProperty":{"properties":{"values":{"items":{"$ref":"#/definitions/v1ObjectEntity"},"type":"array","x-omitempty":true}}},"v1ClusterSonobuoyLogStatus":{"description":"Cluster compliance scan Sonobuoy Log Status","properties":{"actor":{"$ref":"#/definitions/v1ClusterFeatureActor"},"message":{"type":"string"},"reports":{"additionalProperties":{"$ref":"#/definitions/v1SonobuoyReport"},"type":"object"},"requestUid":{"type":"string"},"scanTime":{"$ref":"#/definitions/v1ClusterScanTime"},"state":{"type":"string"}}},"v1ClusterState":{"enum":["Pending","Provisioning","Running","Deleting","Deleted","Error","Importing"],"type":"string"},"v1ClusterSyftLogStatus":{"description":"Cluster compliance scan Syft Log Status","properties":{"actor":{"$ref":"#/definitions/v1ClusterFeatureActor"},"location":{"$ref":"#/definitions/v1ObjectEntity"},"message":{"type":"string"},"reports":{"items":{"$ref":"#/definitions/v1SyftReport"},"type":"array"},"requestUid":{"type":"string"},"scanContext":{"$ref":"#/definitions/v1SyftScanContext"},"scanTime":{"$ref":"#/definitions/v1ClusterScanTime"},"state":{"type":"string"}}},"v1ClusterUpgradeSettingsEntity":{"properties":{"spectroComponents":{"enum":["lock","unlock"],"type":"string"}}},"v1ClusterUsageSummary":{"description":"Cluster usage summary","properties":{"cpuCores":{"type":"number","x-omitempty":false},"isAlloy":{"type":"boolean","x-omitempty":false},"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1ClusterVirtualMachine":{"description":"VirtualMachine handles the VirtualMachines that are not running\nor are in a stopped state\nThe VirtualMachine contains the template to create the\nVirtualMachineInstance. It also mirrors the running state of the created\nVirtualMachineInstance in its status.","properties":{"apiVersion":{"description":"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values.","type":"string"},"kind":{"description":"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.","type":"string"},"metadata":{"$ref":"#/definitions/v1VmObjectMeta"},"spec":{"$ref":"#/definitions/v1ClusterVirtualMachineSpec"},"status":{"$ref":"#/definitions/v1ClusterVirtualMachineStatus"}},"required":["spec"]},"v1ClusterVirtualMachineList":{"description":"VirtualMachineList is a list of virtual machines","properties":{"apiVersion":{"description":"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values.","type":"string"},"items":{"items":{"$ref":"#/definitions/v1ClusterVirtualMachine"},"type":"array"},"kind":{"description":"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"metadata":{"$ref":"#/definitions/v1VmListMeta"}},"required":["items"],"type":"object"},"v1ClusterVirtualMachineSpec":{"description":"VirtualMachineSpec describes how the proper VirtualMachine should look like","properties":{"dataVolumeTemplates":{"description":"dataVolumeTemplates is a list of dataVolumes that the VirtualMachineInstance template can reference. DataVolumes in this list are dynamically created for the VirtualMachine and are tied to the VirtualMachine's life-cycle.","items":{"$ref":"#/definitions/v1VmDataVolumeTemplateSpec"},"type":"array"},"instancetype":{"$ref":"#/definitions/v1VmInstancetypeMatcher"},"preference":{"$ref":"#/definitions/v1VmPreferenceMatcher"},"runStrategy":{"description":"Running state indicates the requested running state of the VirtualMachineInstance mutually exclusive with Running","type":"string"},"running":{"description":"Running controls whether the associatied VirtualMachineInstance is created or not Mutually exclusive with RunStrategy","type":"boolean"},"template":{"$ref":"#/definitions/v1VmVirtualMachineInstanceTemplateSpec"}},"required":["template"],"type":"object"},"v1ClusterVirtualMachineStatus":{"description":"VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing","properties":{"conditions":{"description":"Hold the state information of the VirtualMachine and its VirtualMachineInstance","items":{"$ref":"#/definitions/v1VmVirtualMachineCondition"},"type":"array"},"created":{"description":"Created indicates if the virtual machine is created in the cluster","type":"boolean"},"memoryDumpRequest":{"$ref":"#/definitions/v1VmVirtualMachineMemoryDumpRequest"},"printableStatus":{"description":"PrintableStatus is a human readable, high-level representation of the status of the virtual machine","type":"string"},"ready":{"description":"Ready indicates if the virtual machine is running and ready","type":"boolean"},"restoreInProgress":{"description":"RestoreInProgress is the name of the VirtualMachineRestore currently executing","type":"string"},"snapshotInProgress":{"description":"SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing","type":"string"},"startFailure":{"$ref":"#/definitions/v1VmVirtualMachineStartFailure"},"stateChangeRequests":{"description":"StateChangeRequests indicates a list of actions that should be taken on a VMI e.g. stop a specific VMI then start a new one.","items":{"$ref":"#/definitions/v1VmVirtualMachineStateChangeRequest"},"type":"array"},"volumeRequests":{"description":"VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.","items":{"$ref":"#/definitions/v1VmVirtualMachineVolumeRequest"},"type":"array","x-kubernetes-list-type":"atomic"},"volumeSnapshotStatuses":{"description":"VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.","items":{"$ref":"#/definitions/v1VmVolumeSnapshotStatus"},"type":"array"}},"type":"object","x-nullable":true},"v1ClusterVirtualPacksValue":{"description":"Virtual cluster packs value","properties":{"distroType":{"type":"string"},"layer":{"type":"string"},"values":{"type":"string"}},"type":"object"},"v1ClusterVirtualPacksValues":{"description":"Virtual cluster packs values","properties":{"packs":{"items":{"$ref":"#/definitions/v1ClusterVirtualPacksValue"},"type":"array"}},"type":"object"},"v1ClusterWorkload":{"description":"Cluster workload summary","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"$ref":"#/definitions/v1ClusterWorkloadSpec"}},"type":"object"},"v1ClusterWorkloadCondition":{"description":"Cluster workload condition","properties":{"lastTransitionTime":{"$ref":"#/definitions/v1Time"},"lastUpdateTime":{"$ref":"#/definitions/v1Time"},"message":{"type":"string"},"reason":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"}},"type":"object"},"v1ClusterWorkloadCronJob":{"description":"Cluster workload cronjob summary","properties":{"metadata":{"$ref":"#/definitions/v1ClusterWorkloadMetadata"},"spec":{"$ref":"#/definitions/v1ClusterWorkloadCronJobSpec"},"status":{"$ref":"#/definitions/v1ClusterWorkloadCronJobStatus"}},"type":"object"},"v1ClusterWorkloadCronJobSpec":{"description":"Cluster workload cronjob spec","properties":{"schedule":{"type":"string"}},"type":"object"},"v1ClusterWorkloadCronJobStatus":{"description":"Cluster workload cronjob status","properties":{"lastScheduleTime":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1ClusterWorkloadCronJobs":{"description":"Cluster workload cronjobs summary","properties":{"cronJobs":{"items":{"$ref":"#/definitions/v1ClusterWorkloadCronJob"},"type":"array"}},"type":"object"},"v1ClusterWorkloadDaemonSet":{"description":"Cluster workload daemonset summary","properties":{"metadata":{"$ref":"#/definitions/v1ClusterWorkloadMetadata"},"status":{"$ref":"#/definitions/v1ClusterWorkloadDaemonSetStatus"}},"type":"object"},"v1ClusterWorkloadDaemonSetStatus":{"description":"Cluster workload daemonset status","properties":{"available":{"format":"int32","type":"integer"},"currentScheduled":{"format":"int32","type":"integer"},"desiredScheduled":{"format":"int32","type":"integer"},"misScheduled":{"format":"int32","type":"integer"},"ready":{"format":"int32","type":"integer"},"updatedScheduled":{"format":"int32","type":"integer"}},"type":"object"},"v1ClusterWorkloadDaemonSets":{"description":"Cluster workload daemonset summary","properties":{"daemonSets":{"items":{"$ref":"#/definitions/v1ClusterWorkloadDaemonSet"},"type":"array"}},"type":"object"},"v1ClusterWorkloadDeployment":{"description":"Cluster workload deployment summary","properties":{"metadata":{"$ref":"#/definitions/v1ClusterWorkloadMetadata"},"status":{"$ref":"#/definitions/v1ClusterWorkloadDeploymentStatus"}},"type":"object"},"v1ClusterWorkloadDeploymentStatus":{"description":"Cluster workload deployment status","properties":{"replicas":{"$ref":"#/definitions/v1ClusterWorkloadReplicaStatus"}},"type":"object"},"v1ClusterWorkloadDeployments":{"description":"Cluster workload deployments summary","properties":{"deployments":{"items":{"$ref":"#/definitions/v1ClusterWorkloadDeployment"},"type":"array"}},"type":"object"},"v1ClusterWorkloadJob":{"description":"Cluster workload job summary","properties":{"metadata":{"$ref":"#/definitions/v1ClusterWorkloadMetadata"},"status":{"$ref":"#/definitions/v1ClusterWorkloadJobStatus"}},"type":"object"},"v1ClusterWorkloadJobStatus":{"description":"Cluster workload job status","properties":{"completionTime":{"$ref":"#/definitions/v1Time"},"conditions":{"items":{"$ref":"#/definitions/v1ClusterWorkloadCondition"},"type":"array"},"startTime":{"$ref":"#/definitions/v1Time"},"succeeded":{"format":"int32","type":"integer"}},"type":"object"},"v1ClusterWorkloadJobs":{"description":"Cluster workload jobs summary","properties":{"jobs":{"items":{"$ref":"#/definitions/v1ClusterWorkloadJob"},"type":"array"}},"type":"object"},"v1ClusterWorkloadMetadata":{"description":"Cluster workload metadata","properties":{"creationTimestamp":{"$ref":"#/definitions/v1Time"},"entity":{"$ref":"#/definitions/v1ClusterWorkloadRef"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"namespace":{"type":"string"}},"type":"object"},"v1ClusterWorkloadNamespace":{"description":"Cluster workload namespace summary","properties":{"metadata":{"$ref":"#/definitions/v1ClusterWorkloadMetadata"},"status":{"$ref":"#/definitions/v1ClusterWorkloadNamespaceStatus"}},"type":"object"},"v1ClusterWorkloadNamespaceStatus":{"description":"Cluster workload namespace status","properties":{"phase":{"type":"string"}},"type":"object"},"v1ClusterWorkloadNamespaces":{"description":"Cluster workload namespaces summary","properties":{"namespaces":{"items":{"$ref":"#/definitions/v1ClusterWorkloadNamespace"},"type":"array"}}},"v1ClusterWorkloadPod":{"description":"Cluster workload pod summary","properties":{"metadata":{"$ref":"#/definitions/v1ClusterWorkloadPodMetadata"},"spec":{"$ref":"#/definitions/v1ClusterWorkloadPodSpec"},"status":{"$ref":"#/definitions/v1ClusterWorkloadPodStatus"}},"type":"object"},"v1ClusterWorkloadPodContainer":{"description":"Cluster workload pod container","properties":{"image":{"type":"string"},"name":{"type":"string"},"resources":{"$ref":"#/definitions/v1ClusterWorkloadPodContainerResources"}},"type":"object"},"v1ClusterWorkloadPodContainerResource":{"description":"Cluster workload pod container resource","properties":{"cpu":{"format":"int32","type":"integer","x-omitempty":false},"cpuUnit":{"type":"string"},"memory":{"format":"int64","type":"integer","x-omitempty":false},"memoryUnit":{"type":"string"}},"type":"object"},"v1ClusterWorkloadPodContainerResources":{"description":"Cluster workload pod container resources","properties":{"limits":{"$ref":"#/definitions/v1ClusterWorkloadPodContainerResource"},"requests":{"$ref":"#/definitions/v1ClusterWorkloadPodContainerResource"}},"type":"object"},"v1ClusterWorkloadPodContainerState":{"description":"Cluster workload pod container state","properties":{"exitCode":{"format":"int32","type":"integer","x-omitempty":false},"finishedAt":{"$ref":"#/definitions/v1Time"},"reason":{"type":"string"},"startedAt":{"$ref":"#/definitions/v1Time"},"state":{"type":"string"}},"type":"object"},"v1ClusterWorkloadPodContainerStatus":{"description":"Cluster workload pod container status","properties":{"image":{"type":"string"},"name":{"type":"string"},"ready":{"type":"boolean","x-omitempty":false},"restartCount":{"format":"int32","type":"integer","x-omitempty":false},"started":{"type":"boolean","x-omitempty":false},"state":{"$ref":"#/definitions/v1ClusterWorkloadPodContainerState"}},"type":"object"},"v1ClusterWorkloadPodMetadata":{"description":"Cluster workload pod metadata","properties":{"associatedRefs":{"items":{"$ref":"#/definitions/v1ClusterWorkloadRef"},"type":"array"},"creationTimestamp":{"$ref":"#/definitions/v1Time"},"entity":{"$ref":"#/definitions/v1ClusterWorkloadRef"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"machineUid":{"type":"string"},"namespace":{"type":"string"},"nodename":{"type":"string"}},"type":"object"},"v1ClusterWorkloadPodSpec":{"description":"Cluster workload pod spec","properties":{"containers":{"items":{"$ref":"#/definitions/v1ClusterWorkloadPodContainer"},"type":"array"},"volumes":{"items":{"$ref":"#/definitions/v1ClusterWorkloadPodVolume"},"type":"array"}},"type":"object"},"v1ClusterWorkloadPodStatus":{"description":"Cluster workload pod status","properties":{"containers":{"items":{"$ref":"#/definitions/v1ClusterWorkloadPodContainerStatus"},"type":"array"},"phase":{"type":"string"},"podIp":{"type":"string"},"qosClass":{"type":"string"}},"type":"object"},"v1ClusterWorkloadPodVolume":{"description":"Cluster workload pod volume","properties":{"name":{"type":"string"}},"type":"object"},"v1ClusterWorkloadPods":{"description":"Cluster workload pods summary","properties":{"pods":{"items":{"$ref":"#/definitions/v1ClusterWorkloadPod"},"type":"array"}}},"v1ClusterWorkloadRef":{"description":"Cluster workload ref","properties":{"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1ClusterWorkloadReplicaStatus":{"description":"Cluster workload replica status","properties":{"available":{"format":"int32","type":"integer","x-omitempty":false},"ready":{"format":"int32","type":"integer","x-omitempty":false},"total":{"format":"int32","type":"integer","x-omitempty":false},"updated":{"format":"int32","type":"integer","x-omitempty":false}},"type":"object"},"v1ClusterWorkloadRoleBinding":{"description":"Cluster workload rbac binding summary","properties":{"metadata":{"$ref":"#/definitions/v1ClusterWorkloadMetadata"},"spec":{"$ref":"#/definitions/v1ClusterRbacBinding"}},"type":"object"},"v1ClusterWorkloadRoleBindings":{"description":"Cluster workload rbac bindings summary","properties":{"bindings":{"items":{"$ref":"#/definitions/v1ClusterWorkloadRoleBinding"},"type":"array"}},"type":"object"},"v1ClusterWorkloadSpec":{"description":"Cluster workload spec","properties":{"clusterroleBindings":{"items":{"$ref":"#/definitions/v1ClusterWorkloadRoleBinding"},"type":"array"},"cronJobs":{"items":{"$ref":"#/definitions/v1ClusterWorkloadCronJob"},"type":"array"},"daemonSets":{"items":{"$ref":"#/definitions/v1ClusterWorkloadDaemonSet"},"type":"array"},"deployments":{"items":{"$ref":"#/definitions/v1ClusterWorkloadDeployment"},"type":"array"},"jobs":{"items":{"$ref":"#/definitions/v1ClusterWorkloadJob"},"type":"array"},"pods":{"items":{"$ref":"#/definitions/v1ClusterWorkloadPod"},"type":"array"},"roleBindings":{"items":{"$ref":"#/definitions/v1ClusterWorkloadRoleBinding"},"type":"array"},"statefulSets":{"items":{"$ref":"#/definitions/v1ClusterWorkloadStatefulSet"},"type":"array"}},"type":"object"},"v1ClusterWorkloadStatefulSet":{"description":"Cluster workload statefulset summary","properties":{"metadata":{"$ref":"#/definitions/v1ClusterWorkloadMetadata"},"status":{"$ref":"#/definitions/v1ClusterWorkloadStatefulSetStatus"}},"type":"object"},"v1ClusterWorkloadStatefulSetStatus":{"description":"Cluster workload statefulset status","properties":{"replicas":{"$ref":"#/definitions/v1ClusterWorkloadReplicaStatus"}},"type":"object"},"v1ClusterWorkloadStatefulSets":{"description":"Cluster workload statefulsets summary","properties":{"statefulSets":{"items":{"$ref":"#/definitions/v1ClusterWorkloadStatefulSet"},"type":"array"}},"type":"object"},"v1ClusterWorkloadsFilter":{"description":"Cluster workloads filter","properties":{"namespaces":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1ClusterWorkloadsSpec":{"description":"Cluster workloads spec","properties":{"filter":{"$ref":"#/definitions/v1ClusterWorkloadsFilter"}},"type":"object"},"v1ClustersInfo":{"description":"Active clusters information","properties":{"clustersMeta":{"items":{"$ref":"#/definitions/v1ClusterMeta"},"type":"array","uniqueItems":true},"totalActiveClusters":{"format":"int64","type":"number"},"totalActiveGreenFieldClusters":{"format":"int64","type":"number"},"totalActiveImportedClusters":{"format":"int64","type":"number"},"totalClustersDeleted":{"format":"int64","type":"number"},"totalClustersDeployed":{"format":"int64","type":"number"}},"type":"object"},"v1ComplianceScanConfig":{"description":"Compliance Scan config","properties":{"schedule":{"$ref":"#/definitions/v1ClusterFeatureSchedule"}}},"v1ComplianceScanDriverSpec":{"description":"Compliance Scan driver spec","properties":{"config":{"$ref":"#/definitions/v1ComplianceScanConfig"},"isClusterConfig":{"type":"boolean"}}},"v1ComputeMetrics":{"description":"Compute metrics","properties":{"lastUpdatedTime":{"$ref":"#/definitions/v1Time"},"limit":{"type":"number","x-omitempty":false},"request":{"type":"number","x-omitempty":false},"total":{"type":"number","x-omitempty":false},"unit":{"type":"string"},"usage":{"type":"number","x-omitempty":false}},"type":"object"},"v1ComputeRate":{"description":"Compute estimated rate information","properties":{"rate":{"format":"float64","type":"number","x-omitempty":false},"type":{"type":"string"}},"type":"object"},"v1ConfigReverseProxy":{"description":"Describes the reverse proxy configuration","properties":{"caCert":{"description":"Describes the ca certificate for system's reverse proxy","type":"string"},"clientCert":{"description":"Describes the client certificate for system's reverse proxy","type":"string"},"clientKey":{"description":"Describes the client certificate key for system's reverse proxy","type":"string"},"port":{"description":"Describes the system's reverse proxy server port","type":"integer"},"protocol":{"description":"Describes the system's reverse proxy server protocol. Possible values [https, http]","enum":["http","https"],"type":"string"},"server":{"description":"Describes the system's reverse proxy server","type":"string"}}},"v1ConstraintError":{"properties":{"code":{"type":"string"},"message":{"type":"string"}},"type":"object"},"v1ConstraintValidatorResponse":{"description":"Constraint validator response","properties":{"results":{"items":{"$ref":"#/definitions/v1ConstraintValidatorResult"},"type":"array","uniqueItems":true}},"type":"object"},"v1ConstraintValidatorResult":{"description":"Constraint validator result","properties":{"displayName":{"type":"string"},"errors":{"items":{"$ref":"#/definitions/v1ConstraintError"},"type":"array","uniqueItems":true},"name":{"type":"string"}},"type":"object"},"v1ControlPlaneEndPoint":{"properties":{"ddnsSearchDomain":{"description":"DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required","type":"string"},"host":{"description":"IP or FQDN(External/DDNS)","type":"string"},"type":{"description":"VIP or External","enum":["VIP","External","DDNS"],"type":"string"}},"type":"object"},"v1ControlPlaneHealthCheckTimeoutEntity":{"properties":{"controlPlaneHealthCheckTimeout":{"description":"ControlPlaneHealthCheckTimeout is the timeout to check for ready state of the control plane nodes","type":"string"}},"type":"object"},"v1CoxEdgeAccount":{"description":"CoxEdge cloud account information","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the account.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1CoxEdgeCloudAccount"},"status":{"$ref":"#/definitions/v1CloudAccountStatus"}},"type":"object"},"v1CoxEdgeAccounts":{"properties":{"items":{"items":{"$ref":"#/definitions/v1CoxEdgeAccount"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1CoxEdgeBaseUrls":{"description":"List of CoxEdge base urls","properties":{"baseUrls":{"items":{"type":"string"},"type":"array"}},"required":["baseUrls"],"type":"object"},"v1CoxEdgeCloudAccount":{"description":"CoxEdge cloud account","properties":{"apiBaseUrl":{"description":"The base url - used to make api calls","type":"string"},"apiKey":{"description":"CoxEdge cloud account ApiKey","type":"string"},"environment":{"description":"The environment belonging to the organization","type":"string"},"organizationId":{"description":"The Id of organization","type":"string"},"service":{"description":"The service for which the organization is allowed to provision resources","type":"string"}},"required":["apiBaseUrl","apiKey"],"type":"object"},"v1CoxEdgeCloudClusterConfigEntity":{"description":"CoxEdge cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1CoxEdgeClusterConfig"}},"type":"object"},"v1CoxEdgeCloudConfig":{"description":"CoxEdgeCloudConfig is the Schema for the coxedgecloudconfigs API","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Cloud type of the cloud config","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1CoxEdgeCloudConfigSpec"},"status":{"$ref":"#/definitions/v1CoxEdgeCloudConfigStatus"}},"type":"object"},"v1CoxEdgeCloudConfigSpec":{"description":"CoxEdgeCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api","properties":{"cloudAccountRef":{"$ref":"#/definitions/v1ObjectReference","description":"cloudAccountRef should point to the secret which contains GcpCloudAccount"},"clusterConfig":{"$ref":"#/definitions/v1CoxEdgeClusterConfig"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1CoxEdgeMachinePoolConfig"},"type":"array"}},"type":"object"},"v1CoxEdgeCloudConfigStatus":{"description":"CoxEdgeCloudConfigStatus defines the observed state of CoxEdgeCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool","properties":{"conditions":{"description":"spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`","items":{"$ref":"#/definitions/v1ClusterCondition"},"type":"array"},"imageID":{"description":"For mold controller to identify if is there any changes in Pack","type":"string"}},"type":"object"},"v1CoxEdgeClusterConfig":{"description":"Cluster level configuration for coxedge cloud and applicable for all the machine pools","properties":{"coxEdgeLoadBalancerConfig":{"$ref":"#/definitions/v1CoxEdgeLoadBalancerConfig"},"coxEdgeWorkerLoadBalancerConfig":{"$ref":"#/definitions/v1CoxEdgeLoadBalancerConfig"},"environment":{"type":"string"},"organizationId":{"type":"string"},"sshAuthorizedKeys":{"description":"CoxEdge ssh authorized keys","items":{"type":"string"},"type":"array"}},"required":["sshAuthorizedKeys","coxEdgeLoadBalancerConfig"],"type":"object"},"v1CoxEdgeCredentials":{"description":"CoxEdge credentials to get organizations","properties":{"apiBaseUrl":{"description":"CoxEdge baseUrl - for api calls","type":"string"},"apiKey":{"description":"CoxEdge ApiKey - secret for api calls","type":"string"}},"type":"object"},"v1CoxEdgeDeployment":{"properties":{"cpuUtilization":{"format":"int32","type":"integer"},"enableAutoScaling":{"type":"boolean"},"instancesPerPop":{"format":"int32","type":"integer"},"maxInstancesPerPop":{"format":"int32","type":"integer"},"minInstancesPerPop":{"format":"int32","type":"integer"},"name":{"type":"string"},"pops":{"items":{"type":"string"},"type":"array"}}},"v1CoxEdgeEnvironment":{"description":"CoxEdge environment entity","properties":{"id":{"description":"CoxEdge environment id","type":"string"},"isDeleted":{"description":"CoxEdge environment state","type":"boolean"},"name":{"description":"CoxEdge environment name","type":"string"}},"type":"object"},"v1CoxEdgeEnvironments":{"description":"List of CoxEdge environments","properties":{"environments":{"items":{"$ref":"#/definitions/v1CoxEdgeEnvironment"},"type":"array"}},"required":["environments"],"type":"object"},"v1CoxEdgeEnvironmentsRequest":{"description":"Request payload to get CoxEdge environments","properties":{"credentials":{"$ref":"#/definitions/v1CoxEdgeCredentials"},"organizationId":{"description":"CoxEdge organizationId","type":"string"}},"type":"object"},"v1CoxEdgeInstanceTypes":{"description":"List of CoxEdge instance types","properties":{"instanceTypes":{"items":{"$ref":"#/definitions/v1InstanceType"},"type":"array"}},"type":"object"},"v1CoxEdgeLoadBalancerConfig":{"description":"CoxEdge loadbalancer config","properties":{"pops":{"description":"CoxEdge PoPs - geographical location for the loadbalancer","items":{"type":"string"},"type":"array"}},"type":"object"},"v1CoxEdgeLoadPersistentStorage":{"description":"CoxEdge load persistent storage","properties":{"path":{"description":"Coxedge load persistent storage path","type":"string"},"size":{"description":"Coxedge load persistent storage size","format":"int64","type":"integer"}},"type":"object"},"v1CoxEdgeMachine":{"description":"CoxEdge cloud VM definition","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the machine.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1CoxEdgeMachineSpec"},"status":{"$ref":"#/definitions/v1CloudMachineStatus"}},"type":"object"},"v1CoxEdgeMachinePoolCloudConfigEntity":{"properties":{"deployments":{"items":{"$ref":"#/definitions/v1CoxEdgeDeployment"},"type":"array"},"persistentStorages":{"description":"Array of coxedge load persistent storages","items":{"$ref":"#/definitions/v1CoxEdgeLoadPersistentStorage"},"type":"array","uniqueItems":true},"securityGroupRules":{"items":{"$ref":"#/definitions/v1CoxEdgeSecurityGroupRule"},"type":"array"},"spec":{"type":"string"}},"type":"object"},"v1CoxEdgeMachinePoolConfig":{"properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"additionalLabels","type":"object"},"additionalTags":{"additionalProperties":{"type":"string"},"description":"AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole","type":"object"},"deployments":{"items":{"$ref":"#/definitions/v1CoxEdgeDeployment"},"type":"array"},"instanceConfig":{"$ref":"#/definitions/v1InstanceConfig"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean"},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"machinePoolProperties":{"$ref":"#/definitions/v1MachinePoolProperties"},"maxSize":{"description":"max size of the pool, for scaling","format":"int32","type":"integer"},"minSize":{"description":"min size of the pool, for scaling","format":"int32","type":"integer"},"name":{"type":"string"},"nodeRepaveInterval":{"description":"Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster","format":"int32","type":"integer"},"persistentStorages":{"description":"Array of coxedge load persistent storages","items":{"$ref":"#/definitions/v1CoxEdgeLoadPersistentStorage"},"type":"array","uniqueItems":true},"securityGroupRules":{"items":{"$ref":"#/definitions/v1CoxEdgeSecurityGroupRule"},"type":"array"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"spec":{"type":"string"},"taints":{"description":"master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array","uniqueItems":true},"updateStrategy":{"$ref":"#/definitions/v1UpdateStrategy","description":"rolling update strategy for this machinepool if not specified, will use ScaleOut"},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean"}},"required":["isControlPlane"],"type":"object"},"v1CoxEdgeMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1CoxEdgeMachinePoolCloudConfigEntity"},"poolConfig":{"$ref":"#/definitions/v1MachinePoolConfigEntity"}},"required":["cloudConfig"],"type":"object"},"v1CoxEdgeMachineSpec":{"description":"CoxEdge cloud VM definition spec","properties":{"addAnycastIpAddress":{"type":"boolean"},"deployments":{"items":{"$ref":"#/definitions/v1CoxEdgeDeployment"},"type":"array"},"image":{"type":"string"},"persistentStorages":{"items":{"$ref":"#/definitions/v1CoxEdgeLoadPersistentStorage"},"type":"array"},"ports":{"items":{"$ref":"#/definitions/v1CoxEdgePort"},"type":"array"},"providerId":{"type":"string"},"specs":{"type":"string"},"sshAuthorizedKeys":{"items":{"type":"string"},"type":"array"}},"type":"object"},"v1CoxEdgeMachines":{"description":"CoxEdge machine list","properties":{"items":{"items":{"$ref":"#/definitions/v1CoxEdgeMachine"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1CoxEdgeOrganization":{"description":"CoxEdge Organization entity","properties":{"id":{"description":"CoxEdge organization id","type":"string"},"isDeleted":{"description":"CoxEdge organization state","type":"boolean"},"name":{"description":"CoxEdge organization name","type":"string"}},"type":"object"},"v1CoxEdgeOrganizations":{"description":"List of CoxEdge organizations","properties":{"organizations":{"items":{"$ref":"#/definitions/v1CoxEdgeOrganization"},"type":"array"}},"required":["organizations"],"type":"object"},"v1CoxEdgePort":{"description":"CoxEdge network port","properties":{"protocol":{"type":"string"},"publicPort":{"type":"string"},"publicPortDesc":{"type":"string"}},"type":"object"},"v1CoxEdgeRegion":{"description":"CoxEdge region entity","properties":{"code":{"description":"Code of the CoxEdge region","type":"string"},"location":{"$ref":"#/definitions/v1ClusterLocation"},"name":{"description":"Name of the CoxEdge region","type":"string"}},"type":"object"},"v1CoxEdgeRegions":{"description":"List of CoxEdge regions","properties":{"regions":{"items":{"$ref":"#/definitions/v1CoxEdgeRegion"},"type":"array"}},"required":["regions"],"type":"object"},"v1CoxEdgeSecurityGroupRule":{"properties":{"action":{"enum":["block","allow"],"type":"string"},"description":{"type":"string"},"portRange":{"type":"string"},"protocol":{"enum":["TCP","UDP","TCP_UDP","ESP","AH","ICMP","GRE"],"type":"string"},"source":{"type":"string"},"type":{"type":"string"}}},"v1CoxEdgeService":{"description":"CoxEdge service entity","properties":{"code":{"description":"CoxEdge service code","type":"string"},"id":{"description":"CoxEdge service id","type":"string"},"name":{"description":"CoxEdge service name","type":"string"}},"type":"object"},"v1CoxEdgeServices":{"description":"List of CoxEdge services","properties":{"services":{"items":{"$ref":"#/definitions/v1CoxEdgeService"},"type":"array"}},"required":["services"],"type":"object"},"v1CustomAccount":{"description":"Custom account information","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the account.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1CustomCloudAccount"},"status":{"$ref":"#/definitions/v1CloudAccountStatus"}},"type":"object"},"v1CustomAccountEntity":{"description":"Custom account information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"$ref":"#/definitions/v1CustomCloudAccount"}},"type":"object"},"v1CustomAccounts":{"properties":{"items":{"items":{"$ref":"#/definitions/v1CustomAccount"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1CustomCloudAccount":{"properties":{"credentials":{"additionalProperties":{"type":"string"},"description":"Cloud account credentials","type":"object"}},"required":["credentials"],"type":"object"},"v1CustomCloudClusterConfigEntity":{"description":"Custom cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1CustomClusterConfig"}},"type":"object"},"v1CustomCloudConfig":{"description":"CustomCloudConfig is the Schema for the custom cloudconfigs API","properties":{"kind":{"description":"Cloud type of the cloud config","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1CustomCloudConfigSpec"}},"type":"object"},"v1CustomCloudConfigSpec":{"description":"CustomCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api","properties":{"cloudAccountRef":{"$ref":"#/definitions/v1ObjectReference","description":"cloudAccountRef should point to the secret which contains CustomCloudAccount"},"clusterConfig":{"$ref":"#/definitions/v1CustomClusterConfig"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1CustomMachinePoolConfig"},"type":"array"}},"type":"object"},"v1CustomCloudMetaEntity":{"description":"Custom cloud meta entity","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta","description":"Custom cloud metadata"},"spec":{"$ref":"#/definitions/v1CustomCloudMetaSpecEntity"}},"type":"object"},"v1CustomCloudMetaSpecEntity":{"description":"Custom cloud spec response entity","properties":{"cloudCategory":{"$ref":"#/definitions/v1CloudCategory"},"displayName":{"description":"Custom cloud displayName","type":"string"},"isManaged":{"description":"If the custom cloud is a managed cluster","type":"boolean"},"logo":{"description":"Custom cloud logo","type":"string"}},"type":"object"},"v1CustomCloudRateConfig":{"description":"Private cloud rate config","properties":{"cloudType":{"type":"string"},"rateConfig":{"$ref":"#/definitions/v1PrivateCloudRateConfig"}}},"v1CustomCloudRequestEntity":{"description":"Custom cloud request entity","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity","description":"Custom cloud metadata"},"spec":{"$ref":"#/definitions/v1CustomCloudSpecEntity"}},"type":"object"},"v1CustomCloudSpecEntity":{"description":"Custom cloud request entity spec","properties":{"cloudCategory":{"$ref":"#/definitions/v1CloudCategory"},"displayName":{"description":"Custom cloud displayName","type":"string"},"isControlPlaneManaged":{"description":"If the custom cloud is a managed cluster","type":"boolean"},"logo":{"description":"Custom cloud logo","type":"string"}},"type":"object"},"v1CustomCloudType":{"properties":{"cloudCategory":{"$ref":"#/definitions/v1CloudCategory"},"cloudFamily":{"description":"Cloud grouping as family","type":"string"},"displayName":{"description":"Custom cloudtype displayName","type":"string"},"isCustom":{"description":"If it is a custom cloudtype","type":"boolean","x-omitempty":false},"isManaged":{"description":"If custom cloudtype is managed","type":"boolean","x-omitempty":false},"isVertex":{"description":"If cloud is support for Vertex env","type":"boolean","x-omitempty":false},"logo":{"description":"Custom cloudtype logo","type":"string"},"name":{"description":"Custom cloudtype name","type":"string"}},"type":"object"},"v1CustomCloudTypeCloudAccountKeys":{"description":"Custom cloudType custom cloud account keys","properties":{"keys":{"description":"Array of custom cloud type cloud account keys","items":{"type":"string"},"type":"array"}},"type":"object"},"v1CustomCloudTypeContentResponse":{"description":"Custom cloudType content response","properties":{"yaml":{"description":"custom cloud type content","type":"string"}},"type":"object"},"v1CustomCloudTypes":{"description":"Custom cloudType content response","properties":{"cloudTypes":{"description":"Array of custom cloud types","items":{"$ref":"#/definitions/v1CustomCloudType"},"type":"array"}},"type":"object"},"v1CustomClusterConfig":{"description":"Cluster level configuration for Custom cloud and applicable for all the machine pools","properties":{"values":{"description":"YAML string for Cluster and CloudCluster","type":"string"}},"required":["values"],"type":"object"},"v1CustomClusterConfigEntity":{"properties":{"location":{"$ref":"#/definitions/v1ClusterLocation"},"machineManagementConfig":{"$ref":"#/definitions/v1MachineManagementConfig"},"resources":{"$ref":"#/definitions/v1ClusterResourcesEntity"}},"type":"object"},"v1CustomInstanceType":{"properties":{"diskGiB":{"description":"DiskGiB is the size of a custom machine's disk, in GiB","format":"int32","type":"integer"},"memoryMiB":{"description":"MemoryMiB is the size of a custom machine's memory, in MiB","format":"int64","type":"integer"},"name":{"type":"string"},"numCPUs":{"description":"NumCPUs is the number in a custom machine","format":"int32","type":"integer"}},"type":"object"},"v1CustomMachine":{"description":"Custom cloud VM definition","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the machine.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1CustomMachineSpec"},"status":{"$ref":"#/definitions/v1CloudMachineStatus"}},"type":"object"},"v1CustomMachinePoolBaseConfigEntity":{"description":"Machine pool configuration for the custom cluster","properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"Additional labels to be part of the machine pool","type":"object"},"isControlPlane":{"description":"Whether this pool is for control plane","type":"boolean","x-omitempty":false},"taints":{"description":"Master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array","uniqueItems":true},"useControlPlaneAsWorker":{"description":"If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean","x-omitempty":false}},"type":"object"},"v1CustomMachinePoolCloudConfigEntity":{"properties":{"values":{"description":"Machine pool configuration as yaml content","type":"string"}},"type":"object"},"v1CustomMachinePoolConfig":{"properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"additionalLabels","type":"object"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean","x-omitempty":false},"name":{"type":"string"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"taints":{"description":"master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array","uniqueItems":true},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean","x-omitempty":false},"values":{"description":"YAML string for machine","type":"string"}},"required":["isControlPlane"],"type":"object"},"v1CustomMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1CustomMachinePoolCloudConfigEntity"},"poolConfig":{"$ref":"#/definitions/v1CustomMachinePoolBaseConfigEntity"}},"required":["cloudConfig"],"type":"object"},"v1CustomMachineSpec":{"description":"Custom cloud VM definition spec","properties":{"cloudType":{"type":"string"},"hostName":{"type":"string"},"imageId":{"type":"string"},"instanceType":{"$ref":"#/definitions/v1CustomInstanceType"},"nics":{"items":{"$ref":"#/definitions/v1CustomNic"},"type":"array"},"sshKeyName":{"type":"string"}}},"v1CustomMachines":{"description":"List of Custom machines","properties":{"items":{"items":{"$ref":"#/definitions/v1CustomMachine"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1CustomNic":{"description":"Custom network interface","properties":{"index":{"format":"int8","type":"integer"},"networkName":{"type":"string"},"privateIPs":{"items":{"type":"string"},"type":"array"},"publicIp":{"type":"string"}},"type":"object"},"v1DashboardWorkspace":{"description":"Workspace information","properties":{"meta":{"$ref":"#/definitions/v1DashboardWorkspaceMeta"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1DashboardWorkspaceSpec"},"status":{"$ref":"#/definitions/v1DashboardWorkspaceStatus"}}},"v1DashboardWorkspaceAllocation":{"description":"Workspace allocation","properties":{"cpu":{"$ref":"#/definitions/v1DashboardWorkspaceResourceAllocation"},"memory":{"$ref":"#/definitions/v1DashboardWorkspaceResourceAllocation"}}},"v1DashboardWorkspaceClusterRef":{"description":"Workspace cluster reference","properties":{"name":{"type":"string"},"uid":{"type":"string"}}},"v1DashboardWorkspaceMeta":{"description":"Deprecated. Workspace meta data","properties":{"clusterNames":{"description":"Deprecated. Use clusterRefs","items":{"type":"string"},"type":"array","uniqueItems":true},"clusterRefs":{"items":{"$ref":"#/definitions/v1DashboardWorkspaceClusterRef"},"type":"array","uniqueItems":true},"creationTime":{"$ref":"#/definitions/v1Time"},"name":{"type":"string"},"namespaces":{"items":{"type":"string"},"type":"array","uniqueItems":true},"uid":{"type":"string"}}},"v1DashboardWorkspaceNamespaceAllocation":{"description":"Workspace namespace allocation","properties":{"name":{"type":"string"},"total":{"$ref":"#/definitions/v1DashboardWorkspaceAllocation"}}},"v1DashboardWorkspaceQuota":{"description":"Workspace resource quota","properties":{"resourceAllocation":{"$ref":"#/definitions/v1DashboardWorkspaceQuotaResourceAllocation"}}},"v1DashboardWorkspaceQuotaResourceAllocation":{"description":"Workspace quota resource allocation","properties":{"cpu":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"memory":{"exclusiveMinimum":true,"minimum":0,"type":"number"}}},"v1DashboardWorkspaceResourceAllocation":{"description":"Workspace resource allocation","properties":{"allocated":{"format":"float64","type":"number","x-omitempty":false},"usage":{"format":"float64","type":"number","x-omitempty":false}}},"v1DashboardWorkspaceSpec":{"description":"Workspace spec summary","properties":{"clusterRefs":{"items":{"$ref":"#/definitions/v1DashboardWorkspaceClusterRef"},"type":"array","uniqueItems":true},"namespaces":{"items":{"type":"string"},"type":"array","uniqueItems":true},"quota":{"$ref":"#/definitions/v1DashboardWorkspaceQuota"}}},"v1DashboardWorkspaceStatus":{"description":"Workspace status","properties":{"namespaces":{"items":{"$ref":"#/definitions/v1DashboardWorkspaceNamespaceAllocation"},"type":"array","uniqueItems":true},"total":{"$ref":"#/definitions/v1DashboardWorkspaceAllocation"}}},"v1DashboardWorkspaces":{"properties":{"cpuUnit":{"type":"string"},"items":{"items":{"$ref":"#/definitions/v1DashboardWorkspace"},"type":"array","uniqueItems":true},"memoryUnit":{"type":"string"}},"required":["items"],"type":"object"},"v1DataSinkConfig":{"description":"Data sink","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1DataSinkSpec"}},"type":"object"},"v1DataSinkSpec":{"properties":{"auditDataSinks":{"items":{"$ref":"#/definitions/v1DataSinkableSpec"},"type":"array","uniqueItems":true}},"type":"object"},"v1DataSinkableSpec":{"properties":{"cloudWatch":{"$ref":"#/definitions/v1CloudWatch"},"type":{"enum":["cloudwatch"],"type":"string"}},"type":"object"},"v1DatabaseTransferJob":{"description":"database transfer job details","properties":{"backupStatus":{"$ref":"#/definitions/v1TransferJob"},"backupUid":{"type":"string"},"mode":{"enum":["FileSystem","Ftp"],"type":"string"}},"type":"object"},"v1DatabaseTransferStatus":{"description":"database transfer status","properties":{"backups":{"items":{"$ref":"#/definitions/v1DatabaseTransferJob"},"type":"array"},"isActive":{"type":"boolean"}},"type":"object"},"v1DeleteMeta":{"description":"Properties to send back after deletion operation","properties":{"count":{"format":"int64","type":"integer"},"items":{"additionalProperties":{"type":"string"},"type":"object"}}},"v1DeletedMsg":{"description":"Deleted response with message","properties":{"msg":{"type":"string"}}},"v1DeveloperCredit":{"description":"Credits allocated for each tenant/user","properties":{"cpu":{"description":"cpu in cores","format":"int32","type":"number","x-omitempty":false},"memoryGiB":{"description":"memory in GiB","format":"int32","type":"number","x-omitempty":false},"storageGiB":{"description":"storage in GiB","format":"int32","type":"integer","x-omitempty":false},"virtualClustersLimit":{"description":"number of active virtual clusters","format":"int32","type":"number","x-omitempty":false}}},"v1DeviceSpec":{"description":"DeviceSpec defines the desired state of Device","properties":{"archType":{"default":"amd64","description":"Architecture type of the edge host","enum":["arm64","amd64"],"type":"string"},"cpu":{"$ref":"#/definitions/v1CPU"},"disks":{"items":{"$ref":"#/definitions/v1Disk"},"type":"array"},"gpus":{"items":{"$ref":"#/definitions/v1GPUDeviceSpec"},"type":"array"},"memory":{"$ref":"#/definitions/v1Memory"},"nics":{"items":{"$ref":"#/definitions/v1Nic"},"type":"array"},"os":{"$ref":"#/definitions/v1OS"}},"type":"object"},"v1Disk":{"properties":{"controller":{"type":"string"},"partitions":{"items":{"$ref":"#/definitions/v1Partition"},"type":"array"},"size":{"description":"Size in GB","format":"int32","type":"integer"},"vendor":{"type":"string"}},"type":"object"},"v1DomainHost":{"description":"update domain host for application. RootDomain gets dervied from domain host url","properties":{"host":{"type":"string"}},"type":"object"},"v1EcrAuthorizationRequestEntity":{"description":"Ecr registry credentials entity","properties":{"awsCloudAccount":{"$ref":"#/definitions/v1AwsCloudAccount"},"endpoint":{"description":"Endpoint url to make the request","type":"string"},"isPrivate":{"description":"If it is public or private","type":"boolean"},"region":{"description":"Name of the region","type":"string"}},"type":"object"},"v1EcrImageEntity":{"properties":{"name":{"description":"Image name","type":"string"},"tag":{"description":"Image tag","type":"string"}},"type":"object"},"v1EcrImageValidateEntity":{"description":"Ecr registry image meta","properties":{"authEntity":{"$ref":"#/definitions/v1EcrAuthorizationRequestEntity"},"imageTag":{"description":"Name of the image tag","type":"string"},"images":{"description":"Ecr Image Entity","items":{"$ref":"#/definitions/v1EcrImageEntity"},"type":"array"},"repoName":{"description":"Name of the repo","type":"string"}},"type":"object"},"v1EcrRegistry":{"description":"Ecr registry information","properties":{"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1EcrRegistrySpec"}},"type":"object"},"v1EcrRegistrySpec":{"description":"Ecr registry spec","properties":{"baseContentPath":{"description":"OCI ecr registry content base path","type":"string"},"credentials":{"$ref":"#/definitions/v1AwsCloudAccount"},"defaultRegion":{"type":"string"},"endpoint":{"type":"string"},"isPrivate":{"type":"boolean"},"providerType":{"default":"helm","enum":["helm","pack"],"type":"string"},"registryUid":{"description":"Ecr registry uid","type":"string"},"scope":{"type":"string"},"tls":{"$ref":"#/definitions/v1TlsConfiguration"}},"required":["endpoint","isPrivate"],"type":"object"},"v1EdgeCloudClusterConfigEntity":{"description":"Edge cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1EdgeClusterConfig"}},"type":"object"},"v1EdgeCloudConfig":{"description":"EdgeCloudConfig is the Schema for the Edgecloudconfigs API","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Cloud type of the cloud config","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1EdgeCloudConfigSpec"},"status":{"$ref":"#/definitions/v1EdgeCloudConfigStatus"}},"type":"object"},"v1EdgeCloudConfigSpec":{"description":"EdgeCloudConfigSpec defines the desired state of EdgeCloudConfig","properties":{"clusterConfig":{"$ref":"#/definitions/v1EdgeClusterConfig"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1EdgeMachinePoolConfig"},"type":"array"}},"required":["clusterConfig","machinePoolConfig"],"type":"object"},"v1EdgeCloudConfigStatus":{"properties":{"conditions":{"items":{"$ref":"#/definitions/v1ClusterCondition"},"type":"array"},"nodeImage":{"type":"string"},"sourceImageId":{"description":"SourceImageId can be from packref's annotations or from pack.json","type":"string"},"useCapiImage":{"description":"PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add","type":"boolean"}},"type":"object"},"v1EdgeClusterConfig":{"description":"EdgeClusterConfig defines Edge Cluster specific Spec","properties":{"sshKeys":{"description":"SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user","items":{"type":"string"},"type":"array"}},"type":"object"},"v1EdgeHost":{"description":"EdgeHost is the underlying appliance","properties":{"disableAutoRegister":{"description":"Set to true if auto register is disabled for the device","type":"boolean","x-omitempty":false},"hostAddress":{"description":"HostAddress is a FQDN or IP address of the Host","type":"string"},"hostAuthToken":{"description":"HostAuthToken to authorize auto registration","type":"string","x-omitempty":false},"hostChecksum":{"description":"HostChecksum is the checksum provided by the edge host, to be persisted in SaaS","type":"string","x-omitempty":false},"hostIdentity":{"$ref":"#/definitions/v1EdgeHostIdentity","description":"HostIdentity is the identity to access the edge host"},"hostPairingKey":{"description":"HostPairingKey is the one-time pairing key to pair the edge host with the device registered in SaaS","format":"password","type":"string","x-omitempty":false},"hostUid":{"description":"HostUid is the ID of the EdgeHost","type":"string"},"macAddress":{"description":"Mac address of edgehost","type":"string","x-omitempty":false},"project":{"$ref":"#/definitions/v1ObjectEntity","description":"ProjectUid where the edgehost will be placed during auto registration","x-omitempty":false}},"required":["hostUid","hostAddress"],"type":"object"},"v1EdgeHostCloudProperties":{"description":"Additional cloud properties of the edge host (applicable based on the cloud type)","properties":{"vsphere":{"$ref":"#/definitions/v1EdgeHostVsphereCloudProperties"}},"type":"object"},"v1EdgeHostClusterEntity":{"properties":{"clusterUid":{"type":"string"}},"type":"object"},"v1EdgeHostDevice":{"properties":{"aclmeta":{"$ref":"#/definitions/v1AclMeta"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1EdgeHostDeviceSpec"},"status":{"$ref":"#/definitions/v1EdgeHostDeviceStatus"}}},"v1EdgeHostDeviceEntity":{"description":"Edge host device information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectTagsEntity"},"spec":{"$ref":"#/definitions/v1EdgeHostDeviceSpecEntity"}},"type":"object"},"v1EdgeHostDeviceHostCheckSum":{"properties":{"hostCheckSum":{"type":"string"}},"type":"object"},"v1EdgeHostDeviceHostPairingKey":{"properties":{"hostPairingKey":{"format":"password","type":"string"}},"type":"object"},"v1EdgeHostDeviceMetaUpdateEntity":{"description":"Edge host device uid and name","properties":{"metadata":{"$ref":"#/definitions/v1ObjectTagsEntity"}},"type":"object"},"v1EdgeHostDeviceSpec":{"description":"EdgeHostDeviceSpec defines the desired state of EdgeHostDevice","properties":{"cloudProperties":{"$ref":"#/definitions/v1EdgeHostCloudProperties"},"clusterProfileTemplates":{"items":{"$ref":"#/definitions/v1ClusterProfileTemplate"},"type":"array"},"device":{"$ref":"#/definitions/v1DeviceSpec"},"host":{"$ref":"#/definitions/v1EdgeHost"},"properties":{"$ref":"#/definitions/v1EdgeHostProperties"},"service":{"$ref":"#/definitions/v1ServiceSpec"},"type":{"description":"Cloudtype of the provisioned edge host","enum":["libvirt","vsphere","edge-native"],"type":"string"},"version":{"type":"string"}},"type":"object"},"v1EdgeHostDeviceSpecEntity":{"description":"Edge host device spec","properties":{"archType":{"$ref":"#/definitions/v1ArchType"},"hostPairingKey":{"format":"password","type":"string"}},"type":"object"},"v1EdgeHostDeviceStatus":{"description":"EdgeHostDeviceStatus defines the observed state of EdgeHostDevice","properties":{"health":{"$ref":"#/definitions/v1EdgeHostHealth"},"inUseClusters":{"items":{"$ref":"#/definitions/v1ObjectEntity"},"type":"array"},"packs":{"items":{"$ref":"#/definitions/v1ClusterPackStatus"},"type":"array"},"profileStatus":{"$ref":"#/definitions/v1ProfileStatus"},"serviceAuthToken":{"type":"string"},"state":{"enum":["ready","unpaired","in-use"],"type":"string"}},"type":"object"},"v1EdgeHostDevices":{"properties":{"items":{"items":{"$ref":"#/definitions/v1EdgeHostDevice"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1EdgeHostHealth":{"description":"EdgeHostHealth defines the desired health state of EdgeHostDevice","properties":{"agentVersion":{"type":"string"},"message":{"type":"string"},"state":{"enum":["healthy","unhealthy"],"type":"string"}}},"v1EdgeHostIdentity":{"properties":{"caCert":{"description":"CACert is the client CA certificate","type":"string"},"mode":{"description":"Mode indicates a system or session connection to the host","type":"string"},"socketPath":{"description":"SocketPath is an optional path to the socket on the host, if not using defaults","type":"string"},"sshSecret":{"$ref":"#/definitions/v1EdgeHostSSHSecret","description":"SSHSecret to the secret containing ssh-username"}}},"v1EdgeHostMeta":{"properties":{"archType":{"$ref":"#/definitions/v1ArchType"},"edgeHostType":{"enum":["libvirt","edge-native","vsphere"],"type":"string"},"healthState":{"type":"string"},"name":{"type":"string"},"state":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1EdgeHostNetwork":{"description":"Network defines the network configuration for a virtual machine","properties":{"networkName":{"description":"NetworkName of the network where this machine will be connected","type":"string"},"networkType":{"description":"NetworkType specifies the type of network","enum":["default","bridge"],"type":"string"}},"required":["networkName","networkType"],"type":"object"},"v1EdgeHostProperties":{"description":"Additional properties of edge host","properties":{"networks":{"items":{"$ref":"#/definitions/v1EdgeHostNetwork"},"type":"array"},"storagePools":{"items":{"$ref":"#/definitions/v1EdgeHostStoragePool"},"type":"array"}}},"v1EdgeHostSSHSecret":{"properties":{"name":{"description":"SSH secret name","type":"string"},"privateKey":{"description":"Private Key to access the host","type":"string"}},"type":"object"},"v1EdgeHostSpecHost":{"description":"Host specifications","properties":{"hostAddress":{"description":"HostAddress is a FQDN or IP address of the Host","type":"string"},"macAddress":{"type":"string"}}},"v1EdgeHostState":{"enum":["ready","unpaired","in-use"],"type":"string"},"v1EdgeHostStoragePool":{"description":"StoragePool is the storage pool for the vm image","properties":{"name":{"type":"string"}}},"v1EdgeHostVsphereCloudProperties":{"description":"Vsphere cloud properties of edge host","properties":{"datacenters":{"items":{"$ref":"#/definitions/v1VsphereCloudDatacenter"},"type":"array"}}},"v1EdgeHostsMeta":{"properties":{"edgeHosts":{"items":{"$ref":"#/definitions/v1EdgeHostMeta"},"type":"array"}},"type":"object"},"v1EdgeHostsMetadata":{"properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1EdgeHostsMetadataSpec"},"status":{"$ref":"#/definitions/v1EdgeHostsMetadataStatus"}},"type":"object"},"v1EdgeHostsMetadataFilter":{"description":"Edge host metadata spec","properties":{"filter":{"$ref":"#/definitions/v1EdgeHostsMetadataFilterSpec"},"sort":{"items":{"$ref":"#/definitions/v1EdgeHostsMetadataSortSpec"},"type":"array","uniqueItems":true}}},"v1EdgeHostsMetadataFilterSpec":{"description":"Edge hosts metadata filter spec","properties":{"name":{"$ref":"#/definitions/v1FilterString"},"states":{"items":{"$ref":"#/definitions/v1EdgeHostState"},"type":"array","uniqueItems":true}}},"v1EdgeHostsMetadataSortFields":{"enum":["name","state","creationTimestamp","lastModifiedTimestamp"],"type":"string","x-nullable":true},"v1EdgeHostsMetadataSortSpec":{"properties":{"field":{"$ref":"#/definitions/v1EdgeHostsMetadataSortFields"},"order":{"$ref":"#/definitions/v1SortOrder"}}},"v1EdgeHostsMetadataSpec":{"properties":{"clusterProfileTemplates":{"items":{"$ref":"#/definitions/v1ProfileTemplateSummary"},"type":"array"},"device":{"$ref":"#/definitions/v1DeviceSpec"},"host":{"$ref":"#/definitions/v1EdgeHostSpecHost"},"projectMeta":{"$ref":"#/definitions/v1ProjectMeta"},"type":{"type":"string"}},"type":"object"},"v1EdgeHostsMetadataStatus":{"properties":{"health":{"$ref":"#/definitions/v1EdgeHostHealth"},"inUseClusters":{"items":{"$ref":"#/definitions/v1ObjectEntity"},"type":"array"},"state":{"$ref":"#/definitions/v1EdgeHostState"}},"type":"object"},"v1EdgeHostsMetadataSummary":{"properties":{"items":{"items":{"$ref":"#/definitions/v1EdgeHostsMetadata"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1EdgeHostsSearchSummary":{"properties":{"items":{"items":{"$ref":"#/definitions/v1EdgeHostsMetadata"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1EdgeInstanceType":{"description":"EdgeInstanceType defines the instance configuration for a docker container node","properties":{"memoryInMB":{"description":"MemoryinMB is the memory in megabytes","format":"int32","type":"integer"},"numCPUs":{"description":"NumCPUs is the number of CPUs","format":"int32","type":"integer"}},"required":["numCPUs","memoryInMB"],"type":"object"},"v1EdgeMachine":{"description":"Edge cloud VM definition","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the machine.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1EdgeMachineSpec"},"status":{"$ref":"#/definitions/v1CloudMachineStatus"}},"type":"object"},"v1EdgeMachinePoolCloudConfigEntity":{"properties":{"edgeHosts":{"items":{"$ref":"#/definitions/v1EdgeMachinePoolHostEntity"},"type":"array","uniqueItems":true}},"required":["edgeHosts"]},"v1EdgeMachinePoolConfig":{"properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"additionalLabels","type":"object"},"additionalTags":{"additionalProperties":{"type":"string"},"description":"AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole","type":"object"},"hosts":{"items":{"$ref":"#/definitions/v1EdgeMachinePoolHost"},"type":"array"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean"},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"machinePoolProperties":{"$ref":"#/definitions/v1MachinePoolProperties"},"maxSize":{"description":"max size of the pool, for scaling","format":"int32","type":"integer"},"minSize":{"description":"min size of the pool, for scaling","format":"int32","type":"integer"},"name":{"type":"string"},"nodeRepaveInterval":{"description":"Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster","format":"int32","type":"integer"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"taints":{"description":"master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array","uniqueItems":true},"updateStrategy":{"$ref":"#/definitions/v1UpdateStrategy","description":"rolling update strategy for this machinepool if not specified, will use ScaleOut"},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean"}},"required":["hosts"],"type":"object"},"v1EdgeMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1EdgeMachinePoolCloudConfigEntity"},"poolConfig":{"$ref":"#/definitions/v1MachinePoolConfigEntity"}},"type":"object"},"v1EdgeMachinePoolHost":{"description":"EdgeHost of Edge clusters","properties":{"hostAddress":{"description":"HostAddress is a FQDN or IP address of the Host","type":"string"},"hostIdentity":{"$ref":"#/definitions/v1EdgeMachinePoolHostIdentity","description":"HostIdentity is the identity to access the edge host"},"hostName":{"description":"HostName is the name of the EdgeHost","type":"string"},"hostUid":{"description":"HostUid is the ID of the EdgeHost","type":"string"}},"required":["hostUid","hostAddress"],"type":"object"},"v1EdgeMachinePoolHostEntity":{"properties":{"hostUid":{"type":"string"}},"required":["hostUid"]},"v1EdgeMachinePoolHostIdentity":{"properties":{"caCert":{"description":"CACert is the client CA certificate","type":"string"},"socketPath":{"description":"SocketPath is an optional path to the socket on the host, if not using defaults","type":"string"}},"type":"object"},"v1EdgeMachineSpec":{"description":"Edge cloud VM definition spec","properties":{"bootstrapped":{"type":"boolean"},"customImage":{"type":"string"},"edgeHostUid":{"type":"string"},"instanceType":{"$ref":"#/definitions/v1EdgeInstanceType"},"loadBalancerConfigured":{"type":"boolean"},"mounts":{"items":{"$ref":"#/definitions/v1EdgeMount"},"type":"array","uniqueItems":true}},"type":"object"},"v1EdgeMachines":{"description":"Edge machine list","properties":{"items":{"items":{"$ref":"#/definitions/v1EdgeMachine"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1EdgeMount":{"description":"Edge mounts","properties":{"containerPath":{"type":"string"},"hostPath":{"type":"string"},"readonly":{"type":"boolean"}},"type":"object"},"v1EdgeNativeCloudClusterConfigEntity":{"description":"EdgeNative cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1EdgeNativeClusterConfig"}},"type":"object"},"v1EdgeNativeCloudConfig":{"description":"EdgeNativeCloudConfig is the Schema for the edgenativecloudconfigs API","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1EdgeNativeCloudConfigSpec"},"status":{"$ref":"#/definitions/v1EdgeNativeCloudConfigStatus"}},"type":"object"},"v1EdgeNativeCloudConfigSpec":{"description":"EdgeNativeCloudConfigSpec defines the desired state of EdgeNativeCloudConfig","properties":{"clusterConfig":{"$ref":"#/definitions/v1EdgeNativeClusterConfig"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1EdgeNativeMachinePoolConfig"},"type":"array"}},"required":["clusterConfig","machinePoolConfig"],"type":"object"},"v1EdgeNativeCloudConfigStatus":{"description":"EdgeNativeCloudConfigStatus defines the observed state of EdgeNativeCloudConfig","properties":{"conditions":{"items":{"$ref":"#/definitions/v1ClusterCondition"},"type":"array"},"nodeImage":{"type":"string"},"sourceImageId":{"description":"SourceImageId can be from packref's annotations or from pack.json","type":"string"}},"type":"object"},"v1EdgeNativeClusterConfig":{"description":"EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec","properties":{"controlPlaneEndpoint":{"$ref":"#/definitions/v1EdgeNativeControlPlaneEndPoint","description":"ControlPlaneEndpoint is the control plane endpoint, which can be an IP or FQDN"},"ntpServers":{"description":"NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list","items":{"default":"","type":"string"},"type":"array"},"overlayNetworkConfiguration":{"$ref":"#/definitions/v1EdgeNativeOverlayNetworkConfiguration","description":"OverlayNetworkConfiguration is the configuration for the overlay network"},"sshKeys":{"description":"SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user","items":{"default":"","type":"string"},"type":"array"},"staticIp":{"description":"StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type","type":"boolean"}},"type":"object"},"v1EdgeNativeControlPlaneEndPoint":{"properties":{"ddnsSearchDomain":{"description":"DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required","type":"string"},"host":{"description":"Host is FQDN(DDNS) or IP","type":"string"},"type":{"description":"Type indicates DDNS or VIP","type":"string"}},"type":"object"},"v1EdgeNativeHost":{"description":"EdgeNativeHost is the underlying appliance","properties":{"IsCandidateCaption":{"default":false,"description":"Is Edge host nominated as candidate","type":"boolean","x-omitempty":false},"caCert":{"description":"CACert for TLS connections","type":"string"},"hostAddress":{"default":"","description":"HostAddress is a FQDN or IP address of the Host","type":"string"},"hostName":{"default":"","description":"Qualified name of host","type":"string"},"hostUid":{"default":"","description":"HostUid is the ID of the EdgeHost","type":"string"},"nic":{"$ref":"#/definitions/v1Nic","description":"Edge native nic"},"nicName":{"description":"Deprecated. Edge host nic name","type":"string"},"staticIP":{"description":"Deprecated. Edge host static IP","type":"string"},"twoNodeCandidatePriority":{"description":"Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate","enum":["primary","secondary"],"type":"string"}},"required":["hostUid","hostAddress"],"type":"object"},"v1EdgeNativeInstanceType":{"description":"EdgeNativeInstanceType defines the instance configuration for a docker container node","properties":{"diskGiB":{"description":"DiskGiB is the size of a virtual machine's disk","format":"int32","type":"integer"},"memoryMiB":{"description":"MemoryMiB is the size of a virtual machine's memory, in MiB","format":"int32","type":"integer"},"name":{"description":"Name is the instance name","type":"string"},"numCPUs":{"description":"NumCPUs is the number of CPUs","format":"int32","type":"integer"}},"type":"object"},"v1EdgeNativeMachine":{"description":"EdgeNative cloud VM definition","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the machine.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1EdgeNativeMachineSpec"},"status":{"$ref":"#/definitions/v1CloudMachineStatus"}}},"v1EdgeNativeMachinePoolCloudConfigEntity":{"properties":{"edgeHosts":{"items":{"$ref":"#/definitions/v1EdgeNativeMachinePoolHostEntity"},"type":"array","uniqueItems":true}},"required":["edgeHosts"]},"v1EdgeNativeMachinePoolConfig":{"properties":{"additionalLabels":{"additionalProperties":{"default":"","type":"string"},"description":"AdditionalLabels","type":"object"},"additionalTags":{"additionalProperties":{"default":"","type":"string"},"description":"AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole","type":"object"},"hosts":{"items":{"$ref":"#/definitions/v1EdgeNativeHost"},"type":"array"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean"},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"default":"","type":"string"},"type":"array"},"machinePoolProperties":{"$ref":"#/definitions/v1MachinePoolProperties"},"maxSize":{"description":"max size of the pool, for scaling","format":"int32","type":"integer"},"minSize":{"description":"min size of the pool, for scaling","format":"int32","type":"integer"},"name":{"type":"string"},"nodeRepaveInterval":{"description":"Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster","format":"int32","type":"integer"},"osType":{"description":"the os type for the pool, must be supported by the provider","type":"string"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"taints":{"description":"master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array"},"updateStrategy":{"$ref":"#/definitions/v1UpdateStrategy","description":"rolling update strategy for this machinepool if not specified, will use ScaleOut"},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean"}},"required":["hosts"],"type":"object"},"v1EdgeNativeMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1EdgeNativeMachinePoolCloudConfigEntity"},"poolConfig":{"$ref":"#/definitions/v1MachinePoolConfigEntity"}},"type":"object"},"v1EdgeNativeMachinePoolHostEntity":{"properties":{"hostName":{"description":"Edge host name","type":"string"},"hostUid":{"description":"Edge host id","type":"string"},"nic":{"$ref":"#/definitions/v1Nic","description":"Edge native nic"},"nicName":{"description":"Deprecated - Edge host nic name","type":"string"},"staticIP":{"description":"Deprecated - Edge host static IP","type":"string"},"twoNodeCandidatePriority":{"description":"Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate","enum":["primary","secondary"],"type":"string"}},"required":["hostUid"]},"v1EdgeNativeMachineSpec":{"description":"EdgeNative cloud VM definition spec","properties":{"edgeHostUid":{"type":"string"},"instanceType":{"$ref":"#/definitions/v1EdgeNativeInstanceType"},"nics":{"items":{"$ref":"#/definitions/v1EdgeNativeNic"},"type":"array","uniqueItems":true}},"type":"object"},"v1EdgeNativeMachines":{"description":"EdgeNative machine list","properties":{"items":{"items":{"$ref":"#/definitions/v1EdgeNativeMachine"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1EdgeNativeNic":{"description":"Generic network interface","properties":{"index":{"format":"int8","type":"integer"},"networkName":{"type":"string"},"privateIPs":{"items":{"type":"string"},"type":"array"},"publicIp":{"type":"string"}},"type":"object"},"v1EdgeNativeOverlayNetworkConfiguration":{"properties":{"cidr":{"description":"CIDR is the CIDR of the overlay network","type":"string"},"enable":{"description":"Enable is a flag to enable overlay network","type":"boolean","x-omitempty":false}},"type":"object"},"v1EdgeNativeTwoNodeCandidateEntity":{"properties":{"primaryEdgeHost":{"type":"string"},"secondaryEdgeHost":{"type":"string"}},"type":"object"},"v1EdgeServiceLogin":{"description":"System service login input","properties":{"authToken":{"description":"authToken helps in two step verification for the authorization.","type":"string"},"edgeHostUid":{"type":"string"},"serviceName":{"type":"string"},"serviceVersion":{"type":"string"},"spectroClusterUid":{"type":"string"},"tenantUid":{"type":"string"}},"type":"object"},"v1EdgeToken":{"description":"Edge token information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1EdgeTokenSpec"},"status":{"$ref":"#/definitions/v1EdgeTokenStatus"}},"type":"object"},"v1EdgeTokenActiveState":{"description":"Edge token active state","properties":{"isActive":{"description":"Set to 'true', if the token is active","type":"boolean"}}},"v1EdgeTokenEntity":{"description":"Edge token request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1EdgeTokenSpecEntity"}},"type":"object"},"v1EdgeTokenProject":{"description":"Edge token project information","properties":{"name":{"description":"Project name","type":"string"},"uid":{"description":"Project uid","type":"string"}},"type":"object"},"v1EdgeTokenSpec":{"description":"Edge token specification","properties":{"defaultProject":{"$ref":"#/definitions/v1EdgeTokenProject","description":"Default project where the edgehost will be placed on the token authorization"},"expiry":{"$ref":"#/definitions/v1Time","description":"Edge token expiry date"},"token":{"description":"Edge token","type":"string"}},"type":"object"},"v1EdgeTokenSpecEntity":{"description":"Edge token specification","properties":{"defaultProjectUid":{"description":"Default project where the edgehost will be placed on the token authorization","type":"string"},"expiry":{"$ref":"#/definitions/v1Time","description":"Edge token expiry date"}},"type":"object"},"v1EdgeTokenSpecUpdate":{"description":"Edge token spec to be updated","properties":{"defaultProjectUid":{"description":"Default project where the edgehost will be placed on the token authorization","type":"string"},"expiry":{"$ref":"#/definitions/v1Time"}}},"v1EdgeTokenStatus":{"description":"Edge token status","properties":{"isActive":{"description":"Set to 'true', if the token is active","type":"boolean","x-omitempty":false}},"type":"object"},"v1EdgeTokenUpdate":{"description":"Edge token update request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1EdgeTokenSpecUpdate"}},"type":"object"},"v1EdgeTokens":{"properties":{"items":{"description":"List of edge tokens","items":{"$ref":"#/definitions/v1EdgeToken"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1EksAddon":{"description":"EksAddon represents a EKS addon","properties":{"conflictResolution":{"description":"ConflictResolution is used to declare what should happen if there are parameter conflicts.","type":"string"},"name":{"description":"Name is the name of the addon","type":"string"},"serviceAccountRoleARN":{"description":"ServiceAccountRoleArn is the ARN of an IAM role to bind to the addons service account","type":"string"},"version":{"description":"Version is the version of the addon to use","type":"string"}},"required":["name","version"],"type":"object"},"v1EksCloudClusterConfigEntity":{"description":"EKS cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1EksClusterConfig"}},"type":"object"},"v1EksCloudConfig":{"description":"EksCloudConfig is the Schema for the ekscloudconfigs API","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Cloud type of the cloud config","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1EksCloudConfigSpec"}},"type":"object"},"v1EksCloudConfigSpec":{"description":"EksCloudConfigSpec defines the cloud configuration input by user","properties":{"cloudAccountRef":{"$ref":"#/definitions/v1ObjectReference","description":"cloudAccountRef should point to the secret which contains EksCloudAccount"},"clusterConfig":{"$ref":"#/definitions/v1EksClusterConfig"},"fargateProfiles":{"items":{"$ref":"#/definitions/v1FargateProfile"},"type":"array"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1EksMachinePoolConfig"},"type":"array"}},"type":"object"},"v1EksClusterConfig":{"description":"EksClusterConfig defines EKS specific config","properties":{"addons":{"description":"Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters","items":{"$ref":"#/definitions/v1EksAddon"},"type":"array"},"bastionDisabled":{"description":"BastionDisabled is the option to disable bastion node","type":"boolean"},"controlPlaneLoadBalancer":{"description":"ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default =\u003e \"Internet-facing\" \"Internet-facing\" =\u003e \"Internet-facing\" \"internal\" =\u003e \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"","type":"string"},"encryptionConfig":{"$ref":"#/definitions/v1EncryptionConfig","description":"EncryptionConfig specifies the encryption configuration for the cluster"},"endpointAccess":{"$ref":"#/definitions/v1EksClusterConfigEndpointAccess","description":"Endpoints specifies access to this cluster's control plane endpoints"},"region":{"description":"The AWS Region the cluster lives in.","type":"string"},"sshKeyName":{"description":"SSHKeyName specifies which EC2 SSH key can be used to access machines.","type":"string"},"vpcId":{"description":"VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created","type":"string"}},"required":["region"],"type":"object"},"v1EksClusterConfigEndpointAccess":{"description":"EndpointAccess specifies how control plane endpoints are accessible","properties":{"private":{"description":"Private points VPC-internal control plane access to the private endpoint","type":"boolean"},"privateCIDRs":{"description":"PrivateCIDRs specifies which blocks can access the private endpoint","items":{"type":"string"},"type":"array"},"public":{"description":"Public controls whether control plane endpoints are publicly accessible","type":"boolean"},"publicCIDRs":{"description":"PublicCIDRs specifies which blocks can access the public endpoint","items":{"type":"string"},"type":"array"}},"type":"object"},"v1EksFargateProfiles":{"description":"Fargate profiles","properties":{"fargateProfiles":{"items":{"$ref":"#/definitions/v1FargateProfile"},"type":"array"}},"type":"object"},"v1EksMachineCloudConfigEntity":{"properties":{"awsLaunchTemplate":{"$ref":"#/definitions/v1AwsLaunchTemplate"},"azs":{"items":{"type":"string"},"type":"array"},"capacityType":{"default":"on-demand","description":"EC2 instance capacity type","enum":["on-demand","spot"],"type":"string"},"enableAwsLaunchTemplate":{"description":"flag to know if aws launch template is enabled","type":"boolean"},"instanceType":{"description":"instance type","type":"string"},"rootDeviceSize":{"description":"rootDeviceSize in GBs","format":"int64","maximum":2000,"minimum":1,"type":"integer"},"spotMarketOptions":{"$ref":"#/definitions/v1SpotMarketOptions","description":"SpotMarketOptions allows users to configure instances to be run using AWS Spot instances."},"subnets":{"items":{"$ref":"#/definitions/v1EksSubnetEntity"},"type":"array"}}},"v1EksMachinePoolConfig":{"properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"additionalLabels","type":"object"},"additionalTags":{"additionalProperties":{"type":"string"},"description":"AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole","type":"object"},"awsLaunchTemplate":{"$ref":"#/definitions/v1AwsLaunchTemplate"},"azs":{"description":"AZs is only used for dynamic placement","items":{"type":"string"},"type":"array"},"capacityType":{"default":"on-demand","description":"EC2 instance capacity type","enum":["on-demand","spot"],"type":"string"},"enableAwsLaunchTemplate":{"description":"flag to know if aws launch template is enabled","type":"boolean"},"instanceConfig":{"$ref":"#/definitions/v1InstanceConfig"},"instanceType":{"description":"instance type","type":"string"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean","x-omitempty":false},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"machinePoolProperties":{"$ref":"#/definitions/v1MachinePoolProperties"},"maxSize":{"description":"max size of the pool, for scaling","format":"int32","type":"integer"},"minSize":{"description":"min size of the pool, for scaling","format":"int32","type":"integer"},"name":{"type":"string"},"nodeRepaveInterval":{"description":"Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster","format":"int32","type":"integer"},"rootDeviceSize":{"description":"rootDeviceSize in GBs","format":"int64","type":"integer"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"spotMarketOptions":{"$ref":"#/definitions/v1SpotMarketOptions","description":"SpotMarketOptions allows users to configure instances to be run using AWS Spot instances."},"subnetIds":{"additionalProperties":{"type":"string"},"description":"AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment","type":"object"},"taints":{"description":"master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array","uniqueItems":true},"updateStrategy":{"$ref":"#/definitions/v1UpdateStrategy","description":"rolling update strategy for this machinepool if not specified, will use ScaleOut"},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean","x-omitempty":false}},"required":["isControlPlane"],"type":"object"},"v1EksMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1EksMachineCloudConfigEntity"},"poolConfig":{"$ref":"#/definitions/v1MachinePoolConfigEntity"}}},"v1EksSubnetEntity":{"properties":{"az":{"type":"string"},"id":{"type":"string"}}},"v1EncryptionConfig":{"description":"EncryptionConfig specifies the encryption configuration for the EKS clsuter.","properties":{"isEnabled":{"description":"Is encryption configuration enabled for the cluster","type":"boolean"},"provider":{"description":"Provider specifies the ARN or alias of the CMK (in AWS KMS)","type":"string"},"resources":{"description":"Resources specifies the resources to be encrypted","items":{"type":"string"},"type":"array"}},"type":"object"},"v1Event":{"description":"Describes the component event details","properties":{"involvedObject":{"$ref":"#/definitions/v1ObjectReference","description":"Describes object involved in event generation","type":"object"},"message":{"description":"Describes message associated with the event","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta","type":"object"},"reason":{"description":"Describes the reason for the event","type":"string"},"relatedObject":{"$ref":"#/definitions/v1EventRelatedObject","description":"Describes object related to the event","type":"object"},"severity":{"description":"Describes the gravitas for the event","type":"string"},"source":{"$ref":"#/definitions/v1EventSource","description":"Describes the origin for the event","type":"object"}},"type":"object"},"v1EventRelatedObject":{"description":"Object for which the event is related","properties":{"kind":{"enum":["spectrocluster","edgehost"],"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1EventSource":{"description":"Describes the origin for the event","properties":{"component":{"description":"Describes the component where event originated","type":"string"},"host":{"description":"Describes the host where event originated","type":"string"}},"type":"object"},"v1Events":{"description":"An array of component events items","properties":{"items":{"description":"Describes a list of returned component events","items":{"$ref":"#/definitions/v1Event"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData","description":"Describes the meta information about the component event lists"}},"required":["items"],"type":"object"},"v1EventsRelatedObjectsEntity":{"properties":{"relatedObjectUids":{"description":"List of uids of the related object","items":{"type":"string"},"type":"array","uniqueItems":true}},"required":["relatedObjectUids"],"type":"object"},"v1FargateProfile":{"description":"FargateProfile defines the desired state of FargateProfile","properties":{"additionalTags":{"additionalProperties":{"type":"string"},"description":"AdditionalTags is an optional set of tags to add to AWS resources managed by the AWS provider, in addition to the ones added by default.","type":"object"},"name":{"description":"name specifies the profile name.","type":"string"},"selectors":{"description":"Selectors specify fargate pod selectors.","items":{"$ref":"#/definitions/v1FargateSelector"},"type":"array"},"subnetIds":{"description":"SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.","items":{"type":"string"},"type":"array"}},"required":["name"],"type":"object"},"v1FargateSelector":{"description":"FargateSelector specifies a selector for pods that should run on this fargate pool","properties":{"labels":{"additionalProperties":{"type":"string"},"description":"Labels specifies which pod labels this selector should match.","type":"object"},"namespace":{"description":"Namespace specifies which namespace this selector should match.","type":"string"}},"required":["namespace"],"type":"object"},"v1FileUploadResponse":{"description":"File upload response","properties":{"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1FilterArray":{"properties":{"beginsWith":{"items":{"type":"string"},"type":"array","x-nullable":true},"eq":{"items":{"type":"string"},"type":"array","x-nullable":true},"ignoreCase":{"default":true,"type":"boolean"},"ne":{"items":{"type":"string"},"type":"array","x-nullable":true}},"type":"object"},"v1FilterIntRange":{"properties":{"eq":{"format":"int32","type":"integer","x-nullable":true},"gt":{"format":"int32","type":"integer","x-nullable":true},"gte":{"format":"int32","type":"integer","x-nullable":true},"lt":{"format":"int32","type":"integer","x-nullable":true},"lte":{"format":"int32","type":"integer","x-nullable":true},"ne":{"format":"int32","type":"integer","x-nullable":true}},"type":"object"},"v1FilterMetadata":{"description":"Filter metadata object","properties":{"filterType":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1FilterNumberRange":{"properties":{"eq":{"type":"number","x-nullable":true},"gt":{"type":"number","x-nullable":true},"gte":{"type":"number","x-nullable":true},"lt":{"type":"number","x-nullable":true},"lte":{"type":"number","x-nullable":true},"ne":{"type":"number","x-nullable":true}},"type":"object"},"v1FilterString":{"properties":{"beginsWith":{"type":"string","x-nullable":true},"contains":{"type":"string","x-nullable":true},"eq":{"type":"string","x-nullable":true},"ignoreCase":{"default":true,"type":"boolean"},"ne":{"type":"string","x-nullable":true}},"type":"object"},"v1FilterSummary":{"description":"Filter summary object","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1FilterSummarySpec"}},"type":"object"},"v1FilterSummarySpec":{"properties":{"filterType":{"type":"string"}}},"v1FilterVersionString":{"properties":{"beginsWith":{"type":"string","x-nullable":true},"eq":{"type":"string","x-nullable":true},"gt":{"type":"string","x-nullable":true},"lt":{"type":"string","x-nullable":true},"ne":{"type":"string","x-nullable":true}},"type":"object"},"v1FiltersMetadata":{"properties":{"items":{"items":{"$ref":"#/definitions/v1FilterMetadata"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1FiltersSummary":{"properties":{"items":{"items":{"$ref":"#/definitions/v1FilterSummary"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1FipsSettings":{"description":"FIPS configuration","properties":{"fipsClusterFeatureConfig":{"$ref":"#/definitions/v1NonFipsConfig"},"fipsClusterImportConfig":{"$ref":"#/definitions/v1NonFipsConfig"},"fipsPackConfig":{"$ref":"#/definitions/v1NonFipsConfig"}}},"v1FreemiumUsage":{"properties":{"usage":{"format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1FreemiumUsageLimit":{"properties":{"activeClusters":{"type":"integer","x-omitempty":false},"overageUsage":{"type":"number","x-omitempty":false},"usage":{"format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1GPUConfig":{"properties":{"addresses":{"additionalProperties":{"type":"string"},"description":"Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n","type":"object"},"deviceModel":{"description":"DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]","type":"string"},"numGPUs":{"description":"NumGPUs is the number of GPUs","format":"int32","type":"integer"},"vendorName":{"description":"VendorName is the GPU vendor, for eg., NVIDIA or AMD","type":"string"}},"type":"object"},"v1GPUDeviceSpec":{"properties":{"addresses":{"additionalProperties":{"type":"string"},"description":"Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- \u003e 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n","type":"object"},"model":{"description":"Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]","type":"string"},"vendor":{"description":"Vendor is the GPU vendor, for eg., NVIDIA or AMD","type":"string"}},"type":"object"},"v1GcpAccount":{"description":"GCP account information","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the account.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1GcpAccountSpec"},"status":{"$ref":"#/definitions/v1CloudAccountStatus"}},"type":"object"},"v1GcpAccountEntity":{"description":"GCP account information","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the account.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1GcpAccountEntitySpec"},"status":{"$ref":"#/definitions/v1CloudAccountStatus"}},"type":"object"},"v1GcpAccountEntitySpec":{"properties":{"jsonCredentials":{"description":"Gcp cloud account json credentials","type":"string"},"jsonCredentialsFileUid":{"description":"Reference of the credentials stored in the file","type":"string"}},"type":"object"},"v1GcpAccountNameValidateSpec":{"description":"Gcp cloud account name validate spec","properties":{"bucketName":{"description":"Bucket name in the GCP","type":"string"},"credentials":{"$ref":"#/definitions/v1GcpAccountValidateSpec"},"projectId":{"description":"ProjectId in the GCP","type":"string"}},"required":["credentials","bucketName"],"type":"object"},"v1GcpAccountSpec":{"properties":{"jsonCredentials":{"description":"Gcp cloud account json credentials","type":"string"},"jsonCredentialsFileName":{"description":"Reference of the credentials stored in the file","type":"string"}},"type":"object"},"v1GcpAccountValidateSpec":{"description":"Gcp cloud account entity which takes json credentials or reference to the file where credentials are stored","properties":{"jsonCredentials":{"description":"Gcp cloud account json credentials","type":"string"},"jsonCredentialsFileUid":{"description":"Reference of the credentials stored in the file","type":"string"}},"type":"object"},"v1GcpAccounts":{"properties":{"items":{"items":{"$ref":"#/definitions/v1GcpAccount"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1GcpCloudAccountValidateEntity":{"description":"Gcp cloud account spec","properties":{"spec":{"$ref":"#/definitions/v1GcpAccountValidateSpec"}},"type":"object"},"v1GcpCloudClusterConfigEntity":{"description":"Gcp cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1GcpClusterConfig"}},"type":"object"},"v1GcpCloudConfig":{"description":"GcpCloudConfig is the Schema for the gcpcloudconfigs API","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Cloud type of the cloud config","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1GcpCloudConfigSpec"},"status":{"$ref":"#/definitions/v1GcpCloudConfigStatus"}},"type":"object"},"v1GcpCloudConfigSpec":{"description":"GcpCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api","properties":{"cloudAccountRef":{"$ref":"#/definitions/v1ObjectReference","description":"cloudAccountRef should point to the secret which contains GcpCloudAccount"},"clusterConfig":{"$ref":"#/definitions/v1GcpClusterConfig"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1GcpMachinePoolConfig"},"type":"array"}},"type":"object"},"v1GcpCloudConfigStatus":{"description":"GcpCloudConfigStatus defines the observed state of GcpCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool","properties":{"ansibleRoleDigest":{"description":"For mold controller to identify if is there any changes in Pack","type":"string"},"conditions":{"description":"spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`","items":{"$ref":"#/definitions/v1ClusterCondition"},"type":"array"},"images":{"$ref":"#/definitions/v1GcpImage","description":"Images array items should be 1-to-1 mapping to Spec.MachinePoolConfig"},"isAddonLayer":{"description":"addon layers present in spc","type":"boolean"},"roleDigest":{"additionalProperties":{"type":"string"},"description":"this map will be for ansible roles present in each pack","type":"object"},"sourceImageId":{"description":"sourceImageId, it can be from packref's annotations or from pack.json","type":"string"},"useCapiImage":{"description":"PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add","type":"boolean"}},"type":"object"},"v1GcpClusterConfig":{"description":"Cluster level configuration for gcp cloud and applicable for all the machine pools","properties":{"managedClusterConfig":{"$ref":"#/definitions/v1GcpManagedClusterConfig"},"network":{"description":"NetworkName if empty would create VPC Network in auto mode. If provided, custom VPC network will be used","type":"string"},"project":{"description":"Name of the project in which cluster is to be deployed","type":"string"},"region":{"description":"GCP region for the cluster","type":"string"}},"required":["project","region"],"type":"object"},"v1GcpImage":{"description":"Refers to GCP image","properties":{"name":{"type":"string"},"os":{"type":"string"},"region":{"type":"string"},"state":{"type":"string"}},"type":"object"},"v1GcpImageUrlEntity":{"description":"Gcp image url entity","properties":{"imageFamily":{"description":"The name of the image family to which this image belongs","type":"string"},"imageUrl":{"description":"Server-defined URL for the resource","type":"string"},"name":{"description":"Name of the resource","type":"string"}},"type":"object"},"v1GcpInstanceTypes":{"description":"Retrieves a list of GCP instance types","properties":{"instanceTypes":{"description":"List of GCP instance types","items":{"$ref":"#/definitions/v1InstanceType"},"type":"array"}},"type":"object"},"v1GcpMachine":{"description":"GCP cloud VM definition","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the machine.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1GcpMachineSpec"},"status":{"$ref":"#/definitions/v1CloudMachineStatus"}},"type":"object"},"v1GcpMachinePoolCloudConfigEntity":{"properties":{"azs":{"items":{"type":"string"},"type":"array"},"instanceType":{"type":"string"},"rootDeviceSize":{"description":"Size of root volume in GB. Default is 30GB","format":"int64","type":"integer"},"subnet":{"description":"Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used","type":"string"},"subnets":{"items":{"$ref":"#/definitions/v1GcpSubnetEntity"},"type":"array"}},"required":["instanceType"],"type":"object"},"v1GcpMachinePoolConfig":{"properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"additionalLabels","type":"object"},"additionalTags":{"additionalProperties":{"type":"string"},"description":"AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole","type":"object"},"azs":{"items":{"type":"string"},"type":"array"},"instanceConfig":{"$ref":"#/definitions/v1InstanceConfig"},"instanceType":{"type":"string"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean"},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"machinePoolProperties":{"$ref":"#/definitions/v1MachinePoolProperties"},"maxSize":{"description":"max size of the pool, for scaling","format":"int32","type":"integer"},"minSize":{"description":"min size of the pool, for scaling","format":"int32","type":"integer"},"name":{"type":"string"},"nodeRepaveInterval":{"description":"Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster","format":"int32","type":"integer"},"rootDeviceSize":{"description":"Size of root volume in GB. Default is 30GB","format":"int64","type":"integer"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"subnet":{"description":"Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used","type":"string"},"subnetIds":{"additionalProperties":{"type":"string"},"description":"AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment","type":"object"},"taints":{"description":"master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array","uniqueItems":true},"updateStrategy":{"$ref":"#/definitions/v1UpdateStrategy","description":"rolling update strategy for this machinepool if not specified, will use ScaleOut"},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean"}},"required":["isControlPlane","instanceType"],"type":"object"},"v1GcpMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1GcpMachinePoolCloudConfigEntity"},"poolConfig":{"$ref":"#/definitions/v1MachinePoolConfigEntity"}},"required":["cloudConfig"],"type":"object"},"v1GcpMachineSpec":{"description":"GCP cloud VM definition spec","properties":{"image":{"type":"string"},"instanceConfig":{"$ref":"#/definitions/v1InstanceConfig"},"instanceType":{"type":"string"},"nics":{"items":{"$ref":"#/definitions/v1GcpNic"},"type":"array"},"project":{"type":"string"},"region":{"type":"string"},"rootDeviceSize":{"format":"int64","type":"integer"},"zone":{"type":"string"}},"required":["instanceType"],"type":"object"},"v1GcpMachines":{"description":"GCP machine list","properties":{"items":{"items":{"$ref":"#/definitions/v1GcpMachine"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1GcpManagedClusterConfig":{"description":"GCP managed cluster config","properties":{"enableAutoPilot":{"description":"EnableAutopilot indicates whether to enable autopilot for this GKE cluster","type":"boolean"},"location":{"description":"Can be Region or Zone","type":"string"}},"type":"object"},"v1GcpNetwork":{"description":"GCP network enity is a virtual version of a physical network","properties":{"name":{"description":"GCP network name","type":"string"},"subnets":{"description":"List of GCP subnet","items":{"$ref":"#/definitions/v1GcpSubnet"},"type":"array"}},"type":"object"},"v1GcpNetworks":{"description":"List of GCP networks","properties":{"networks":{"items":{"$ref":"#/definitions/v1GcpNetwork"},"type":"array"}},"type":"object"},"v1GcpNic":{"description":"GCP network interface","properties":{"index":{"format":"int8","type":"integer"},"networkName":{"type":"string"},"privateIPs":{"items":{"type":"string"},"type":"array"},"publicIp":{"type":"string"}},"type":"object"},"v1GcpProject":{"description":"GCP project organizes all Google Cloud resources","properties":{"id":{"description":"GCP project id","type":"string"},"name":{"description":"GCP project name","type":"string"}},"type":"object"},"v1GcpProjects":{"description":"List of GCP Projects","properties":{"projects":{"description":"List of GCP Projects","items":{"$ref":"#/definitions/v1GcpProject"},"type":"array"}},"type":"object"},"v1GcpRegion":{"description":"Geographical region made up of zones where you can host your GCP resources","properties":{"name":{"description":"GCP region name","type":"string"},"status":{"description":"GCP region status","type":"string"}},"type":"object"},"v1GcpRegions":{"description":"List of GCP Regions","properties":{"regions":{"items":{"$ref":"#/definitions/v1GcpRegion"},"type":"array"}},"type":"object"},"v1GcpStorageConfig":{"description":"GCP storage config object","properties":{"bucketName":{"description":"GCP storage bucket name","type":"string"},"credentials":{"$ref":"#/definitions/v1.GcpAccountEntitySpec","description":"GCP cloud account credentials"}},"required":["bucketName","credentials"],"type":"object"},"v1GcpStorageTypes":{"description":"List of GCP storage types","properties":{"storageTypes":{"items":{"$ref":"#/definitions/v1StorageType"},"type":"array"}},"type":"object"},"v1GcpSubnet":{"description":"Subnets are regional resources, and have IP address ranges associated with them","properties":{"id":{"description":"GCP subnet id","type":"string"},"name":{"description":"GCP subnet name","type":"string"}},"type":"object"},"v1GcpSubnetEntity":{"properties":{"az":{"type":"string"},"id":{"type":"string"}}},"v1GcpZone":{"description":"A zone is a deployment area for Google Cloud resources within a region","properties":{"name":{"description":"GCP zone name","type":"string"}},"type":"object"},"v1GcpZones":{"description":"List of GCP zones","properties":{"zones":{"items":{"$ref":"#/definitions/v1GcpZone"},"type":"array"}},"type":"object"},"v1GenericCloudClusterConfigEntity":{"description":"Generic cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1GenericClusterConfig"}},"type":"object"},"v1GenericCloudConfig":{"description":"Generic CloudConfig for all cloud types","properties":{"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1GenericCloudConfigSpec"}}},"v1GenericCloudConfigSpec":{"description":"Generic CloudConfig spec for all cloud types","properties":{"cloudAccountRef":{"$ref":"#/definitions/v1ObjectReference","description":"Cloud account reference is optional and dynamically handled based on the kind"},"clusterConfig":{"$ref":"#/definitions/v1GenericClusterConfig"},"edgeHostRefs":{"description":"Appliances (Edge Host) uids","items":{"$ref":"#/definitions/v1ObjectReference"},"type":"array"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1GenericMachinePoolConfig"},"type":"array"}},"type":"object"},"v1GenericClusterConfig":{"description":"Generic cluster config","properties":{"instanceType":{"$ref":"#/definitions/v1GenericInstanceType"},"region":{"description":"cluster region information","type":"string"}},"type":"object"},"v1GenericInstanceType":{"properties":{"diskGiB":{"description":"DiskGiB is the size of a virtual machine's disk, in GiB","format":"int32","type":"integer"},"memoryMiB":{"description":"MemoryMiB is the size of a virtual machine's memory, in MiB","format":"int64","type":"integer"},"name":{"type":"string"},"numCPUs":{"description":"NumCPUs is the number of virtual processors in a virtual machine","format":"int32","type":"integer"}},"type":"object"},"v1GenericMachine":{"description":"Generic cloud VM definition","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the machine.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1GenericMachineSpec"},"status":{"$ref":"#/definitions/v1CloudMachineStatus"}}},"v1GenericMachinePoolConfig":{"properties":{"instanceType":{"type":"string"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean"},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"name":{"type":"string"},"rootDeviceSize":{"description":"Size of root volume in GB. Default is 30GB","format":"int64","type":"integer"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean"}},"required":["isControlPlane"],"type":"object"},"v1GenericMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1GenericClusterConfig"},"poolConfig":{"$ref":"#/definitions/v1MachinePoolConfigEntity"}}},"v1GenericMachineSpec":{"description":"Generic cloud VM definition spec","properties":{"hostName":{"type":"string"},"imageId":{"type":"string"},"instanceType":{"$ref":"#/definitions/v1GenericInstanceType"},"nics":{"items":{"$ref":"#/definitions/v1GenericNic"},"type":"array"},"sshKeyName":{"type":"string"}}},"v1GenericMachines":{"description":"Generic machine list","properties":{"items":{"items":{"$ref":"#/definitions/v1GenericMachine"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1GenericNic":{"description":"Generic network interface","properties":{"index":{"format":"int8","type":"integer"},"networkName":{"type":"string"},"privateIPs":{"items":{"type":"string"},"type":"array"},"publicIp":{"type":"string"}},"type":"object"},"v1GeolocationLatlong":{"description":"Geolocation Latlong entity","properties":{"latitude":{"description":"Latitude of a resource","format":"float64","type":"number","x-omitempty":false},"longitude":{"description":"Longitude of a resource","format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1GitRepoFileContent":{"properties":{"content":{"type":"string"},"name":{"type":"string"},"path":{"type":"string"},"repoName":{"type":"string"},"sha":{"type":"string"}},"type":"object"},"v1GrpcClientMonitoringData":{"properties":{"clientUid":{"type":"string"},"receivedBroadcastCount":{"type":"integer"},"receivedPublishedCount":{"type":"integer"},"sentBroadcastCount":{"type":"integer"},"sentPublishedCount":{"type":"integer"},"subjects":{"items":{"type":"string"},"type":"array"}},"type":"object"},"v1GrpcConfiguration":{"description":"Describes the response that contains the grpc configuration to establish connection","properties":{"preferredServer":{"$ref":"#/definitions/v1GrpcEndpoint"},"servers":{"items":{"$ref":"#/definitions/v1GrpcEndpoint"},"type":"array","uniqueItems":true}},"type":"object"},"v1GrpcEndpoint":{"properties":{"endpoint":{"description":"Describes the URL where the client has to connect to the grpc server","type":"string"},"tls":{"description":"Describes the Grpc tls config which client will use to make a request to the grpc server","properties":{"caCert":{"type":"string"},"enabled":{"type":"boolean"},"insecureSkipVerify":{"type":"boolean"}},"type":"object"}},"type":"object"},"v1GrpcServerMonitoringData":{"properties":{"clients":{"additionalProperties":{"$ref":"#/definitions/v1GrpcClientMonitoringData"},"type":"object"},"isError":{"type":"boolean"},"messageLogs":{"items":{"type":"string"},"type":"array"},"subjects":{"additionalProperties":{"$ref":"#/definitions/v1GrpcSubjectMonitoringData"},"type":"object"},"totalClients":{"type":"integer"},"totalSubjects":{"type":"integer"}},"type":"object"},"v1GrpcServersMonitoringData":{"properties":{"servers":{"additionalProperties":{"$ref":"#/definitions/v1GrpcServerMonitoringData"},"type":"object"}},"type":"object"},"v1GrpcSubjectMonitoringData":{"properties":{"broadcastCount":{"type":"integer"},"clients":{"items":{"type":"string"},"type":"array"},"publishedCount":{"type":"integer"},"subject":{"type":"string"}},"type":"object"},"v1HealthCheck":{"properties":{"isHealthy":{"type":"boolean","x-omitempty":false},"message":{"type":"string"},"name":{"type":"string"}},"type":"object"},"v1HealthLocks":{"properties":{"expiredLocks":{"items":{"$ref":"#/definitions/v1Lock"},"type":"array","uniqueItems":true}},"type":"object"},"v1HealthPing":{"properties":{"msg":{"type":"string"}},"type":"object"},"v1HelmChartOption":{"description":"If chart options are provided then the specified chart is validated first and synced immediately. If the specified chart is not found in the specified registry then creation is cancelled.","properties":{"name":{"type":"string"},"version":{"type":"string"}},"type":"object"},"v1HelmRegistries":{"properties":{"items":{"items":{"$ref":"#/definitions/v1HelmRegistry"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1HelmRegistriesSummary":{"description":"Helm Registries Summary","properties":{"items":{"items":{"$ref":"#/definitions/v1HelmRegistrySummary"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1HelmRegistry":{"description":"Helm registry information","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Not used for the resource info.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1HelmRegistrySpec"},"status":{"$ref":"#/definitions/v1HelmRegistryStatus"}},"type":"object"},"v1HelmRegistryCreateOption":{"description":"Helm registry create options","properties":{"charts":{"items":{"$ref":"#/definitions/v1HelmChartOption"},"type":"array","uniqueItems":true},"skipSync":{"type":"boolean"}},"type":"object"},"v1HelmRegistryEntity":{"description":"Helm registry information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1HelmRegistrySpecEntity"}},"type":"object"},"v1HelmRegistrySpec":{"description":"Helm registry credentials spec","properties":{"auth":{"$ref":"#/definitions/v1RegistryAuth"},"endpoint":{"type":"string"},"isPrivate":{"type":"boolean","x-omitempty":false},"name":{"type":"string"},"registryUid":{"description":"Helm registry uid","type":"string"},"scope":{"type":"string"}},"required":["endpoint","auth"],"type":"object"},"v1HelmRegistrySpecEntity":{"description":"Helm registry credentials spec","properties":{"auth":{"$ref":"#/definitions/v1RegistryAuth"},"createOption":{"$ref":"#/definitions/v1HelmRegistryCreateOption"},"endpoint":{"type":"string"},"isPrivate":{"type":"boolean"},"name":{"type":"string"},"scope":{"type":"string"}},"required":["endpoint","auth"],"type":"object"},"v1HelmRegistrySpecSummary":{"description":"Helm Registry spec summary","properties":{"endpoint":{"type":"string"},"isPrivate":{"type":"boolean","x-omitempty":false},"scope":{"type":"string"}},"type":"object"},"v1HelmRegistryStatus":{"description":"Status of the helm registry","properties":{"helmSyncStatus":{"$ref":"#/definitions/v1RegistrySyncStatus"}},"type":"object"},"v1HelmRegistryStatusSummary":{"description":"Helm registry status summary","properties":{"sync":{"$ref":"#/definitions/v1RegistrySyncStatus"}}},"v1HelmRegistrySummary":{"description":"Helm Registry summary","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1HelmRegistrySpecSummary"},"status":{"$ref":"#/definitions/v1HelmRegistryStatusSummary"}},"type":"object"},"v1HostClusterConfig":{"properties":{"clusterEndpoint":{"$ref":"#/definitions/v1HostClusterEndpoint","description":"host cluster configuration"},"clusterGroup":{"$ref":"#/definitions/v1ObjectReference","description":"cluster group reference"},"hostCluster":{"$ref":"#/definitions/v1ObjectReference","description":"host cluster reference"},"isHostCluster":{"default":false,"description":"is enabled as host cluster","type":"boolean","x-omitempty":false}}},"v1HostClusterConfigEntity":{"properties":{"hostClusterConfig":{"$ref":"#/definitions/v1HostClusterConfig"}},"type":"object"},"v1HostClusterConfigResponse":{"properties":{"clusterGroup":{"$ref":"#/definitions/v1ObjectReference","description":"cluster group reference"}}},"v1HostClusterEndpoint":{"properties":{"config":{"$ref":"#/definitions/v1HostClusterEndpointConfig"},"type":{"description":"is enabled as host cluster","enum":["Ingress","LoadBalancer"],"type":"string"}}},"v1HostClusterEndpointConfig":{"properties":{"ingressConfig":{"$ref":"#/definitions/v1IngressConfig"},"loadBalancerConfig":{"$ref":"#/definitions/v1LoadBalancerConfig"}}},"v1HttpPatch":{"properties":{"from":{"description":"A path to the pointer from which reference will be taken","type":"string"},"op":{"description":"The operation to be performed","enum":["add","remove","replace","move","copy"],"type":"string"},"path":{"description":"A path to the pointer on which operation will be done","type":"string"},"value":{"description":"The value to be used within the operations.","type":"object"}},"required":["op","path"],"type":"object"},"v1HubbleInfo":{"properties":{"apiEndpoint":{"type":"string"},"apiPort":{"type":"string"},"natsEndpoint":{"type":"string"},"uiEndpoint":{"type":"string"},"uiPort":{"type":"string"}},"type":"object"},"v1IPPool":{"description":"IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools","properties":{"gateway":{"description":"Gateway is the gateway ip address","type":"string"},"nameserver":{"$ref":"#/definitions/v1Nameserver","description":"Nameserver provide information for dns resolvation"},"pools":{"description":"Pools contains the list of IP addresses pools","items":{"$ref":"#/definitions/v1Pool"},"type":"array"},"prefix":{"description":"Prefix is the mask of the network as integer (max 128)","format":"int32","type":"integer"},"uid":{"description":"UID is the UID of this IPPool, used by Hubble","type":"string"}},"type":"object"},"v1IdentityProvider":{"description":"Describes a predefined Identity Provider (IDP)","properties":{"id":{"type":"string"},"name":{"type":"string"}},"type":"object"},"v1IdentityProviders":{"description":"Describes a list of predefined Identity Provider (IDP)","items":{"$ref":"#/definitions/v1IdentityProvider"},"type":"array","uniqueItems":true},"v1ImportClusterConfig":{"properties":{"importMode":{"description":"If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.","enum":["read-only"],"type":"string"},"proxy":{"$ref":"#/definitions/v1ClusterProxySpec","description":"Cluster proxy settings"}},"type":"object"},"v1ImportEdgeHostConfig":{"properties":{"edgeHostUid":{"description":"Deprecated. Use 'edgeHostUids' field","type":"string"},"edgeHostUids":{"items":{"type":"string"},"type":"array"}},"type":"object"},"v1InfraLBConfig":{"properties":{"apiServerLB":{"$ref":"#/definitions/v1LoadBalancerSpec","description":"APIServerLB is the configuration for the control-plane load balancer."}},"type":"object"},"v1IngressConfig":{"description":"Ingress configuration for exposing the virtual cluster's kube-apiserver","properties":{"host":{"type":"string"},"port":{"format":"int64","type":"integer"}}},"v1InstallerStatus":{"description":"Spectro cluster installer status","properties":{"clusterMigration":{"$ref":"#/definitions/v1SpectroClusterMigration"},"clusterState":{"type":"string"},"endpoint":{"type":"string","x-omitempty":false}},"type":"object"},"v1InstanceConfig":{"properties":{"category":{"type":"string"},"cpuSet":{"format":"int64","type":"integer"},"diskGiB":{"format":"int64","type":"integer"},"memoryMiB":{"description":"MemoryMiB is the size of a virtual machine's memory, in MiB","format":"int64","type":"integer"},"name":{"type":"string"},"numCPUs":{"description":"NumCPUs is the number of virtual processors in a virtual machine","format":"int32","type":"integer"}}},"v1InstanceCost":{"description":"Instance cost entity","properties":{"price":{"description":"Array of cloud instance price","items":{"$ref":"#/definitions/v1InstancePrice"},"type":"array"}},"type":"object"},"v1InstancePrice":{"description":"Cloud instance price","properties":{"onDemand":{"description":"OnDemand price of instance","format":"double","type":"number"},"os":{"description":"Os associated with instance price. Allowed values - [linux, windows]","enum":["linux","windows"],"type":"string"},"spot":{"description":"Spot price of instance","format":"double","type":"number"}},"type":"object"},"v1InstanceType":{"description":"Cloud Instance type details","properties":{"category":{"description":"Category of instance type","type":"string","x-go-name":"Category"},"cost":{"$ref":"#/definitions/v1InstanceCost"},"cpu":{"description":"Cpu of instance type","format":"double","type":"number","x-go-name":"Cpu"},"gpu":{"description":"Gpu of instance type","format":"double","type":"number","x-go-name":"Gpu"},"memory":{"description":"Memory of instance type","format":"double","type":"number","x-go-name":"Memory"},"nonSupportedZones":{"description":"Non supported zones of the instance in a particular region","items":{"type":"string"},"type":"array"},"price":{"description":"Price of instance type","format":"double","type":"number","x-go-name":"Price"},"supportedArchitectures":{"description":"Supported architecture of the instance","items":{"type":"string"},"type":"array"},"type":{"description":"Type of instance type","type":"string","x-go-name":"Type"}},"type":"object"},"v1Invoice":{"description":"Invoice object","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1InvoiceSpec"},"status":{"$ref":"#/definitions/v1InvoiceStatus"}}},"v1InvoiceBillingPeriod":{"description":"Invoice billing period object","properties":{"end":{"$ref":"#/definitions/v1Time"},"start":{"$ref":"#/definitions/v1Time"}}},"v1InvoiceCredits":{"description":"Invoice credits object","properties":{"alloyFreeCredits":{"description":"Credits allocated for import clusters","format":"int64","type":"number"},"pureFreeCredits":{"description":"Credits allocated for managed clusters","format":"int64","type":"number"}}},"v1InvoicePlan":{"description":"Invoice plan object","properties":{"freeCredits":{"description":"List of free credits","items":{"$ref":"#/definitions/v1InvoicePlanCredit"},"type":"array"},"plantype":{"enum":["Trial","MonthlyOnDemand","AnnualSubscription"],"type":"string"},"slaCredits":{"description":"List of SLA credits","items":{"$ref":"#/definitions/v1InvoicePlanCredit"},"type":"array"}}},"v1InvoicePlanCredit":{"description":"Invoice plan credit object","properties":{"planCredit":{"$ref":"#/definitions/v1PlanCredit"},"totalCpuCoreHours":{"description":"Total used cpu core hours","format":"int64","type":"number"}}},"v1InvoiceProduct":{"description":"Product invoice object","properties":{"alloy":{"$ref":"#/definitions/v1InvoiceProductData"},"pure":{"$ref":"#/definitions/v1InvoiceProductData"}}},"v1InvoiceProductData":{"description":"Product invoice data","properties":{"allocatedCredits":{"description":"Allocated credits","format":"int64","type":"number"},"amount":{"description":"Total amount","format":"float64","type":"number"},"billableCredits":{"description":"Credits to be billed","format":"float64","type":"number"},"breachedCredits":{"description":"Credits that are exceeds the allocated credits","format":"float64","type":"number"},"discount":{"description":"Applied discount","format":"int64","type":"number"},"freeCredits":{"description":"Allocated free credits","format":"int64","type":"number"},"overageLimitPercentage":{"description":"Allowed overage limit in percentage","format":"int8","type":"number"},"tierName":{"description":"Tier name","type":"string"},"tierPrice":{"description":"Tier price","format":"float64","type":"number"},"totalUsedCredits":{"description":"Total used credits","format":"float64","type":"number"},"usedCredits":{"description":"Used credits","format":"float64","type":"number"}}},"v1InvoiceProject":{"description":"Invoice project object","properties":{"amount":{"description":"Billing amount for the project","format":"float64","type":"number"},"projectName":{"description":"Name of the project","type":"string"},"projectUid":{"description":"Project identifier","type":"string"},"usage":{"$ref":"#/definitions/v1ProjectUsage","description":"Usage by the project"}}},"v1InvoiceRetryRequest":{"description":"Retry invoice request object","properties":{"customerId":{"description":"Customer invoice uid","type":"string"},"invoiceUid":{"description":"Invoice uid","type":"string"},"paymentMethodId":{"description":"Payment method uid","type":"string"}}},"v1InvoiceSpec":{"description":"Invoice specification","properties":{"address":{"$ref":"#/definitions/v1Address"},"billingPeriod":{"$ref":"#/definitions/v1InvoiceBillingPeriod"},"credits":{"$ref":"#/definitions/v1InvoiceCredits"},"envType":{"description":"Environment type [Trial,MonthlyOnDemand,AnnualSubscription,OnPrem]","type":"string"},"month":{"$ref":"#/definitions/v1Time","description":"Month for which invoice is generated"},"paymentUnit":{"enum":["usd"],"type":"string"},"plan":{"$ref":"#/definitions/v1InvoicePlan"}}},"v1InvoiceState":{"description":"Invoice state object","properties":{"paymentMsg":{"description":"Payment status message","type":"string"},"state":{"enum":["Paid","PaymentPending","PaymentInProgress","PaymentFailed"],"type":"string"},"timestamp":{"$ref":"#/definitions/v1Time","description":"Time on which the state has been updated"}}},"v1InvoiceStatus":{"description":"Invoice Status","properties":{"billableAmount":{"description":"Total billable amount","format":"float64","type":"number"},"productInvoice":{"$ref":"#/definitions/v1InvoiceProduct"},"projects":{"description":"List of project invoices","items":{"$ref":"#/definitions/v1InvoiceProject"},"type":"array"},"states":{"description":"List of invoice states","items":{"$ref":"#/definitions/v1InvoiceState"},"type":"array","uniqueItems":true},"stripeInvoiceId":{"description":"Stripe invoice uid","type":"string"}}},"v1Invoices":{"description":"List of invoices","properties":{"invoices":{"items":{"$ref":"#/definitions/v1Invoice"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["invoices"],"type":"object"},"v1IpPoolEntity":{"description":"IP Pool entity definition","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"pool":{"$ref":"#/definitions/v1Pool"},"priavetGatewayUid":{"type":"string"},"restrictToSingleCluster":{"description":"if true, restricts this IP pool to be used by single cluster at any time","type":"boolean","x-omitempty":false}},"type":"object"},"status":{"$ref":"#/definitions/v1IpPoolStatus"}},"type":"object"},"v1IpPoolInputEntity":{"description":"IP Pool input entity definition","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"pool":{"$ref":"#/definitions/v1Pool"},"restrictToSingleCluster":{"description":"if true, restricts this IP pool to be used by single cluster at any time","type":"boolean"}},"required":["pool"],"type":"object"}},"type":"object"},"v1IpPoolStatus":{"description":"IP Pool status","properties":{"allottedIps":{"items":{"type":"string"},"type":"array","uniqueItems":true},"associatedClusters":{"items":{"type":"string"},"type":"array","uniqueItems":true},"inUse":{"type":"boolean","x-omitempty":false}},"type":"object"},"v1IpPools":{"properties":{"items":{"items":{"$ref":"#/definitions/v1IpPoolEntity"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1JWKResponse":{"properties":{"alg":{"description":"The \"alg\" (algorithm) parameter identifies the algorithm intended for use with the key","type":"string"},"e":{"type":"string"},"key_ops":{"description":"The \"key_ops\" (key operations) parameter identifies the operation(s) for which the key is intended to be used","type":"string"},"kid":{"description":"The \"kid\" (key ID) parameter is used to match a specific key","type":"string"},"kty":{"description":"The \"kty\" (key type) parameter identifies the cryptographic algorithm family used with the key, such as \"RSA\" or \"EC\"","type":"string"},"n":{"type":"string"},"use":{"description":"The \"use\" (public key use) parameter identifies the intended use of the public key","type":"string"}},"type":"object"},"v1JWKSetResponse":{"properties":{"keys":{"description":"The value of the \"keys\" parameter is an array of JWK values","items":{"$ref":"#/definitions/v1JWKResponse"},"type":"array"}},"type":"object"},"v1JetAuthKey":{"properties":{"authKey":{"type":"string"}},"type":"object"},"v1JetAuthKeyResponse":{"properties":{"authKey":{"type":"string"}},"type":"object"},"v1JetServiceLogin":{"description":"jet service login input","properties":{"authKey":{"description":"authToken helps in two step verification for the authorization.","type":"string"},"edgeHostUid":{"type":"string"},"hostClusterUid":{"type":"string"},"isSystem":{"type":"boolean"},"jetUid":{"type":"string"},"overlordUid":{"type":"string"},"serviceVersion":{"type":"string"},"spectroClusterUid":{"type":"string"},"tenantUid":{"type":"string"}},"type":"object"},"v1KubeBenchEntity":{"description":"KubeBench response","properties":{"reports":{"additionalProperties":{"$ref":"#/definitions/v1KubeBenchReportEntity"},"type":"object"},"requestUid":{"type":"string"},"status":{"enum":["Completed","InProgress","Failed","Initiated"],"type":"string"}},"required":["requestUid","status","reports"]},"v1KubeBenchLog":{"description":"Compliance Scan KubeBench Log","properties":{"description":{"type":"string"},"expected":{"type":"string"},"remediation":{"type":"string"},"state":{"type":"string"},"testId":{"type":"string"},"value":{"type":"string"}}},"v1KubeBenchLogEntity":{"description":"KubeBench log","properties":{"description":{"type":"string"},"expected":{"type":"string"},"remediation":{"type":"string"},"state":{"type":"string"},"testId":{"type":"string"},"value":{"type":"string"}}},"v1KubeBenchReport":{"description":"Compliance Scan KubeBench Report","properties":{"fail":{"format":"int32","type":"integer"},"info":{"format":"int32","type":"integer"},"logs":{"items":{"$ref":"#/definitions/v1KubeBenchLog"},"type":"array"},"name":{"type":"string"},"pass":{"format":"int32","type":"integer"},"time":{"$ref":"#/definitions/v1Time"},"type":{"type":"string"},"warn":{"format":"int32","type":"integer"}}},"v1KubeBenchReportEntity":{"description":"KubeBench report","properties":{"fail":{"format":"int32","type":"integer"},"info":{"format":"int32","type":"integer"},"logs":{"items":{"$ref":"#/definitions/v1KubeBenchLogEntity"},"type":"array"},"name":{"type":"string"},"pass":{"format":"int32","type":"integer"},"time":{"$ref":"#/definitions/v1Time"},"type":{"type":"string"},"warn":{"format":"int32","type":"integer"}}},"v1KubeHunterEntity":{"description":"KubeHunter response","properties":{"reports":{"additionalProperties":{"$ref":"#/definitions/v1KubeHunterReportEntity"},"type":"object"},"requestUid":{"type":"string"},"status":{"enum":["Completed","InProgress","Failed","Initiated"],"type":"string"}},"required":["requestUid","status","reports"]},"v1KubeHunterLog":{"description":"Compliance Scan KubeHunter Log","properties":{"description":{"type":"string"},"evidence":{"type":"string"},"reference":{"type":"string"},"severity":{"type":"string"},"testId":{"type":"string"},"vulnerability":{"type":"string"}}},"v1KubeHunterLogEntity":{"description":"KubeHunter log","properties":{"description":{"type":"string"},"evidence":{"type":"string"},"reference":{"type":"string"},"severity":{"type":"string"},"testId":{"type":"string"},"vulnerability":{"type":"string"}}},"v1KubeHunterReport":{"description":"Compliance Scan KubeHunter Report","properties":{"logs":{"items":{"$ref":"#/definitions/v1KubeHunterLog"},"type":"array"},"time":{"$ref":"#/definitions/v1Time"},"vulnerabilites":{"$ref":"#/definitions/v1KubeHunterVulnerabilities"}}},"v1KubeHunterReportEntity":{"description":"KubeHunter report","properties":{"logs":{"items":{"$ref":"#/definitions/v1KubeHunterLogEntity"},"type":"array"},"time":{"$ref":"#/definitions/v1Time"},"vulnerabilities":{"$ref":"#/definitions/v1KubeHunterVulnerabilityDataEntity"}}},"v1KubeHunterVulnerabilities":{"description":"Compliance Scan KubeHunter Vulnerabilities","properties":{"high":{"format":"int32","type":"integer"},"low":{"format":"int32","type":"integer"},"medium":{"format":"int32","type":"integer"}}},"v1KubeHunterVulnerabilityDataEntity":{"description":"KubeHunter vulnerability data","properties":{"high":{"format":"int32","type":"integer"},"low":{"format":"int32","type":"integer"},"medium":{"format":"int32","type":"integer"}}},"v1KubeMeta":{"description":"Spectro cluster kube meta","properties":{"hasKubeConfig":{"type":"boolean","x-omitempty":false},"hasKubeConfigClient":{"type":"boolean","x-omitempty":false},"hasManifest":{"type":"boolean","x-omitempty":false},"kubernetesVersion":{"type":"string"}},"type":"object"},"v1LibvirtCloudClusterConfigEntity":{"description":"Libvirt cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1LibvirtClusterConfig"}},"type":"object"},"v1LibvirtCloudConfig":{"description":"LibvirtCloudConfig is the Schema for the libvirtcloudconfigs API","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Cloud type of the cloud config","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1LibvirtCloudConfigSpec"},"status":{"$ref":"#/definitions/v1LibvirtCloudConfigStatus"}},"type":"object"},"v1LibvirtCloudConfigSpec":{"description":"LibvirtCloudConfigSpec defines the desired state of LibvirtCloudConfig","properties":{"clusterConfig":{"$ref":"#/definitions/v1LibvirtClusterConfig"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1LibvirtMachinePoolConfig"},"type":"array"}},"required":["clusterConfig","machinePoolConfig"],"type":"object"},"v1LibvirtCloudConfigStatus":{"properties":{"conditions":{"items":{"$ref":"#/definitions/v1ClusterCondition"},"type":"array"},"nodeImages":{"description":"NodeImages are the list of images generated on all the LibvirtHosts","items":{"$ref":"#/definitions/v1LibvirtImage"},"type":"array"},"sourceImageId":{"description":"SourceImageId can be from packref's annotations or from pack.json","type":"string"}},"type":"object"},"v1LibvirtClusterConfig":{"properties":{"controlPlaneEndpoint":{"$ref":"#/definitions/v1LibvirtControlPlaneEndPoint","description":"ControlPlaneEndpoint is the control plane endpoint, which can be an IP or FQDN"},"ntpServers":{"description":"NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list","items":{"type":"string"},"type":"array"},"sshKeys":{"description":"SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user","items":{"type":"string"},"type":"array"},"staticIp":{"description":"StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type","type":"boolean"}},"type":"object"},"v1LibvirtControlPlaneEndPoint":{"properties":{"ddnsSearchDomain":{"description":"DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required","type":"string"},"host":{"description":"Host is FQDN(DDNS) or IP","type":"string"},"type":{"description":"Type indicates DDNS or VIP","type":"string"}},"type":"object"},"v1LibvirtDiskSpec":{"properties":{"dataStoragePool":{"description":"DataStoragePool is the storage pool from which additional disks are assigned","type":"string"},"managed":{"description":"Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.","type":"boolean"},"sizeInGB":{"description":"SizeInGB is the target size in GB of the disk to be added","format":"int32","type":"integer"}},"required":["sizeInGB"],"type":"object"},"v1LibvirtHostIdentity":{"properties":{"caCert":{"description":"CACert is the client CA certificate","type":"string"},"mode":{"description":"Mode indicates a system or session connection to the host","type":"string"},"socketPath":{"description":"SocketPath is an optional path to the socket on the host, if not using defaults","type":"string"},"sshSecret":{"$ref":"#/definitions/v1EdgeHostSSHSecret","description":"SSHSecrets to the secret containing ssh-username"}},"type":"object"},"v1LibvirtImage":{"description":"LibvirtImage is the Image generated on the LibvirtHost","properties":{"hostID":{"description":"HostID is the ID of the LibvirtHost","type":"string"},"imageName":{"description":"ImageName is the name of the Libvirt image","type":"string"},"storagePool":{"description":"StoragePool is the name of the storagePool where is image is located","type":"string"}},"type":"object"},"v1LibvirtInstanceType":{"description":"LibvirtInstanceType defines the instance configuration for a virtual machine","properties":{"cpuPassthroughSpec":{"$ref":"#/definitions/v1CPUPassthroughSpec","description":"Defines CPU Passthrough Spec. A not null value enables CPU Passthrough for the libvirt domain. Further cache passthrough can be enabled with the CPU passthrough spec."},"cpuset":{"description":"CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation","type":"string"},"gpuConfig":{"$ref":"#/definitions/v1GPUConfig","description":"GPU configuration"},"memoryInMB":{"description":"MemoryinMB is the memory in megabytes","format":"int32","type":"integer"},"numCPUs":{"description":"NumCPUs is the number of CPUs","format":"int32","type":"integer"}},"required":["numCPUs","memoryInMB"],"type":"object"},"v1LibvirtMachine":{"description":"Libvirt cloud VM definition","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the machine.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1LibvirtMachineSpec"},"status":{"$ref":"#/definitions/v1CloudMachineStatus"}}},"v1LibvirtMachinePoolCloudConfigEntity":{"properties":{"instanceType":{"$ref":"#/definitions/v1LibvirtInstanceType"},"nonRootDisksInGB":{"description":"NonRootDisksInGB is the list of additional disks, if required, in GB","items":{"$ref":"#/definitions/v1LibvirtDiskSpec"},"type":"array"},"placements":{"description":"Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster","items":{"$ref":"#/definitions/v1LibvirtPlacementEntity"},"type":"array","uniqueItems":true},"rootDiskInGB":{"description":"RootDiskInGB is the size of a vm's root disk, in GiB","format":"int32","type":"integer"},"xslTemplate":{"description":"XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition","type":"string"}},"required":["instanceType","placements","rootDiskInGB"]},"v1LibvirtMachinePoolConfig":{"properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"additionalLabels","type":"object"},"additionalTags":{"additionalProperties":{"type":"string"},"description":"AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole","type":"object"},"instanceType":{"$ref":"#/definitions/v1LibvirtInstanceType","description":"InstanceType defines the instance configuration of the vms in the machine pool"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean"},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"machinePoolProperties":{"$ref":"#/definitions/v1MachinePoolProperties"},"maxSize":{"description":"max size of the pool, for scaling","format":"int32","type":"integer"},"minSize":{"description":"min size of the pool, for scaling","format":"int32","type":"integer"},"name":{"type":"string"},"nodeRepaveInterval":{"description":"Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster","format":"int32","type":"integer"},"nonRootDisksInGB":{"description":"NonRootDisksInGB is the list of additional disks, if required, in GB","items":{"$ref":"#/definitions/v1LibvirtDiskSpec"},"type":"array"},"placements":{"description":"Placements defines the configurations of the failureDomains(hosts) for the machine pool","items":{"$ref":"#/definitions/v1LibvirtPlacementConfig"},"type":"array"},"rootDiskInGB":{"description":"RootDiskInGB is the size of a vm's root disk, in GB","format":"int32","type":"integer"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"taints":{"description":"master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array","uniqueItems":true},"updateStrategy":{"$ref":"#/definitions/v1UpdateStrategy","description":"rolling update strategy for this machinepool if not specified, will use ScaleOut"},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean"},"xslTemplate":{"description":"XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition","type":"string"}},"required":["instanceType","placements","rootDiskInGB"],"type":"object"},"v1LibvirtMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1LibvirtMachinePoolCloudConfigEntity"},"poolConfig":{"$ref":"#/definitions/v1MachinePoolConfigEntity"}},"type":"object"},"v1LibvirtMachineSpec":{"description":"libvirt cloud VM definition spec","properties":{"disks":{"items":{"$ref":"#/definitions/v1LibvirtDiskSpec"},"type":"array"},"edgeHostUid":{"type":"string"},"failureDomain":{"type":"string"},"imageName":{"type":"string"},"instanceType":{"$ref":"#/definitions/v1LibvirtInstanceType"},"nics":{"items":{"$ref":"#/definitions/v1LibvirtNicSpec"},"type":"array"},"targetStoragePool":{"type":"string"}},"type":"object"},"v1LibvirtMachines":{"description":"Libvirt machine list","properties":{"items":{"items":{"$ref":"#/definitions/v1LibvirtMachine"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1LibvirtNetworkSpec":{"description":"LibvirtNetworkSpec defines the network configuration for a virtual machine","properties":{"networkName":{"description":"NetworkName of the libvirt network where this machine will be connected","type":"string"},"networkType":{"description":"NetworkType specifies the type of network","enum":["default","bridge"],"type":"string"}},"required":["networkName","networkType"],"type":"object"},"v1LibvirtNicSpec":{"description":"Libvirt network interface","properties":{"index":{"format":"int8","type":"integer"},"macAddress":{"type":"string"},"privateIPs":{"items":{"type":"string"},"type":"array"}},"required":["macAddress"],"type":"object"},"v1LibvirtPlacementConfig":{"properties":{"dataStoragePool":{"description":"DataStoragePool is the storage pool from which additional disks are assigned","type":"string"},"gpuDevices":{"description":"GPU Devices is the list of LibvirtHost GPU devices, to be used for this placement","items":{"$ref":"#/definitions/v1GPUDeviceSpec"},"type":"array"},"hostAddress":{"description":"HostAddress is a FQDN or IP address of the LibvirtHost","type":"string"},"hostIdentity":{"$ref":"#/definitions/v1LibvirtHostIdentity","description":"HostIdentity is the identity to access the LibvirtHost"},"hostUid":{"description":"HostUid is the ID of the LibvirtHost","type":"string"},"networks":{"description":"Networks defines the network specifications of the vms in the machine pool","items":{"$ref":"#/definitions/v1LibvirtNetworkSpec"},"type":"array"},"sourceStoragePool":{"description":"SourceStoragePool is the storage pool for the vm image","type":"string"},"targetStoragePool":{"description":"TargetStoragePool is the optional storage pool from which additional disks are assigned. If not specified, the sourceStoragePool is also used as the targetStoragePool","type":"string"}},"required":["hostUid","hostAddress","networks","sourceStoragePool"],"type":"object"},"v1LibvirtPlacementEntity":{"description":"Libvirt placement config","properties":{"dataStoragePool":{"type":"string"},"gpuDevices":{"description":"GPUDevices defines an array of gpu device for a specific edge host. This will be overridden by edge host GPU devices if configured during registration.","items":{"$ref":"#/definitions/v1GPUDeviceSpec"},"type":"array"},"hostUid":{"type":"string"},"networks":{"items":{"$ref":"#/definitions/v1LibvirtNetworkSpec"},"type":"array"},"sourceStoragePool":{"type":"string"},"targetStoragePool":{"type":"string"}},"required":["hostUid"],"type":"object"},"v1LifecycleConfig":{"properties":{"pause":{"default":false,"description":"enable pause life cycle config","type":"boolean","x-omitempty":false}}},"v1LifecycleConfigEntity":{"properties":{"lifecycleConfig":{"$ref":"#/definitions/v1LifecycleConfig"}},"type":"object"},"v1LifecycleStatus":{"properties":{"msg":{"description":"error or success msg of lifecycle","type":"string"},"status":{"description":"lifecycle status","enum":["Pausing","Paused","Resuming","Running","Error"],"type":"string"}}},"v1ListMetaData":{"description":"ListMeta describes metadata for the resource listing","properties":{"continue":{"description":"Next token for the pagination. Next token is equal to empty string indicates end of result set.","type":"string","x-omitempty":false},"count":{"description":"Total count of the resources which might change during pagination based on the resources addition or deletion","type":"integer","x-omitempty":false},"limit":{"description":"Number of records feteched","type":"integer","x-omitempty":false},"offset":{"description":"The next offset for the pagination. Starting index for which next request will be placed.","type":"integer","x-omitempty":false}},"type":"object"},"v1LoadBalancerConfig":{"description":"Load balancer configuration for exposing the virtual cluster's kube-apiserver","properties":{"externalIPs":{"items":{"type":"string"},"type":"array"},"externalTrafficPolicy":{"type":"string"},"loadBalancerSourceRanges":{"items":{"type":"string"},"type":"array"}}},"v1LoadBalancerService":{"properties":{"host":{"description":"IP or Host from svc.Status.LoadBalancerStatus.Ingress","type":"string"},"name":{"description":"name of the loadbalancer service","type":"string"},"ports":{"description":"port this service exposed","items":{"$ref":"#/definitions/v1ServicePort"},"type":"array"}},"type":"object"},"v1LoadBalancerSpec":{"description":"LoadBalancerSpec defines an Azure load balancer.","properties":{"apiServerLBStaticIP":{"type":"string"},"ipAllocationMethod":{"default":"Dynamic","enum":["Static","Dynamic"],"type":"string"},"privateDNSName":{"type":"string"},"type":{"default":"Public","description":"Load Balancer type","enum":["Internal","Public"],"type":"string"}},"type":"object"},"v1LocationType":{"default":"s3","description":"Location type","enum":["s3","gcp","minio"],"type":"string"},"v1Lock":{"properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta","type":"object","x-omitempty":false},"spec":{"properties":{"expireAt":{"$ref":"#/definitions/v1Time","x-omitempty":false},"key":{"type":"string","x-omitempty":false}},"type":"object"}},"type":"object"},"v1Locks":{"items":{"$ref":"#/definitions/v1Lock"},"type":"array","uniqueItems":true},"v1Login":{"description":"Login input","properties":{"emailId":{"type":"string"}},"type":"object"},"v1LoginBannerSettings":{"properties":{"Message":{"description":"Login banner message displayed to the user","type":"string","x-omitempty":false},"isEnabled":{"description":"Set to 'true' if login banner has to be displayed for user","type":"boolean","x-omitempty":false},"title":{"description":"Banner title displayed to the user","type":"string","x-omitempty":false}}},"v1LoginResponse":{"description":"Returns the allowed login method and information with the organization details","properties":{"appEnv":{"description":"Describes the env type. Possible values [ saas, self-hosted, quick-start, enterprise, airgap]","type":"string"},"authType":{"description":"Describes the default mode of authentication. Possible values [password, sso]","enum":["password","sso"],"type":"string"},"orgName":{"description":"Organization name.","type":"string"},"redirectUrl":{"description":"Describes the default redirect Url for authentication. If authType is sso, it will have tenant configured saml/oidc idp url else it will be users organization url","type":"string","x-omitempty":false},"rootDomain":{"description":"Describes the domain url on which the saas is available","type":"string"},"securityMode":{"description":"Describes which security mode is enabled","type":"string"},"ssoLogins":{"$ref":"#/definitions/v1SsoLogins","description":"Just Inside. Describes the allowed social logins"},"totalTenants":{"description":"Describes the total number of tenant present in the system","format":"int64","type":"number"}},"type":"object"},"v1LogoutResponse":{"description":"Logout response specifying the redirect url","properties":{"redirectUrl":{"type":"string","x-omitempty":false}},"type":"object"},"v1MaasAccount":{"description":"Maas cloud account information","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the account.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1MaasCloudAccount"},"status":{"$ref":"#/definitions/v1CloudAccountStatus"}},"type":"object"},"v1MaasAccounts":{"properties":{"items":{"items":{"$ref":"#/definitions/v1MaasAccount"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1MaasCloudAccount":{"properties":{"apiEndpoint":{"type":"string"},"apiKey":{"type":"string"},"preferredSubnets":{"description":"list of preferred subnets order in the list reflects order in which subnets will be selected for ip address selection in apiserver dns endpoint this way user can specify external or preferable subnet \"10.11.130.0/24,10.10.10.0/24\"","items":{"default":"","type":"string"},"type":"array"}},"required":["apiKey","apiEndpoint"],"type":"object"},"v1MaasCloudClusterConfigEntity":{"description":"Maas cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1MaasClusterConfig"}},"type":"object"},"v1MaasCloudConfig":{"description":"MaasCloudConfig is the Schema for the maascloudconfigs API","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Cloud type of the cloud config","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1MaasCloudConfigSpec"},"status":{"$ref":"#/definitions/v1MaasCloudConfigStatus"}},"type":"object"},"v1MaasCloudConfigSpec":{"description":"MaasCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api","properties":{"cloudAccountRef":{"$ref":"#/definitions/v1ObjectReference","description":"cloudAccountRef should point to the secret which contains MaasCloudAccount"},"clusterConfig":{"$ref":"#/definitions/v1MaasClusterConfig"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1MaasMachinePoolConfig"},"type":"array"}},"type":"object"},"v1MaasCloudConfigStatus":{"description":"MaasCloudConfigStatus defines the observed state of MaasCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool","properties":{"ansibleRoleDigest":{"description":"For mold controller to identify if is there any changes in Pack","type":"string"},"conditions":{"items":{"$ref":"#/definitions/v1ClusterCondition"},"type":"array"},"isAddonLayer":{"description":"addon layers present in spc","type":"boolean"},"nodeImage":{"$ref":"#/definitions/v1MaasImage"},"roleDigest":{"additionalProperties":{"type":"string"},"description":"this map will be for ansible roles present in eack pack","type":"object"},"sourceImageId":{"description":"sourceImageId, it can be from packref's annotations or from pack.json","type":"string"},"useCapiImage":{"description":"PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add","type":"boolean"}},"type":"object"},"v1MaasClusterConfig":{"description":"Cluster level configuration for MAAS cloud and applicable for all the machine pools","properties":{"domain":{"description":"Domain name of the cluster to be provisioned","type":"string"},"sshKeys":{"description":"SSH keys specifies a list of ssh authorized keys for the 'spectro' user","items":{"type":"string"},"type":"array"}},"required":["domain"],"type":"object"},"v1MaasDomain":{"description":"Maas domain","properties":{"name":{"description":"Name of Maas domain","type":"string"}},"type":"object"},"v1MaasDomains":{"description":"List of Maas domains","properties":{"items":{"items":{"$ref":"#/definitions/v1MaasDomain"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1MaasImage":{"description":"Name of the image","properties":{"name":{"description":"full path of the image template location it contains datacenter/folder/templatename etc eg: /mydc/vm/template/spectro/workerpool-1-centos","type":"string"},"state":{"type":"string"}},"type":"object"},"v1MaasInstanceType":{"properties":{"minCPU":{"description":"Minimum CPU cores","format":"int32","type":"integer"},"minMemInMB":{"description":"Minimum memory in MiB","format":"int32","type":"integer"}},"type":"object"},"v1MaasMachine":{"description":"Maas cloud VM definition","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the machine.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1MaasMachineSpec"},"status":{"$ref":"#/definitions/v1CloudMachineStatus"}},"type":"object"},"v1MaasMachineConfigEntity":{"properties":{"azs":{"description":"for master pool, this will be the failure domains for kcp","items":{"type":"string"},"type":"array"},"instanceType":{"$ref":"#/definitions/v1MaasInstanceType"},"resourcePool":{"type":"string"}},"type":"object"},"v1MaasMachinePoolCloudConfigEntity":{"properties":{"azs":{"items":{"type":"string"},"type":"array"},"instanceType":{"$ref":"#/definitions/v1MaasInstanceType"},"resourcePool":{"description":"the resource pool","type":"string"},"tags":{"description":"Tags in maas environment","items":{"type":"string"},"type":"array"}},"required":["instanceType","resourcePool"],"type":"object"},"v1MaasMachinePoolConfig":{"properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"additionalLabels","type":"object"},"additionalTags":{"additionalProperties":{"type":"string"},"description":"AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole","type":"object"},"azs":{"items":{"type":"string"},"type":"array"},"instanceType":{"$ref":"#/definitions/v1MaasInstanceType","description":"InstanceType defines the required CPU, Memory"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean"},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"machinePoolProperties":{"$ref":"#/definitions/v1MachinePoolProperties"},"maxSize":{"description":"max size of the pool, for scaling","format":"int32","type":"integer"},"minSize":{"description":"min size of the pool, for scaling","format":"int32","type":"integer"},"name":{"type":"string"},"nodeRepaveInterval":{"description":"Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster","format":"int32","type":"integer"},"resourcePool":{"type":"string"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"tags":{"description":"Tags in maas environment","items":{"type":"string"},"type":"array"},"taints":{"description":"master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array","uniqueItems":true},"updateStrategy":{"$ref":"#/definitions/v1UpdateStrategy","description":"rolling update strategy for this machinepool if not specified, will use ScaleOut"},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean"}},"required":["instanceType"],"type":"object"},"v1MaasMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1MaasMachinePoolCloudConfigEntity"},"poolConfig":{"$ref":"#/definitions/v1MachinePoolConfigEntity"}},"required":["cloudConfig"],"type":"object"},"v1MaasMachineSpec":{"description":"Maas cloud VM definition spec","properties":{"az":{"type":"string"},"hostname":{"type":"string"},"nics":{"items":{"$ref":"#/definitions/v1MaasNic"},"type":"array"}},"type":"object"},"v1MaasMachines":{"description":"List of MAAS machines","properties":{"items":{"items":{"$ref":"#/definitions/v1MaasMachine"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1MaasNic":{"description":"Maas network interface","properties":{"index":{"format":"int8","type":"integer"},"privateIPs":{"items":{"type":"string"},"type":"array"},"publicIp":{"type":"string"}},"type":"object"},"v1MaasPool":{"description":"Maas pool","properties":{"description":{"description":"Description of Maas domain","type":"string"},"name":{"description":"Name of Maas pool","type":"string"}},"type":"object"},"v1MaasPools":{"description":"List of Maas pools","properties":{"items":{"items":{"$ref":"#/definitions/v1MaasPool"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1MaasSubnet":{"description":"Maas subnet","properties":{"id":{"description":"Id of Maas subnet","type":"integer"},"name":{"description":"Name of Maas subnet","type":"string"},"space":{"description":"Space associated with Maas subnet","type":"string"},"vlans":{"$ref":"#/definitions/v1MaasVlan"}},"type":"object"},"v1MaasSubnets":{"description":"List of Maas subnets","properties":{"items":{"items":{"$ref":"#/definitions/v1MaasSubnet"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1MaasTag":{"description":"Maas tag","properties":{"comment":{"description":"Comment on Maas tag","type":"string"},"definition":{"description":"Definition of Maas tag","type":"string"},"kernelOpts":{"description":"Kernel Opts on Maas tag","type":"string"},"name":{"description":"Name of Maas tag","type":"string"},"resourceUri":{"description":"Description of Maas tag","type":"string"}},"type":"object"},"v1MaasTags":{"description":"List of Maas tags","properties":{"items":{"items":{"$ref":"#/definitions/v1MaasTag"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1MaasVlan":{"description":"Maas vlan entity","properties":{"fabric":{"description":"Fabric associated with Maas Vlan","type":"string"},"id":{"description":"Id of Maas Vlan","type":"integer"},"name":{"description":"Name of Maas Vlan","type":"string"}},"type":"object"},"v1MaasZone":{"description":"Maas zone","properties":{"description":{"description":"Description of Maas domain","type":"string"},"name":{"description":"Name of Maas zone","type":"string"}},"type":"object"},"v1MaasZones":{"description":"List of Maas zones","properties":{"items":{"items":{"$ref":"#/definitions/v1MaasZone"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1MachineCertificate":{"description":"K8 Certificates for master nodes","properties":{"certificateAuthorities":{"description":"Applicable certificate authorities","items":{"$ref":"#/definitions/v1CertificateAuthority"},"type":"array"},"name":{"type":"string"}},"type":"object"},"v1MachineCertificates":{"description":"K8 Certificates for all the cluster's master nodes","properties":{"machineCertificates":{"items":{"$ref":"#/definitions/v1MachineCertificate"},"type":"array"}},"type":"object"},"v1MachineHealth":{"description":"Machine health state","properties":{"conditions":{"items":{"$ref":"#/definitions/v1MachineHealthCondition"},"type":"array"},"lastHeartBeatTimestamp":{"$ref":"#/definitions/v1Time"},"state":{"type":"string"}},"type":"object"},"v1MachineHealthCheckConfig":{"properties":{"healthCheckMaxUnhealthy":{"description":"HealthCheckMaxUnhealthy is the value above which, if current nodes are unhealthy remediation will not be triggered Can be an absolute int64 number or a percentage string Default value is 100%, i.e by default it is disabled","type":"string"},"networkReadyHealthCheckDuration":{"description":"NetworkReadyHealthCheckDuration is the timeout to check for the network availability. If the network is not available in the given available time, beyond the timeout check a node will be killed and a new node will be created. Default time is 10m","type":"string"},"nodeReadyHealthCheckDuration":{"description":"NodeReadyHealthCheckDuration is the timeout to check for the node ready state. If the node is not ready within the time out set, the node will be deleted and a new node will be launched. Default time is 10m","type":"string"}},"type":"object"},"v1MachineHealthCondition":{"description":"Machine health condition","properties":{"message":{"type":"string"},"reason":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"}},"type":"object"},"v1MachineMaintenance":{"properties":{"action":{"description":"Machine maintenance mode action","enum":["cordon","uncordon"],"type":"string"}},"type":"object"},"v1MachineMaintenanceStatus":{"description":"Machine maintenance status","properties":{"action":{"type":"string"},"message":{"type":"string"},"state":{"type":"string"}},"type":"object"},"v1MachineManagementConfig":{"properties":{"osPatchConfig":{"$ref":"#/definitions/v1OsPatchConfig","description":"Os patch config contains properties to patch node os with latest security packages. If OsPatchConfig is not provided then node os will not be patched with latest security updates."}},"type":"object"},"v1MachinePoolConfigEntity":{"description":"Machine pool configuration for the cluster","properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"Additional labels to be part of the machine pool","type":"object"},"additionalTags":{"additionalProperties":{"type":"string"},"description":"AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole","type":"object"},"isControlPlane":{"description":"Whether this pool is for control plane","type":"boolean","x-omitempty":false},"labels":{"description":"Labels for this machine pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"machinePoolProperties":{"$ref":"#/definitions/v1MachinePoolProperties"},"maxSize":{"description":"Max size of the pool, for scaling","format":"int32","type":"integer"},"minSize":{"description":"Min size of the pool, for scaling","format":"int32","type":"integer"},"name":{"type":"string"},"nodeRepaveInterval":{"description":"Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster","format":"int32","type":"integer"},"size":{"description":"Size of the pool, number of nodes/machines","format":"int32","type":"integer"},"taints":{"description":"Master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array","uniqueItems":true},"updateStrategy":{"$ref":"#/definitions/v1UpdateStrategy","description":"Rolling update strategy for this machine pool if not specified, will use ScaleOut"},"useControlPlaneAsWorker":{"description":"If IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean","x-omitempty":false}},"required":["name","size","labels"],"type":"object"},"v1MachinePoolMeta":{"properties":{"cloudType":{"type":"string"},"healthy":{"description":"number of healthy machines","format":"int32","type":"integer","x-omitempty":false},"infraProfileTemplate":{"$ref":"#/definitions/v1ClusterProfileTemplateMeta","description":"InfraClusterProfile contains OS/Kernel for this NodePool"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean","x-omitempty":false},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"maintenanceMode":{"description":"number of machines under maintenance","format":"int32","type":"integer","x-omitempty":false},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer","x-omitempty":false}},"type":"object"},"v1MachinePoolProperties":{"description":"Machine pool specific properties","properties":{"archType":{"$ref":"#/definitions/v1ArchType","description":"Architecture type of the pool. Default value is 'amd64'","x-omitempty":false}},"type":"object"},"v1MachinePoolRate":{"description":"Machine pool estimated rate information","properties":{"name":{"type":"string"},"nodesCount":{"format":"int32","type":"integer"},"rate":{"$ref":"#/definitions/v1CloudRate"}},"type":"object"},"v1MachinePoolsMachineUids":{"properties":{"machinePools":{"additionalProperties":{"$ref":"#/definitions/v1MachineUids"},"type":"object"}}},"v1MachineUids":{"properties":{"machineUids":{"items":{"type":"string"},"type":"array"}}},"v1Macro":{"properties":{"name":{"type":"string"},"value":{"type":"string"}}},"v1Macros":{"properties":{"macros":{"items":{"$ref":"#/definitions/v1Macro"},"type":"array","uniqueItems":true}}},"v1ManagedDisk":{"properties":{"storageAccountType":{"type":"string"}},"type":"object"},"v1Manifest":{"description":"Manifest object","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ManifestPublishedSpec"}}},"v1ManifestData":{"description":"Published manifest object","properties":{"content":{"description":"Manifest content in yaml","type":"string"},"digest":{"description":"Manifest digest","type":"string"}},"type":"object"},"v1ManifestEntities":{"properties":{"items":{"description":"Manifests array","items":{"$ref":"#/definitions/v1ManifestEntity"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1ManifestEntity":{"description":"Manifest object","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ManifestSpec"}}},"v1ManifestInputEntity":{"description":"Manifest request payload","properties":{"content":{"description":"Manifest content","type":"string"},"name":{"description":"Manifest name","type":"string"}}},"v1ManifestPublishedSpec":{"description":"Manifest spec","properties":{"published":{"$ref":"#/definitions/v1ManifestData"}}},"v1ManifestRefInputEntities":{"description":"Pack manifests input params","properties":{"manifests":{"description":"Pack manifests array","items":{"$ref":"#/definitions/v1ManifestRefInputEntity"},"type":"array","uniqueItems":true}}},"v1ManifestRefInputEntity":{"description":"Manifest request payload","properties":{"content":{"description":"Manifest content in yaml","type":"string"},"uid":{"description":"Manifest uid","type":"string"}}},"v1ManifestRefUpdateEntity":{"description":"Manifest update request payload","properties":{"content":{"description":"Manifest content in yaml","type":"string"},"name":{"description":"Manifest name","type":"string"},"uid":{"description":"Manifest uid","type":"string"}},"required":["name"]},"v1ManifestSpec":{"description":"Manifest spec","properties":{"draft":{"$ref":"#/definitions/v1ManifestData"},"published":{"$ref":"#/definitions/v1ManifestData"}},"type":"object"},"v1ManifestSummary":{"description":"Manifest object","properties":{"content":{"description":"Manifest content in yaml","type":"string"},"name":{"description":"Manifest name","type":"string"},"uid":{"description":"Manifest uid","type":"string"}}},"v1Memory":{"properties":{"sizeInMB":{"description":"memory size in bytes","format":"int64","type":"integer"}},"type":"object"},"v1MetricAggregation":{"description":"Aggregation values","properties":{"avg":{"type":"number","x-omitempty":false},"count":{"format":"int64","type":"number","x-omitempty":false},"max":{"type":"number","x-omitempty":false},"min":{"type":"number","x-omitempty":false},"sum":{"type":"number","x-omitempty":false}},"type":"object"},"v1MetricMetadata":{"properties":{"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1MetricPoint":{"description":"Metric Info","properties":{"avg":{"type":"number"},"count":{"format":"int64","type":"number"},"max":{"type":"number"},"min":{"type":"number"},"sum":{"type":"number"},"timestamp":{"format":"int64","type":"number"},"value":{"type":"number","x-omitempty":false}},"type":"object"},"v1MetricTimeSeries":{"properties":{"items":{"items":{"$ref":"#/definitions/v1Metrics"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1MetricTimeSeriesList":{"properties":{"items":{"items":{"$ref":"#/definitions/v1MetricsList"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1Metrics":{"properties":{"aggregation":{"$ref":"#/definitions/v1MetricAggregation"},"kind":{"type":"string"},"points":{"items":{"$ref":"#/definitions/v1MetricPoint"},"type":"array","uniqueItems":true},"unit":{"type":"string"}},"type":"object"},"v1MetricsList":{"properties":{"metadata":{"$ref":"#/definitions/v1MetricMetadata"},"metrics":{"items":{"$ref":"#/definitions/v1Metrics"},"type":"array","uniqueItems":true}},"type":"object"},"v1MfaAuthenticationExtensions":{"additionalProperties":{"type":"object"},"type":"object"},"v1MfaAuthenticatorSelection":{"properties":{"authenticatorAttachment":{"type":"string"},"requireResidentKey":{"type":"boolean"},"residentKey":{"type":"string"},"userVerification":{"type":"string"}},"type":"object"},"v1MfaConveyancePreference":{"enum":["none","indirect","direct","enterprise"],"type":"string"},"v1MfaCredentialCreationRequest":{"properties":{"_type":{"type":"string"},"authenticatorAttachment":{"type":"string"},"clientExtensionResults":{"additionalProperties":{"type":"object"},"type":"object"},"deviceName":{"type":"string"},"id":{"type":"string"},"rawId":{"$ref":"#/definitions/URLEncodedBase64"},"response":{"properties":{"attestationObject":{"$ref":"#/definitions/URLEncodedBase64"},"clientDataJSON":{"$ref":"#/definitions/URLEncodedBase64"},"transports":{"items":{"type":"string"},"type":"array"}},"type":"object"},"transports":{"items":{"type":"string"},"type":"array"}},"type":"object"},"v1MfaCredentialDescriptor":{"properties":{"attestationType":{"type":"string"},"id":{"$ref":"#/definitions/urlEncodedBase64"},"transports":{"items":{"type":"string"},"type":"array"},"type":{"type":"string"}},"type":"object"},"v1MfaCredentialParameter":{"properties":{"alg":{"type":"integer"},"type":{"type":"string"}},"type":"object"},"v1MfaDeviceMeta":{"properties":{"creationTimestamp":{"$ref":"#/definitions/v1Time"},"deviceName":{"type":"string"}},"type":"object"},"v1MfaDeviceName":{"properties":{"deviceName":{"type":"string"}},"type":"object"},"v1MfaDevices":{"items":{"$ref":"#/definitions/v1MfaDeviceMeta"},"type":"array"},"v1MfaLoginStart":{"properties":{"publicKey":{"$ref":"#/definitions/v1MfaPublicKeyCredentialRequestOptions"}},"type":"object"},"v1MfaPublicKeyCredentialCreationOptions":{"properties":{"attestation":{"$ref":"#/definitions/v1MfaConveyancePreference"},"authenticatorSelection":{"$ref":"#/definitions/v1MfaAuthenticatorSelection"},"challenge":{"$ref":"#/definitions/URLEncodedBase64"},"excludeCredentials":{"items":{"$ref":"#/definitions/v1MfaCredentialDescriptor"},"type":"array"},"extensions":{"$ref":"#/definitions/v1MfaAuthenticationExtensions"},"pubKeyCredParams":{"items":{"$ref":"#/definitions/v1MfaCredentialParameter"},"type":"array"},"rp":{"$ref":"#/definitions/v1MfaRelyingPartyEntity"},"timeout":{"type":"integer"},"user":{"$ref":"#/definitions/v1MfaUserEntity"}},"type":"object"},"v1MfaPublicKeyCredentialRequestOptions":{"properties":{"allowCredentials":{"items":{"$ref":"#/definitions/v1MfaCredentialDescriptor"},"type":"array"},"challenge":{"$ref":"#/definitions/urlEncodedBase64"},"extensions":{"$ref":"#/definitions/v1MfaAuthenticationExtensions"},"rpId":{"type":"string"},"timeout":{"type":"integer"},"userVerification":{"type":"string"}},"type":"object"},"v1MfaRegistrationStart":{"properties":{"publicKey":{"$ref":"#/definitions/v1MfaPublicKeyCredentialCreationOptions"}},"type":"object"},"v1MfaRelyingPartyEntity":{"properties":{"id":{"type":"string"},"name":{"type":"string"}},"type":"object"},"v1MfaUserEntity":{"properties":{"displayName":{"type":"string"},"id":{"type":"object"},"name":{"type":"string"}},"type":"object"},"v1MgmtApp":{"description":"Spectro application management data","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1MgmtAppSpec"},"status":{"$ref":"#/definitions/v1MgmtAppStatus"}},"type":"object"},"v1MgmtAppContainersState":{"properties":{"running":{"properties":{"startedAt":{"$ref":"#/definitions/v1Time"}},"type":"object"},"terminated":{"properties":{"exitCode":{"type":"integer"},"finishedAt":{"$ref":"#/definitions/v1Time"},"reason":{"type":"string"},"signal":{"type":"integer"},"startedAt":{"$ref":"#/definitions/v1Time"}},"type":"object"},"waiting":{"properties":{"reason":{"type":"string"}},"type":"object"}},"type":"object"},"v1MgmtAppContainersStatus":{"properties":{"isHealthy":{"type":"boolean","x-omitempty":false},"message":{"type":"string"},"name":{"type":"string"},"numberOfRestarts":{"type":"integer"},"state":{"$ref":"#/definitions/v1MgmtAppContainersState"}},"type":"object"},"v1MgmtAppCronJobStatus":{"properties":{"isHealthy":{"type":"boolean","x-omitempty":false},"lastScheduleTime":{"$ref":"#/definitions/v1Time"},"lastSuccessfulRunTime":{"$ref":"#/definitions/v1Time"},"messages":{"items":{"type":"string"},"type":"array"},"name":{"type":"string"},"pods":{"additionalProperties":{"$ref":"#/definitions/v1MgmtAppPodsStatus"},"type":"object"}},"type":"object"},"v1MgmtAppEnvHealthStatus":{"properties":{"isHealthy":{"type":"boolean","x-omitempty":false},"messages":{"items":{"type":"string"},"type":"array"},"namespaces":{"additionalProperties":{"$ref":"#/definitions/v1MgmtAppNameSpaceStatus"},"type":"object"}},"type":"object"},"v1MgmtAppHealth":{"properties":{"isHealthy":{"type":"boolean"},"podHealth":{"items":{"$ref":"#/definitions/v1MgmtPodHealth"},"type":"array"}},"type":"object"},"v1MgmtAppNameSpaceStatus":{"properties":{"cronJobs":{"additionalProperties":{"$ref":"#/definitions/v1MgmtAppCronJobStatus"},"type":"object"},"deployments":{"additionalProperties":{"$ref":"#/definitions/v1MgmtAppObjectStatus"},"type":"object"},"isHealthy":{"type":"boolean","x-omitempty":false},"messages":{"items":{"type":"string"},"type":"array"},"statefulSets":{"additionalProperties":{"$ref":"#/definitions/v1MgmtAppObjectStatus"},"type":"object"}},"type":"object"},"v1MgmtAppObjectStatus":{"properties":{"availableReplicas":{"type":"integer"},"creationTime":{"$ref":"#/definitions/v1Time"},"desiredReplicaCount":{"type":"integer"},"isHealthy":{"type":"boolean","x-omitempty":false},"messages":{"items":{"type":"string"},"type":"array"},"name":{"type":"string"},"pods":{"additionalProperties":{"$ref":"#/definitions/v1MgmtAppPodsStatus"},"type":"object"}},"type":"object"},"v1MgmtAppPodsStatus":{"properties":{"containers":{"additionalProperties":{"$ref":"#/definitions/v1MgmtAppContainersStatus"},"type":"object"},"isHealthy":{"type":"boolean","x-omitempty":false},"messages":{"items":{"type":"string"},"type":"array"},"name":{"type":"string"},"phase":{"type":"string"},"pvcs":{"additionalProperties":{"$ref":"#/definitions/v1MgmtAppPvcStatus"},"type":"object"},"reason":{"type":"string"},"startTime":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1MgmtAppPvcStatus":{"properties":{"claimName":{"type":"string"},"creationTime":{"$ref":"#/definitions/v1Time"},"isHealthy":{"type":"boolean","x-omitempty":false},"message":{"type":"string"},"name":{"type":"string"},"state":{"type":"string"}},"type":"object"},"v1MgmtAppSpec":{"description":"spectro application management specifications","properties":{"appEnv":{"type":"string"},"cloudType":{"type":"string"},"installedVersion":{"type":"string"},"latestVersion":{"type":"string"},"spectroClusterUid":{"type":"string"}}},"v1MgmtAppStatus":{"description":"spectro application management status","properties":{"appVersions":{"items":{"$ref":"#/definitions/v1AppVersion"},"type":"array","uniqueItems":true},"isFailed":{"type":"boolean","x-omitempty":false},"message":{"type":"string"},"messageLogs":{"items":{"type":"string"},"type":"array"},"state":{"type":"string"},"upgradeHistory":{"items":{"$ref":"#/definitions/v1SpectroMgmtUpgrade"},"type":"array","uniqueItems":true}}},"v1MgmtAppUpgrade":{"properties":{"spec":{"properties":{"currentVersion":{"type":"string","x-omitempty":false},"previousVersion":{"type":"string","x-omitempty":false},"toBeUpgradedVersion":{"type":"string","x-omitempty":false}},"type":"object"},"status":{"properties":{"action":{"type":"string","x-omitempty":false},"states":{"properties":{"imageUpdate":{"$ref":"#/definitions/v1MgmtUpgradeState","x-omitempty":false,"x-order":1},"spectroClusterUpdate":{"$ref":"#/definitions/v1MgmtUpgradeState","x-omitempty":false,"x-order":0},"spectroServiceResume":{"$ref":"#/definitions/v1MgmtUpgradeState","x-omitempty":false,"x-order":4},"spectroVersionConfigMapUpdate":{"$ref":"#/definitions/v1MgmtUpgradeState","x-omitempty":false,"x-order":3},"spectroVersionServiceSuspend":{"$ref":"#/definitions/v1MgmtUpgradeState","x-omitempty":false,"x-order":2}},"type":"object"},"upgradeStatus":{"type":"string","x-omitempty":false},"versionHistory":{"items":{"type":"string"},"type":"array","x-omitempty":false}},"type":"object"}},"type":"object"},"v1MgmtAppVersion":{"description":"spectro application management version","properties":{"version":{"properties":{"appEnv":{"type":"string"},"cloudType":{"type":"string"},"installedVersion":{"type":"string"},"latestVersion":{"type":"string"}},"type":"object"}}},"v1MgmtBackupSpec":{"description":"backup spec","properties":{"backupUid":{"type":"string"},"mode":{"type":"string"},"modeUid":{"type":"string"},"proxy":{"description":"proxy information if applicable","type":"string"},"scheduleTime":{"$ref":"#/definitions/v1Time"},"scheduleType":{"default":"Automated","enum":["OnDemand","Automated"],"type":"string"}},"type":"object"},"v1MgmtDbCollectionIndexInfo":{"description":"Database info","properties":{"key":{"additionalProperties":{"type":"integer"}},"name":{"type":"string"},"size":{"type":"integer"},"version":{"type":"string"}},"type":"object"},"v1MgmtDbCollectionInfo":{"description":"Database info","properties":{"count":{"type":"integer"},"indexes":{"items":{"$ref":"#/definitions/v1MgmtDbCollectionIndexInfo"},"type":"array"},"isCapped":{"type":"boolean"},"isReadOnly":{"type":"boolean"},"name":{"type":"string"},"size":{"type":"integer"},"storageSize":{"type":"integer"},"totalIndexSize":{"type":"integer"}},"type":"object"},"v1MgmtDbHealth":{"properties":{"databases":{"items":{"$ref":"#/definitions/v1MgmtDbInfo"},"type":"array"},"totalIndexSize":{"type":"integer"},"totalSize":{"type":"integer"}},"type":"object"},"v1MgmtDbInfo":{"description":"Database info","properties":{"collections":{"items":{"$ref":"#/definitions/v1MgmtDbCollectionInfo"},"type":"array"},"isEmpty":{"type":"boolean"},"name":{"type":"string"},"size":{"type":"integer"},"totalIndexSize":{"type":"integer"}},"type":"object"},"v1MgmtDeleteBackupFtpEntity":{"description":"delete backups based on retention period","properties":{"fileTransferConfig":{"$ref":"#/definitions/v1MgmtFileTransferFtpEntity"},"retentionPeriod":{"type":"integer"}},"type":"object"},"v1MgmtDeleteBackupS3Entity":{"description":"delete backups based on retention period","properties":{"fileTransferConfig":{"$ref":"#/definitions/v1MgmtFileTransferS3Entity"},"retentionPeriod":{"type":"integer"}},"type":"object"},"v1MgmtErrLog":{"properties":{"ref":{"type":"string"},"spec":{"$ref":"#/definitions/v1MgmtErrSpec"}},"type":"object"},"v1MgmtErrLogs":{"items":{"$ref":"#/definitions/v1MgmtErrLog"},"type":"array","uniqueItems":true},"v1MgmtErrSpec":{"properties":{"causes":{"items":{"type":"string"},"type":"array"},"data":{"type":"string"},"debug":{"additionalProperties":{"type":"object"},"type":"object"},"errCode":{"type":"string"},"errMsg":{"type":"string"},"stackTraces":{"items":{"type":"string"},"type":"array"},"userCtx":{"properties":{"projectUid":{"type":"string"},"serviceResUid":{"type":"string"},"tenantUid":{"type":"string"},"userUid":{"type":"string"}},"type":"object"}},"type":"object"},"v1MgmtFileTransferFtpEntity":{"description":"file transfer details","properties":{"backupSpec":{"$ref":"#/definitions/v1MgmtBackupSpec"},"ftp":{"$ref":"#/definitions/v1MgmtFtpConfig"}},"type":"object"},"v1MgmtFileTransferS3Entity":{"description":"file transfer details","properties":{"backupSpec":{"$ref":"#/definitions/v1MgmtBackupSpec"},"s3":{"$ref":"#/definitions/v1MgmtS3Config"}},"type":"object"},"v1MgmtFtpConfig":{"description":"ftp config","properties":{"directory":{"type":"string"},"password":{"type":"string"},"server":{"type":"string"},"username":{"type":"string"}},"type":"object"},"v1MgmtHash":{"properties":{"hash":{"type":"string"}},"required":["hash"],"type":"object"},"v1MgmtListBackupFtpEntity":{"description":"list ftp backups","properties":{"fileTransferConfig":{"$ref":"#/definitions/v1MgmtFileTransferFtpEntity"}},"type":"object"},"v1MgmtListBackupS3Entity":{"description":"list s3 backups","properties":{"fileTransferConfig":{"$ref":"#/definitions/v1MgmtFileTransferS3Entity"}},"type":"object"},"v1MgmtMigrateEntity":{"description":"SystemAdmin","properties":{"db":{"type":"string"},"host":{"type":"string"},"isServiceRecord":{"type":"boolean"},"password":{"type":"string"},"port":{"type":"integer"},"uri":{"type":"string"},"username":{"type":"string"}},"type":"object"},"v1MgmtMigrationStatuses":{"description":"SystemAdmin","properties":{"finishTime":{"$ref":"#/definitions/v1Time"},"folderName":{"type":"string"},"isCompleted":{"type":"boolean"},"message":{"items":{"type":"string"},"type":"array"},"startTime":{"$ref":"#/definitions/v1Time"},"state":{"type":"string","x-omitempty":false},"status":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1MgmtMsgBrokerReinitStatus":{"properties":{"failures":{"items":{"$ref":"#/definitions/v1MgmtMsgBrokerReinitStatusEntity"},"type":"array"},"success":{"items":{"$ref":"#/definitions/v1MgmtMsgBrokerReinitStatusEntity"},"type":"array"}},"type":"object"},"v1MgmtMsgBrokerReinitStatusEntity":{"properties":{"account":{"type":"string"},"isSuccess":{"type":"boolean"},"message":{"type":"string"}},"type":"object"},"v1MgmtPodHealth":{"description":"SystemAdmin","properties":{"isHealthy":{"type":"boolean"},"name":{"type":"string"}},"type":"object"},"v1MgmtS3Config":{"description":"s3 config","properties":{"accessKey":{"type":"string"},"bucket":{"type":"string"},"directory":{"type":"string"},"region":{"type":"string"},"secretKey":{"type":"string"}},"type":"object"},"v1MgmtUpgradeState":{"properties":{"description":{"type":"string","x-omitempty":false},"details":{"items":{"type":"string"},"type":"array","x-omitempty":false},"endTimestamp":{"$ref":"#/definitions/v1Time","x-omitempty":false},"isCompleted":{"type":"boolean","x-omitempty":false},"message":{"type":"string","x-omitempty":false},"startTimestamp":{"$ref":"#/definitions/v1Time","x-omitempty":false}},"type":"object"},"v1MonthlyUsage":{"description":"Monthly usage object","properties":{"month":{"$ref":"#/definitions/v1Time","description":"Month of usage"},"tenantUsages":{"description":"List of tenants usage","items":{"$ref":"#/definitions/v1TenantUsage"},"type":"array","uniqueItems":true},"usedAlloyCredits":{"description":"Credits used by imported clusters","format":"float64","type":"number"},"usedPureCredits":{"description":"Credits used by managed clusters","format":"float64","type":"number"}}},"v1MsgBrokerConnection":{"properties":{"account":{"type":"string"},"accountUid":{"type":"string"},"cid":{"type":"integer"},"cluster":{"properties":{"addr":{"type":"string"},"authTimeout":{"type":"integer"},"clusterPort":{"type":"integer"},"urls":{"items":{"type":"string"},"type":"array"}},"type":"object"},"cpu":{"type":"number"},"duplicationCount":{"type":"integer"},"iP":{"type":"string"},"idle":{"type":"string"},"inBytes":{"type":"integer"},"inMsgs":{"type":"integer"},"lang":{"type":"string"},"lastActivity":{"$ref":"#/definitions/v1Time"},"name":{"type":"string"},"outBytes":{"type":"integer"},"outMsgs":{"type":"integer"},"pendingBytes":{"type":"integer"},"port":{"type":"integer"},"rtt":{"type":"string"},"start":{"$ref":"#/definitions/v1Time"},"subscriptionList":{"items":{"type":"string"},"type":"array"},"subscriptions":{"type":"integer"},"tLSCipherSuite":{"type":"string"},"tLSVersion":{"type":"string"},"uptime":{"type":"string"},"version":{"type":"string"}},"type":"object"},"v1MsgBrokerConnectionList":{"items":{"$ref":"#/definitions/v1MsgBrokerConnection"},"type":"array"},"v1MsgBrokerConnections":{"properties":{"connections":{"items":{"$ref":"#/definitions/v1MsgBrokerConnection"},"type":"array","uniqueItems":true},"limit":{"type":"integer"},"now":{"$ref":"#/definitions/v1Time"},"numOfConnections":{"type":"integer"},"offset":{"type":"integer"},"serverId":{"type":"string"},"totalConnections":{"type":"integer"}},"type":"object"},"v1MsgBrokerHealth":{"properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta","type":"object"},"spec":{"$ref":"#/definitions/v1MsgBrokerNodesHealthSpec","type":"object"},"status":{"$ref":"#/definitions/v1MsgBrokerNodesHealthStatus","type":"object"}},"type":"object"},"v1MsgBrokerNodeHealth":{"properties":{"allyPublishersByTenant":{"additionalProperties":{"$ref":"#/definitions/v1MsgBrokerConnectionList"},"type":"object"},"duplicateSubscribersCount":{"additionalProperties":{"type":"integer"},"type":"object"},"hubbleSubscribersByService":{"additionalProperties":{"$ref":"#/definitions/v1MsgBrokerConnectionList"},"type":"object"},"hubbleSubscribersByTenant":{"additionalProperties":{"$ref":"#/definitions/v1MsgBrokerConnectionList"},"type":"object"},"hubbleSubscribersByType":{"additionalProperties":{"$ref":"#/definitions/v1MsgBrokerConnectionList"},"type":"object"},"nodeId":{"type":"string"},"subscriberWithAbnormalRTT":{"$ref":"#/definitions/v1MsgBrokerConnectionList"},"subscribersWithAbnormalSubscriptions":{"$ref":"#/definitions/v1MsgBrokerConnectionList"},"uniqueSubscribers":{"type":"integer"},"unrecognizedClients":{"$ref":"#/definitions/v1MsgBrokerConnectionList"}},"type":"object"},"v1MsgBrokerNodeHealthSpec":{"properties":{"connections":{"$ref":"#/definitions/v1MsgBrokerConnections","type":"object"},"nodeId":{"type":"string"},"routes":{"$ref":"#/definitions/v1MsgBrokerRoutes","type":"object"},"variables":{"$ref":"#/definitions/v1MsgBrokerVariables","type":"object"}},"type":"object"},"v1MsgBrokerNodesHealthSpec":{"properties":{"nodes":{"items":{"$ref":"#/definitions/v1MsgBrokerNodeHealthSpec"},"type":"array"}},"type":"object"},"v1MsgBrokerNodesHealthStatus":{"properties":{"nodes":{"items":{"$ref":"#/definitions/v1MsgBrokerNodeHealth"},"type":"array"}},"type":"object"},"v1MsgBrokerRoutes":{"properties":{"numRoutes":{"type":"integer"},"routes":{"items":{"$ref":"#/definitions/v1NatsRoute"},"type":"array"},"serverId":{"type":"string"}},"type":"object"},"v1MsgBrokerVariables":{"properties":{"authRequired":{"type":"boolean"},"authTimeout":{"type":"integer"},"cluster":{"properties":{"addr":{"type":"string"},"authTimeout":{"type":"integer"},"clusterPort":{"type":"integer"},"urls":{"items":{"type":"string"},"type":"array"}},"type":"object"},"configLoadTime":{"$ref":"#/definitions/v1Time"},"connectUrls":{"items":{"type":"string"},"type":"array"},"connections":{"type":"integer"},"cores":{"type":"integer"},"cpu":{"type":"number"},"gitCommit":{"type":"string"},"go":{"type":"string"},"gomaxprocs":{"type":"integer"},"host":{"type":"string"},"httpHost":{"type":"string"},"httpPort":{"type":"integer"},"inBytes":{"type":"integer"},"inMsgs":{"type":"integer"},"leafNodes":{"type":"integer"},"maxConnections":{"type":"integer"},"maxControlLine":{"type":"integer"},"maxPayload":{"type":"integer"},"maxPending":{"type":"integer"},"mem":{"type":"integer"},"now":{"$ref":"#/definitions/v1Time"},"outBytes":{"type":"integer"},"outMsgs":{"type":"integer"},"pingInterval":{"type":"integer"},"pingMax":{"type":"integer"},"port":{"type":"integer"},"proto":{"type":"integer"},"remotes":{"type":"integer"},"routes":{"type":"integer"},"serverId":{"type":"string"},"serverName":{"type":"string"},"slowConsumers":{"type":"integer"},"start":{"$ref":"#/definitions/v1Time"},"subscriptions":{"type":"integer"},"tlsRequired":{"type":"boolean"},"tlsTimeout":{"type":"integer"},"totalConnections":{"type":"integer"},"uptime":{"type":"string"},"version":{"type":"string"},"writeDeadline":{"type":"integer"}},"type":"object"},"v1MsgSubscriber":{"description":"Message subscriber request","properties":{"accountId":{"type":"string"},"publisher":{"type":"string"},"service":{"type":"string"},"userId":{"type":"string"}},"type":"object"},"v1Nameserver":{"description":"Nameserver define search domains and nameserver addresses","properties":{"addresses":{"items":{"type":"string"},"type":"array"},"search":{"items":{"type":"string"},"type":"array"}},"type":"object"},"v1NatsConfiguration":{"description":"Describes the response that contains the nats configuration to establish credentials","properties":{"connectionString":{"description":"Describes the preCalculated connection string, can be used directly to make connection","type":"string"},"enableTls":{"description":"Describes the NATs application option to use a TLS based custom dialer. Its enabled when external Certificate is used over the existing one.","type":"boolean"},"insecureTls":{"description":"Describes the NATs tls option to skip verifying the client certificate","type":"boolean"},"password":{"description":"Describes the NATs user's password","type":"string"},"scheme":{"description":"Describes the NATs protocol for the connection. Eg- 'tls', 'nats'","type":"string"},"tlsCertificate":{"description":"Describes the NATs tls certificate used for making a secure connection","type":"string"},"tlsKey":{"description":"Describes the NATs tls certificate key used for making a secure connection","type":"string"},"urls":{"description":"Describes the URLs of the nats nodes used in nats HA setup where the client will connect","type":"string"},"userName":{"description":"Describes the NATs user name","type":"string"}},"type":"object"},"v1NatsCredentialRequest":{"description":"Describes the request for resource's nats credential","properties":{"clusterUid":{"description":"Deprecated. please use resourceUid","type":"string"},"isSystem":{"description":"Describes if its a system request","type":"boolean"},"resourceUid":{"description":"Describes the resource for which credentials has to be fetched","type":"string"},"serviceName":{"description":"Describes the service for which credentials has to be fetched. Possible values [ally, jet]","enum":["ally","jet"],"type":"string"},"tenantUid":{"description":"Describes the tenant of the resource","type":"string"}},"type":"object"},"v1NatsCredentials":{"description":"Describes the response that contains the nats credentials","properties":{"allowedPublisher":{"description":"Describes the subject on which client is allowed to publish","type":"string"},"allowedSubcriber":{"description":"Describes the subject on which client is allowed to subscribe","type":"string"},"jwt":{"description":"Describes the jwt token which will be used as an credential for the nats","type":"string"},"seed":{"description":"Describes the seed for the jwt","type":"string"}},"type":"object"},"v1NatsRoute":{"properties":{"didSolicit":{"type":"boolean"},"inBytes":{"type":"integer"},"inMsgs":{"type":"integer"},"isConfigured":{"type":"boolean"},"outBytes":{"type":"integer"},"outMsgs":{"type":"integer"},"pendingSize":{"type":"integer"},"port":{"type":"integer"},"remoteId":{"type":"string"},"rid":{"type":"integer"},"rtt":{"type":"string"},"subscriptions":{"type":"integer"}},"type":"object"},"v1NestedCloudConfigStatus":{"description":"Defines the status of virtual cloud config","properties":{"conditions":{"items":{"$ref":"#/definitions/v1ClusterCondition"},"type":"array","x-kubernetes-patch-merge-key":"type","x-kubernetes-patch-strategy":"merge"},"isAddonLayer":{"description":"addon layers present in spc","type":"boolean"}},"type":"object"},"v1Nic":{"properties":{"dns":{"items":{"type":"string"},"type":"array"},"gateway":{"type":"string"},"ip":{"type":"string"},"isDefault":{"type":"boolean"},"macAddr":{"type":"string"},"nicName":{"type":"string"},"subnet":{"type":"string"}},"type":"object"},"v1NodesAutoRemediationSettings":{"properties":{"disableNodesAutoRemediation":{"type":"boolean","x-omitempty":false},"isEnabled":{"type":"boolean","x-omitempty":false}}},"v1NonFipsConfig":{"description":"Non-FIPS configuration","properties":{"mode":{"default":"nonFipsDisabled","description":"enable or disable the non FIPS complaint","enum":["nonFipsEnabled","nonFipsDisabled"],"type":"string"}}},"v1Notification":{"description":"Describes event notification and action definition","properties":{"action":{"$ref":"#/definitions/v1NotificationAction","description":"Describes actions for the notification","type":"object"},"metadata":{"$ref":"#/definitions/v1ObjectMeta","type":"object"},"relatedObject":{"$ref":"#/definitions/v1RelatedObject","type":"object"},"source":{"$ref":"#/definitions/v1NotificationSource","description":"Describes origin info for the notification","type":"object"},"type":{"description":"Describes type of notification. Possible values [NotificationPackUpdate, NotificationPackRegistryUpdate, NotificationNone]","enum":["NotificationPackUpdate","NotificationPackRegistryUpdate","NotificationNone"],"type":"string"}},"type":"object"},"v1NotificationAction":{"description":"Describes actions for the notification","properties":{"ack":{"description":"Describes the acknowledgement status for the notification","type":"boolean","x-omitempty":false},"actionMessage":{"description":"Describes information related to notification action","type":"string"},"actionType":{"description":"Describes action type for the notification. Possible Values [NotifyActionPacksUpdate, NotifyActionClusterProfileUpdate, NotifyActionPackRegistryUpdate, NotifyActionClusterUpdate, NotifyActionNone]","enum":["NotifyActionPacksUpdate","NotifyActionClusterProfileUpdate","NotifyActionPackRegistryUpdate","NotifyActionClusterUpdate","NotifyActionNone"],"type":"string"},"events":{"additionalProperties":{"additionalProperties":{"type":"string"},"type":"object"},"description":"Describes the events happened for the notifications","type":"object"},"isDone":{"description":"Describes the \"Done\" status for the notification","type":"boolean","x-omitempty":false},"isInfo":{"description":"Describes the notification as a information","type":"boolean","x-omitempty":false},"link":{"type":"string"}},"type":"object"},"v1NotificationEvent":{"description":"Describes notification event details","properties":{"component":{"description":"Describes component of notification event","type":"string"},"digest":{"description":"Describes notification event digest","type":"string"},"message":{"description":"Describes a information for the notification event","type":"string"},"meta":{"additionalProperties":{"type":"string"},"description":"Describes a event messages with meta digest as the key","type":"object"},"type":{"description":"Describes notification event type","enum":["NotificationPackSync","NotificationClusterProfileSync"],"type":"string"}},"type":"object"},"v1NotificationSource":{"description":"Describes origin info for the notification","properties":{"component":{"description":"Describes component where notification originated","type":"string"}},"type":"object"},"v1Notifications":{"description":"Describe a list of generated notifications","properties":{"items":{"description":"Describe a list of generated notifications","items":{"$ref":"#/definitions/v1Notification"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData","description":"Describes the meta information about the notification lists"}},"required":["items"],"type":"object"},"v1OS":{"properties":{"family":{"type":"string"},"version":{"type":"string"}},"type":"object"},"v1ObjectEntity":{"description":"Object identity meta","properties":{"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1ObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","properties":{"annotations":{"additionalProperties":{"type":"string"},"description":"Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.","type":"object"},"creationTimestamp":{"$ref":"#/definitions/v1Time","description":"CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value.\nPopulated by the system. Read-only."},"deletionTimestamp":{"$ref":"#/definitions/v1Time","description":"This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client.\nPopulated by the system. Read-only."},"labels":{"additionalProperties":{"type":"string"},"description":"Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag","type":"object"},"lastModifiedTimestamp":{"$ref":"#/definitions/v1Time","description":"LastModifiedTimestamp is a timestamp representing the server time when this object was last modified. It is not guaranteed to be set in happens-before order across separate operations. \nClients may not set this value. Populated by the system. Read-only."},"name":{"description":"Name of the resource.","type":"string"},"uid":{"description":"UID is the unique identifier generated for the resource. This is not an input field for any request.","type":"string"}},"type":"object"},"v1ObjectMetaInputEntity":{"description":"ObjectMeta input entity for object creation","properties":{"annotations":{"additionalProperties":{"type":"string"},"description":"Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.","type":"object"},"labels":{"additionalProperties":{"type":"string"},"description":"Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag","type":"object"},"name":{"description":"Name of the resource.","type":"string"}},"type":"object"},"v1ObjectMetaInputEntitySchema":{"description":"Resource metadata","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"}},"required":["metadata"],"type":"object"},"v1ObjectMetaUpdateEntity":{"description":"ObjectMeta update entity with uid as input","properties":{"annotations":{"additionalProperties":{"type":"string"},"type":"object"},"labels":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1ObjectReference":{"description":"ObjectReference contains enough information to let you inspect or modify the referred object.","properties":{"kind":{"description":"Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds","type":"string"},"name":{"description":"Name of the referent.","type":"string"},"uid":{"description":"UID of the referent.","type":"string"}},"type":"object"},"v1ObjectResReference":{"description":"Object resource reference","properties":{"kind":{"type":"string"},"name":{"type":"string"},"projectUid":{"type":"string"},"tenantUid":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1ObjectScopeEntity":{"description":"Object scope identity meta","properties":{"name":{"type":"string"},"scope":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1ObjectTagsEntity":{"description":"Object identity meta with tags","properties":{"labels":{"additionalProperties":{"type":"string"},"type":"object"},"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1OciImageRegistry":{"description":"Oci Image Registry","properties":{"baseContentPath":{"description":"baseContentPath is the root path for the registry content","type":"string"},"caCert":{"type":"string"},"endpoint":{"type":"string"},"insecureSkipVerify":{"type":"boolean"},"mirrorRegistries":{"description":"mirrorRegistries contains the array of image sources like gcr.io, ghcr.io, docker.io","type":"string"},"name":{"type":"string"},"password":{"type":"string"},"username":{"type":"string"}},"type":"object"},"v1OciRegistries":{"properties":{"items":{"items":{"$ref":"#/definitions/v1OciRegistry"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1OciRegistry":{"description":"Oci registry information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1OciRegistrySpec"},"status":{"$ref":"#/definitions/v1OciRegistryStatusSummary"}},"type":"object"},"v1OciRegistryAuth":{"description":"Auth credentials of the oci registry","properties":{"password":{"description":"Password in the credentials","format":"password","type":"string"},"username":{"description":"Username in the credentials","type":"string"}},"type":"object"},"v1OciRegistryEntity":{"description":"Oci registry credentials","properties":{"auth":{"$ref":"#/definitions/v1RegistryAuth"},"defaultRegion":{"type":"string"},"endpoint":{"type":"string"},"providerType":{"type":"string"},"scope":{"type":"string"},"type":{"type":"string"}},"type":"object"},"v1OciRegistrySpec":{"description":"Image registry spec","properties":{"defaultRegion":{"type":"string"},"endpoint":{"type":"string"},"isPrivate":{"type":"boolean"},"providerType":{"type":"string"},"registryType":{"type":"string"},"scope":{"type":"string"}},"type":"object"},"v1OciRegistryStatusSummary":{"description":"OCI registry status summary","properties":{"sync":{"$ref":"#/definitions/v1RegistrySyncStatus"}}},"v1OidcAuth":{"properties":{"oidcToken":{"type":"string"},"org":{"type":"string"}},"type":"object"},"v1OidcAuthLogin":{"properties":{"emailId":{"type":"string"},"password":{"format":"password","type":"string"}},"type":"object"},"v1OidcAuthorizationTokenResponse":{"properties":{"access_token":{"type":"string"},"error":{"type":"string"},"error_description":{"type":"string"},"expires_in":{"type":"integer"},"id_token":{"type":"string"},"raw":{"type":"object"},"refresh_token":{"type":"string"},"scope":{"type":"string"}},"type":"object"},"v1OidcLogins":{"description":"loginsDetails","properties":{"systemLogins":{"items":{"$ref":"#/definitions/v1SsoLogin"},"type":"array","uniqueItems":true},"tenantLogin":{"properties":{"authType":{"type":"string"},"redirectUrl":{"type":"string"}},"type":"object"}},"type":"object"},"v1OidcRefreshToken":{"description":"oidc request with token","properties":{"token":{"type":"string"}},"type":"object"},"v1OpenIDProviderMetadataResponse":{"properties":{"authorization_endpoint":{"description":"REQUIRED. URL of the OP's OAuth 2.0 Authorization Endpoint","type":"string"},"claims_supported":{"description":"RECOMMENDED. JSON array containing a list of the Claim Names of the Claims that the OpenID Provider MAY be able to supply values for","type":"string"},"id_token_signing_alg_values_supported":{"description":"REQUIRED. JSON array containing a list of the JWS signing algorithms (alg values) supported by the OP for the ID Token to encode the Claims in a JWT","type":"object"},"issuer":{"description":"REQUIRED. URL using the https scheme with no query or fragment component that the OP asserts as its Issuer Identifier","type":"string"},"jwks_uri":{"description":"REQUIRED. URL of the OP's JSON Web Key Set [JWK] document.","type":"string"},"registration_endpoint":{"description":"RECOMMENDED. URL of the OP's Dynamic Client Registration Endpoint","type":"string"},"response_types_supported":{"description":"REQUIRED. JSON array containing a list of the OAuth 2.0 response_type values that this OP supports","type":"string"},"scopes_supported":{"description":"RECOMMENDED. JSON array containing a list of the OAuth 2.0 [RFC6749] scope values that this server supports","type":"string"},"subject_types_supported":{"description":"REQUIRED. JSON array containing a list of the Subject Identifier types that this OP supports","type":"string"},"token_endpoint":{"description":"URL of the OP's OAuth 2.0 Token Endpoint","type":"string"},"userinfo_endpoint":{"description":"RECOMMENDED. URL of the OP's UserInfo Endpoint","type":"string"}},"type":"object"},"v1OpenStackAccount":{"description":"OpenStack account information","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the account.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1OpenStackCloudAccount"},"status":{"$ref":"#/definitions/v1CloudAccountStatus"}},"type":"object"},"v1OpenStackAccounts":{"properties":{"items":{"items":{"$ref":"#/definitions/v1OpenStackAccount"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1OpenStackAz":{"description":"OpenStack az entity","properties":{"name":{"description":"Name of OpenStack az","type":"string"}},"type":"object"},"v1OpenStackAzs":{"description":"List of OpenStack azs","properties":{"azs":{"items":{"$ref":"#/definitions/v1OpenStackAz"},"type":"array","uniqueItems":true}},"required":["azs"],"type":"object"},"v1OpenStackCloudAccount":{"description":"auth-url,project,username,password,domain,cacert etc","properties":{"caCert":{"description":"Ca cert for OpenStack","type":"string"},"defaultDomain":{"description":"Default Domain name","type":"string"},"defaultProject":{"description":"Default Project name","type":"string"},"identityEndpoint":{"description":"Identity endpoint for OpenStack","type":"string"},"insecure":{"description":"For self signed certs in IdentityEndpoint","type":"boolean"},"parentRegion":{"description":"Parent region of OpenStack","type":"string"},"password":{"description":"Password of OpenStack account","type":"string"},"username":{"description":"Username of OpenStack account","type":"string"}},"required":["identityEndpoint","username","password"],"type":"object"},"v1OpenStackCloudClusterConfigEntity":{"description":"Openstack cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1OpenStackClusterConfig"}},"type":"object"},"v1OpenStackCloudConfig":{"description":"OpenStackCloudConfig is the Schema for the OpenStackcloudconfigs API","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Cloud type of the cloud config","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1OpenStackCloudConfigSpec"},"status":{"$ref":"#/definitions/v1OpenStackCloudConfigStatus"}},"type":"object"},"v1OpenStackCloudConfigSpec":{"description":"OpenStackCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api","properties":{"cloudAccountRef":{"$ref":"#/definitions/v1ObjectReference","description":"cloudAccountRef should point to the secret which contains OpenStackCloudAccount"},"clusterConfig":{"$ref":"#/definitions/v1OpenStackClusterConfig"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1OpenStackMachinePoolConfig"},"type":"array"}},"type":"object"},"v1OpenStackCloudConfigStatus":{"description":"OpenStackCloudConfigStatus defines the observed state of OpenStackCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool","properties":{"conditions":{"items":{"$ref":"#/definitions/v1ClusterCondition"},"type":"array"},"nodeImage":{"type":"string"},"sourceImageId":{"description":"sourceImageId, it can be from packref's annotations or from pack.json","type":"string"},"useCapiImage":{"type":"boolean"}},"type":"object"},"v1OpenStackClusterConfig":{"description":"Cluster level configuration for OpenStack cloud and applicable for all the machine pools","properties":{"bastionDisabled":{"description":"Create bastion node option we have earlier supported creation of bastion by default","type":"boolean"},"dnsNameservers":{"description":"DNSNameservers is the list of nameservers for OpenStack Subnet being created. Set this value when you need create a new network/subnet while the access through DNS is required.","items":{"type":"string"},"type":"array"},"domain":{"$ref":"#/definitions/v1OpenStackResource"},"network":{"$ref":"#/definitions/v1OpenStackResource","description":"For static placement"},"nodeCidr":{"description":"For dynamic provision NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.","type":"string"},"project":{"$ref":"#/definitions/v1OpenStackResource"},"region":{"type":"string"},"sshKeyName":{"type":"string"},"subnet":{"$ref":"#/definitions/v1OpenStackResource"}},"type":"object"},"v1OpenStackDomain":{"description":"OpenStack domain. A Domain is a collection of projects, users, and roles","properties":{"description":{"description":"Description is the description of the Domain","type":"string"},"id":{"description":"ID is the unique ID of the domain","type":"string"},"name":{"description":"Name is the name of the domain","type":"string"}},"type":"object"},"v1OpenStackFlavor":{"description":"OpenStack flavor entity. Flavor represent (virtual) hardware configurations for server resources","properties":{"disk":{"description":"Disk is the amount of root disk, measured in GB","type":"integer"},"ephemeral":{"description":"Ephemeral is the amount of ephemeral disk space, measured in GB","type":"integer"},"id":{"description":"ID is the flavor's unique ID","type":"string"},"memory":{"description":"Amount of memory, measured in MB","type":"integer"},"name":{"description":"Name is the name of the flavor","type":"string"},"vcpus":{"description":"VCPUs indicates how many (virtual) CPUs are available for this flavor","type":"integer"}},"type":"object"},"v1OpenStackFlavors":{"description":"List of OpenStack flavours","properties":{"items":{"items":{"$ref":"#/definitions/v1OpenStackFlavor"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1OpenStackKeypair":{"description":"OpenStack keypair. KeyPair is an SSH key known to the OpenStack Cloud that is available to be injected into servers","properties":{"name":{"description":"Name is used to refer to this keypair from other services within this region","type":"string"},"publicKey":{"description":"PublicKey is the public key from this pair, in OpenSSH format","type":"string"}},"type":"object"},"v1OpenStackKeypairs":{"description":"List of OpenStack keypairs","properties":{"items":{"items":{"$ref":"#/definitions/v1OpenStackKeypair"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1OpenStackMachine":{"description":"OpenStack cloud VM definition","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the machine.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1OpenStackMachineSpec"},"status":{"$ref":"#/definitions/v1CloudMachineStatus"}},"type":"object"},"v1OpenStackMachineConfigEntity":{"properties":{"azs":{"description":"for master pool, this will be the failure domains for kcp","items":{"type":"string"},"type":"array"},"flavorConfig":{"$ref":"#/definitions/v1OpenstackFlavorConfig"}},"required":["flavorConfig"],"type":"object"},"v1OpenStackMachinePoolCloudConfigEntity":{"properties":{"azs":{"description":"for master pool, this will be the failure domains for kcp","items":{"type":"string"},"type":"array"},"diskGiB":{"description":"Root disk size","format":"int32","type":"integer"},"flavorConfig":{"$ref":"#/definitions/v1OpenstackFlavorConfig"},"subnet":{"$ref":"#/definitions/v1OpenStackResource"}},"required":["flavorConfig"],"type":"object"},"v1OpenStackMachinePoolConfig":{"properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"additionalLabels","type":"object"},"additionalTags":{"additionalProperties":{"type":"string"},"description":"AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole","type":"object"},"azs":{"description":"for master pool, this will be the failure domains for kcp","items":{"type":"string"},"type":"array"},"diskGiB":{"description":"DiskGiB is used to configure rootVolume, the volume metadata to boot from","format":"int32","type":"integer"},"flavor":{"description":"Openstack flavor name, only return argument","type":"string"},"flavorConfig":{"$ref":"#/definitions/v1OpenstackFlavorConfig","description":"Openstack flavor configuration, input argument"},"image":{"type":"string"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean"},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"machinePoolProperties":{"$ref":"#/definitions/v1MachinePoolProperties"},"maxSize":{"description":"max size of the pool, for scaling","format":"int32","type":"integer"},"minSize":{"description":"min size of the pool, for scaling","format":"int32","type":"integer"},"name":{"type":"string"},"nodeRepaveInterval":{"description":"Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster","format":"int32","type":"integer"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"subnet":{"$ref":"#/definitions/v1OpenStackResource"},"taints":{"description":"master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array","uniqueItems":true},"updateStrategy":{"$ref":"#/definitions/v1UpdateStrategy","description":"rolling update strategy for this machinepool if not specified, will use ScaleOut"},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean"}},"required":["flavorConfig"],"type":"object"},"v1OpenStackMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1OpenStackMachinePoolCloudConfigEntity"},"poolConfig":{"$ref":"#/definitions/v1MachinePoolConfigEntity"}},"required":["cloudConfig"],"type":"object"},"v1OpenStackMachineSpec":{"description":"OpenStack cloud VM definition spec","properties":{"az":{"type":"string"},"image":{"type":"string"},"instanceType":{"$ref":"#/definitions/v1GenericInstanceType","description":"Instance flavor of the machine with cpu and memory info"},"nics":{"items":{"$ref":"#/definitions/v1OpenStackNic"},"type":"array"},"projectId":{"type":"string"},"securityGroups":{"items":{"type":"string"},"type":"array"},"sshKeyName":{"type":"string"}},"required":["instanceType","nics"],"type":"object"},"v1OpenStackMachines":{"description":"OpenStack machine list","properties":{"items":{"items":{"$ref":"#/definitions/v1OpenStackMachine"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1OpenStackNetwork":{"description":"OpenStack network","properties":{"description":{"description":"Description of OpenStack network","type":"string"},"id":{"description":"Id of OpenStack network","type":"string"},"name":{"description":"Name of OpenStack network","type":"string"},"subnets":{"description":"Subnets associated with OpenStack network","items":{"$ref":"#/definitions/v1OpenStackSubnet"},"type":"array","uniqueItems":true}},"type":"object"},"v1OpenStackNetworks":{"description":"List of OpenStack networks","properties":{"items":{"items":{"$ref":"#/definitions/v1OpenStackNetwork"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1OpenStackNic":{"description":"OpenStack network interface","properties":{"index":{"format":"int8","type":"integer"},"networkName":{"type":"string"},"privateIPs":{"items":{"type":"string"},"type":"array"}},"required":["networkName"],"type":"object"},"v1OpenStackProject":{"description":"Project represents an OpenStack Identity Project","properties":{"description":{"description":"Description is the description of the project","type":"string"},"domainId":{"description":"DomainID is the domain ID the project belongs to","type":"string"},"id":{"description":"ID is the unique ID of the project","type":"string"},"name":{"description":"Name is the name of the project","type":"string"},"parentProjectId":{"description":"ParentID is the parent_id of the project","type":"string"}},"type":"object"},"v1OpenStackProjects":{"description":"Array of OpenStack projects","properties":{"items":{"items":{"$ref":"#/definitions/v1OpenStackProject"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1OpenStackRegion":{"description":"OpenStack region entity","properties":{"description":{"description":"Description of OpenStack region","type":"string"},"id":{"description":"Id of OpenStack region","type":"string"},"parentRegionId":{"description":"Parent region id of OpenStack region","type":"string"}},"type":"object"},"v1OpenStackRegions":{"description":"List of OpenStack regions and domains","properties":{"domains":{"description":"List of OpenStack domains","items":{"$ref":"#/definitions/v1OpenStackDomain"},"type":"array","uniqueItems":true},"regions":{"description":"List of OpenStack regions","items":{"$ref":"#/definitions/v1OpenStackRegion"},"type":"array","uniqueItems":true}},"required":["regions","domains"],"type":"object"},"v1OpenStackResource":{"properties":{"id":{"type":"string"},"name":{"type":"string"}},"type":"object"},"v1OpenStackSubnet":{"description":"OpenStack subnet entity","properties":{"description":{"description":"Description for the network","type":"string"},"id":{"description":"UUID for the network","type":"string"},"name":{"description":"Human-readable name for the network. Might not be unique","type":"string"}},"type":"object"},"v1OpenstackFlavorConfig":{"properties":{"diskGiB":{"description":"DiskGiB is the size of a virtual machine's disk, in GiB.","format":"int32","type":"integer"},"memoryMiB":{"description":"MemoryMiB is the size of a virtual machine's memory, in MiB.","format":"int64","type":"integer"},"name":{"description":"Openstack flavor name","type":"string"},"numCPUs":{"description":"NumCPUs is the number of virtual processors in a virtual machine.","format":"int32","type":"integer"}},"required":["name"]},"v1OrgState":{"description":"Org state","properties":{"state":{"type":"string"}},"type":"object"},"v1Organization":{"description":"Describes user's organization details","properties":{"authType":{"description":"Describes user's enabled authorization mode","type":"string"},"name":{"description":"Describes user's organization name","type":"string"},"redirectUrl":{"description":"Describes user's organization authentication url","type":"string"},"ssoLogins":{"$ref":"#/definitions/v1SsoLogins","description":"Describes a list of allowed social logins for the organization"}},"type":"object"},"v1Organizations":{"description":"Returns a list of user's organizations details and login methods","properties":{"organizations":{"description":"Describes a list of user's organization","items":{"$ref":"#/definitions/v1Organization"},"type":"array","uniqueItems":true}},"type":"object"},"v1OsPatchConfig":{"properties":{"onDemandPatchAfter":{"$ref":"#/definitions/v1Time","description":"OnDemandPatchAfter is the desired time for one time on-demand patch"},"patchOnBoot":{"description":"PatchOnBoot indicates need to do patch when node first boot up, only once","type":"boolean","x-omitempty":false},"rebootIfRequired":{"description":"Reboot once the OS patch is applied","type":"boolean","x-omitempty":false},"schedule":{"description":"The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.","type":"string"}},"type":"object"},"v1OsPatchEntity":{"properties":{"osPatchConfig":{"$ref":"#/definitions/v1OsPatchConfig"}},"type":"object"},"v1OsType":{"default":"Linux","enum":["Linux","Windows"],"type":"string"},"v1OverloadSpec":{"description":"Overload spec","properties":{"cloudAccountUid":{"type":"string","x-omitempty":false},"ipAddress":{"type":"string"},"ipPools":{"items":{"$ref":"#/definitions/v1IpPoolEntity"},"type":"array"},"isSelfHosted":{"type":"boolean"},"isSystem":{"type":"boolean"},"spectroClusterUid":{"type":"string","x-omitempty":false},"tenantUid":{"type":"string"}},"type":"object"},"v1OverloadStatus":{"description":"Overload status","properties":{"health":{"$ref":"#/definitions/v1SpectroClusterHealthStatus"},"isActive":{"type":"boolean","x-omitempty":false},"isReady":{"type":"boolean","x-omitempty":false},"kubectlCommands":{"items":{"type":"string"},"type":"array","uniqueItems":true},"state":{"type":"string"}},"type":"object"},"v1OverloadVsphereOva":{"description":"Overload ova details","properties":{"location":{"type":"string","x-omitempty":false}},"type":"object"},"v1Overlord":{"description":"Overlord defintiion","properties":{"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1OverloadSpec"},"status":{"$ref":"#/definitions/v1OverloadStatus"}},"type":"object"},"v1OverlordMaasAccountCreate":{"properties":{"account":{"$ref":"#/definitions/v1MaasCloudAccount"},"name":{"description":"Name for the private gateway \u0026 cloud account","type":"string"},"shareWithProjects":{"type":"boolean","x-omitempty":false}}},"v1OverlordMaasAccountEntity":{"properties":{"account":{"$ref":"#/definitions/v1MaasCloudAccount"},"shareWithProjects":{"type":"boolean","x-omitempty":false}}},"v1OverlordMaasCloudConfig":{"properties":{"clusterConfig":{"$ref":"#/definitions/v1MaasClusterConfig"},"clusterProfiles":{"description":"Cluster profiles pack configuration for private gateway cluster","items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"},"clusterSettings":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"clusterSettings is the generic configuration related to a cluster like OS patch, Rbac, Namespace allocation"},"machineConfig":{"$ref":"#/definitions/v1MaasMachineConfigEntity"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"}}},"v1OverlordManifest":{"description":"overlord manifest","properties":{"manifest":{"type":"string"}},"type":"object"},"v1OverlordMigrateEntity":{"properties":{"sourceUid":{"type":"string"},"targetUid":{"type":"string"}}},"v1OverlordOpenStackAccountCreate":{"properties":{"account":{"$ref":"#/definitions/v1OpenStackCloudAccount"},"name":{"description":"Name for the private gateway \u0026 cloud account","type":"string"},"shareWithProjects":{"type":"boolean","x-omitempty":false}}},"v1OverlordOpenStackAccountEntity":{"properties":{"account":{"$ref":"#/definitions/v1OpenStackCloudAccount"},"shareWithProjects":{"type":"boolean","x-omitempty":false}}},"v1OverlordOpenStackCloudConfig":{"properties":{"clusterConfig":{"$ref":"#/definitions/v1OpenStackClusterConfig"},"clusterProfiles":{"description":"Cluster profiles pack configuration for private gateway cluster","items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"},"clusterSettings":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"clusterSettings is the generic configuration related to a cluster like OS patch, Rbac, Namespace allocation"},"machineConfig":{"$ref":"#/definitions/v1OpenStackMachineConfigEntity"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"}}},"v1OverlordVsphereAccountCreate":{"properties":{"account":{"$ref":"#/definitions/v1VsphereCloudAccount"},"name":{"description":"Name for the private gateway \u0026 cloud account","type":"string"},"shareWithProjects":{"type":"boolean","x-omitempty":false}}},"v1OverlordVsphereAccountEntity":{"properties":{"account":{"$ref":"#/definitions/v1VsphereCloudAccount"},"shareWithProjects":{"type":"boolean","x-omitempty":false}}},"v1OverlordVsphereCloudConfig":{"properties":{"clusterConfig":{"$ref":"#/definitions/v1VsphereOverlordClusterConfigEntity"},"clusterProfiles":{"description":"Cluster profiles pack configuration for private gateway cluster","items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"},"clusterSettings":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"clusterSettings is the generic configuration related to a cluster like OS patch, Rbac, Namespace allocation"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"}}},"v1Overlords":{"description":"Array of Overlords","properties":{"items":{"items":{"$ref":"#/definitions/v1Overlord"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1PackConfig":{"description":"Pack configuration","properties":{"spec":{"$ref":"#/definitions/v1PackConfigSpec"}},"type":"object"},"v1PackConfigSpec":{"properties":{"associatedObject":{"type":"string"},"isValuesOverridden":{"type":"boolean","x-omitempty":false},"manifests":{"items":{"$ref":"#/definitions/v1PackManifestRef"},"type":"array"},"name":{"type":"string"},"packUid":{"type":"string"},"scope":{"type":"string"},"tag":{"type":"string"},"type":{"type":"string"},"values":{"type":"string"},"version":{"type":"string"}},"type":"object"},"v1PackDependency":{"description":"Pack template dependency","properties":{"layer":{"description":"Pack template dependency pack layer","type":"string"},"name":{"description":"Pack template dependency pack name","type":"string"},"readOnly":{"description":"If true then dependency pack values can't be overridden","type":"boolean"}},"type":"object"},"v1PackDependencyMeta":{"description":"Pack dependency metadata","properties":{"displayName":{"description":"Pack display name","type":"string"},"logoUrl":{"description":"Pack logo url","type":"string"},"name":{"description":"Pack name","type":"string"},"registryUid":{"description":"Pack registry uid","type":"string"},"uid":{"description":"Pack uid","type":"string"},"version":{"description":"Pack version","type":"string"}},"type":"object"},"v1PackEntity":{"description":"Pack object","properties":{"layer":{"description":"Pack layer","type":"string"},"name":{"description":"Pack name","type":"string"},"tag":{"description":"Pack tag","type":"string"},"type":{"$ref":"#/definitions/v1PackType"},"uid":{"description":"Pack uid","type":"string"},"values":{"description":"values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values","type":"string"}},"required":["uid","name"],"type":"object"},"v1PackFilterSpec":{"description":"Packs filter spec","properties":{"addOnSubType":{"description":"Pack add-on sub type such as monitoring, db etc","items":{"type":"string"},"type":"array","uniqueItems":true},"addOnType":{"description":"Pack add-on type such as logging, monitoring, security etc","items":{"type":"string"},"type":"array","uniqueItems":true},"displayName":{"$ref":"#/definitions/v1FilterString"},"environment":{"description":"Pack supported cloud types","items":{"type":"string"},"type":"array","uniqueItems":true},"isFips":{"description":"isFips compliant","type":"boolean"},"layer":{"description":"Pack layer","items":{"$ref":"#/definitions/v1PackLayer"},"type":"array","uniqueItems":true},"name":{"$ref":"#/definitions/v1FilterString"},"registryUid":{"description":"Pack registry uid","items":{"type":"string"},"type":"array","uniqueItems":true},"source":{"description":"The source filter describes the creation origin/source of the pack. Ex. source can be \"spectrocloud\" or \"community\"","items":{"type":"string"},"type":"array","uniqueItems":true},"state":{"description":"Pack state such as deprecated or disabled","items":{"type":"string"},"type":"array","uniqueItems":true},"type":{"description":"Pack type","items":{"$ref":"#/definitions/v1PackType"},"type":"array","uniqueItems":true}}},"v1PackImportEntity":{"description":"Pack import request payload","properties":{"layer":{"description":"Pack layer [ \"os\", \"k8s\", \"cni\", \"csi\", \"addon\" ]","type":"string"},"manifests":{"description":"Pack manifests array","items":{"$ref":"#/definitions/v1PackManifestImportEntity"},"type":"array"},"name":{"description":"Pack name","type":"string"},"registry":{"$ref":"#/definitions/v1PackRegistryImportEntity"},"tag":{"description":"Pack version tag","type":"string"},"type":{"description":"Pack type [ \"spectro\", \"helm\", \"manifest\", \"oci\" ]","type":"string"},"values":{"description":"Pack values are the customizable configurations for the pack","type":"string"},"version":{"description":"Pack version","type":"string"}},"type":"object"},"v1PackInputEntity":{"description":"Pack request payload","properties":{"pack":{"$ref":"#/definitions/v1PackManifestEntity"}}},"v1PackLayer":{"enum":["kernel","os","k8s","cni","csi","addon"],"type":"string"},"v1PackManifestEntity":{"description":"Pack request payload","properties":{"layer":{"description":"Pack layer","type":"string"},"manifests":{"description":"Pack manifests are additional content as part of the profile","items":{"$ref":"#/definitions/v1ManifestInputEntity"},"type":"array"},"name":{"description":"Pack name","type":"string"},"registryUid":{"description":"Pack registry uid","type":"string"},"tag":{"description":"Pack tag","type":"string"},"type":{"$ref":"#/definitions/v1PackType"},"uid":{"description":"Pack uid","type":"string"},"values":{"description":"Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values","type":"string"}},"required":["name"],"type":"object"},"v1PackManifestImportEntity":{"description":"Pack manifest import objct","properties":{"content":{"description":"Pack manifest content in yaml","type":"string"},"name":{"description":"Pack manifest name","type":"string"}},"type":"object"},"v1PackManifestRef":{"properties":{"digest":{"type":"string"},"isOverridden":{"type":"boolean","x-omitempty":false},"name":{"type":"string"},"parentUid":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1PackManifestUpdateEntity":{"description":"Pack input entity with values to overwrite and manifests for the intial creation","properties":{"layer":{"description":"Pack layer","type":"string"},"manifests":{"description":"Pack manifests are additional content as part of the profile","items":{"$ref":"#/definitions/v1ManifestRefUpdateEntity"},"type":"array"},"name":{"description":"Pack name","type":"string"},"registryUid":{"description":"Pack registry uid","type":"string"},"tag":{"description":"Pack tag","type":"string"},"type":{"$ref":"#/definitions/v1PackType"},"uid":{"description":"Pack uid","type":"string"},"values":{"description":"Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values","type":"string"}},"required":["name"],"type":"object"},"v1PackManifests":{"properties":{"items":{"description":"Manifests array","items":{"$ref":"#/definitions/v1Manifest"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1PackManifestsSpec":{"description":"Pack manifests spec","properties":{"addonType":{"description":"Pack add-on type such as logging, monitoring, security etc","type":"string"},"annotations":{"additionalProperties":{"type":"string"},"description":"Pack annotations is used to allow pack to add more arbitrary configurations","type":"object"},"cloudTypes":{"description":"Pack supported cloud types","items":{"type":"string"},"type":"array"},"digest":{"description":"Pack digest","type":"string"},"displayName":{"description":"Pack display name","type":"string"},"eol":{"description":"Pack end of life, date format: yyyy-MM-dd","type":"string"},"group":{"description":"Pack group","type":"string"},"layer":{"$ref":"#/definitions/v1PackLayer"},"logoUrl":{"description":"Pack logo url","type":"string"},"manifests":{"description":"Pack manifests are additional content as part of the cluster profile","items":{"$ref":"#/definitions/v1ManifestSummary"},"type":"array"},"name":{"description":"Pack name","type":"string"},"presets":{"description":"Pack presets are the set of configurations applied on user selection of presets","items":{"$ref":"#/definitions/v1PackPreset"},"type":"array"},"registryUid":{"description":"Pack registry uid","type":"string"},"schema":{"description":"Pack schema contains constraints such as data type, format, hints for the pack values","items":{"$ref":"#/definitions/v1PackSchema"},"type":"array"},"type":{"$ref":"#/definitions/v1PackType"},"values":{"description":"Pack values","type":"string"},"version":{"description":"Pack version","type":"string"}},"type":"object"},"v1PackMetadata":{"description":"Pack metadata object","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Not used for the resource info.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1PackMetadataSpec"}},"type":"object"},"v1PackMetadataList":{"description":"List of packs metadata","properties":{"items":{"description":"Packs metadata array","items":{"$ref":"#/definitions/v1PackMetadata"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1PackMetadataSpec":{"description":"Pack metadata spec","properties":{"addonSubType":{"description":"Pack add-on sub type such as monitoring, db etc","type":"string"},"addonType":{"description":"Pack add-on type such as logging, monitoring, security etc","type":"string"},"cloudTypes":{"description":"Pack supported cloud types","items":{"type":"string"},"type":"array"},"displayName":{"description":"Pack display name","type":"string"},"group":{"description":"Pack group","type":"string"},"layer":{"$ref":"#/definitions/v1PackLayer"},"name":{"description":"Pack name","type":"string"},"registries":{"description":"Pack registries array","items":{"$ref":"#/definitions/v1RegistryPackMetadata"},"type":"array"},"type":{"$ref":"#/definitions/v1PackType"}},"type":"object"},"v1PackParamsEntity":{"description":"Pack params request payload","properties":{"references":{"items":{"type":"string"},"type":"array","uniqueItems":true}}},"v1PackPreset":{"description":"PackPreset defines the preset pack values","properties":{"add":{"type":"string","x-omitempty":false},"displayName":{"type":"string","x-omitempty":false},"group":{"type":"string","x-omitempty":false},"name":{"type":"string","x-omitempty":false},"remove":{"items":{"type":"string"},"type":"array","x-omitempty":false}},"type":"object"},"v1PackReadme":{"properties":{"readme":{"description":"Readme describes the documentation of the specified pack","type":"string"}}},"v1PackRef":{"description":"PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it","properties":{"annotations":{"additionalProperties":{"type":"string"},"description":"Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml","type":"object"},"digest":{"description":"digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade","type":"string"},"inValidReason":{"type":"string"},"isInvalid":{"description":"pack is invalid when the associated tag is deleted from the registry","type":"boolean"},"layer":{"enum":["kernel","os","k8s","cni","csi","addon"],"type":"string"},"logo":{"description":"path to the pack logo","type":"string"},"manifests":{"items":{"$ref":"#/definitions/v1ObjectReference"},"type":"array"},"name":{"description":"pack name","type":"string"},"packUid":{"description":"PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.","type":"string"},"params":{"additionalProperties":{"type":"string"},"description":"params passed as env variables to be consumed at installation time","type":"object"},"presets":{"items":{"$ref":"#/definitions/v1PackPreset"},"type":"array"},"registryUid":{"description":"pack registry uid","type":"string"},"schema":{"items":{"$ref":"#/definitions/v1PackSchema"},"type":"array"},"server":{"description":"pack registry server or helm repo","type":"string"},"tag":{"description":"pack tag","type":"string"},"type":{"description":"type of the pack","enum":["spectro","helm","manifest"],"type":"string"},"values":{"description":"values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values","type":"string"},"version":{"description":"pack version","type":"string"}},"required":["layer","name"],"type":"object"},"v1PackRefSummary":{"description":"Pack ref summary","properties":{"addonType":{"type":"string"},"annotations":{"additionalProperties":{"type":"string"},"type":"object"},"displayName":{"type":"string"},"layer":{"$ref":"#/definitions/v1PackLayer"},"logoUrl":{"type":"string"},"name":{"type":"string"},"packUid":{"type":"string"},"tag":{"type":"string"},"type":{"type":"string"},"version":{"type":"string"}}},"v1PackRefSummaryResponse":{"description":"Pack summary response","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1PackRefSummarySpec"}},"type":"object"},"v1PackRefSummarySpec":{"description":"Pack summary spec","properties":{"macros":{"$ref":"#/definitions/v1PackResolvedValues"},"pack":{"$ref":"#/definitions/v1PackSummarySpec"},"registry":{"$ref":"#/definitions/v1RegistryMetadata"}}},"v1PackRegistries":{"properties":{"items":{"items":{"$ref":"#/definitions/v1PackRegistry"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1PackRegistriesSummary":{"description":"Pack Registries Summary","properties":{"items":{"items":{"$ref":"#/definitions/v1PackRegistrySummary"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1PackRegistry":{"description":"Pack registry information","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Not used for the resource info.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1PackRegistrySpec"},"status":{"$ref":"#/definitions/v1PackRegistryStatus"}},"type":"object"},"v1PackRegistryImportEntity":{"description":"Pack registry import entity","properties":{"matchingRegistries":{"items":{"$ref":"#/definitions/v1PackRegistryMetadata"},"type":"array"},"metadata":{"$ref":"#/definitions/v1PackRegistryMetadata"}},"type":"object"},"v1PackRegistryMetadata":{"description":"Pack registry metadata","properties":{"isPrivate":{"description":"If true then pack registry is private and is not accessible for the pack sync","type":"boolean","x-omitempty":false},"kind":{"description":"Pack registry kind [ \"pack\", \"helm\", \"oci\" ]","type":"string"},"name":{"description":"Pack registry name","type":"string"},"providerType":{"description":"OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]","type":"string"},"uid":{"description":"Pack registry uid","type":"string"}},"type":"object"},"v1PackRegistrySpec":{"description":"Pack registry credentials spec","properties":{"auth":{"$ref":"#/definitions/v1RegistryAuth"},"endpoint":{"type":"string"},"name":{"type":"string"},"private":{"type":"boolean","x-omitempty":false},"registryUid":{"description":"Pack registry uid","type":"string"},"scope":{"type":"string"}},"required":["endpoint","auth"],"type":"object"},"v1PackRegistrySpecSummary":{"description":"Pack Registry spec summary","properties":{"endpoint":{"type":"string"},"private":{"type":"boolean","x-omitempty":false},"scope":{"type":"string"}},"type":"object"},"v1PackRegistryStatus":{"description":"Status of the pack registry","properties":{"packSyncStatus":{"$ref":"#/definitions/v1RegistrySyncStatus"}},"type":"object"},"v1PackRegistryStatusSummary":{"description":"Pack registry status summary","properties":{"sync":{"$ref":"#/definitions/v1RegistrySyncStatus"}},"type":"object"},"v1PackRegistrySummary":{"description":"Pack Registry summary","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1PackRegistrySpecSummary"},"status":{"$ref":"#/definitions/v1PackRegistryStatusSummary"}},"type":"object"},"v1PackResolvedValues":{"description":"Pack resolved values","properties":{"resolved":{"additionalProperties":{"type":"string"},"description":"Pack resolved values map","type":"object"}}},"v1PackSchema":{"description":"PackSchema defines the schema definition, hints for the pack values","properties":{"format":{"type":"string","x-omitempty":false},"hints":{"items":{"type":"string"},"type":"array","x-omitempty":false},"listOptions":{"items":{"type":"string"},"type":"array","x-omitempty":false},"name":{"type":"string","x-omitempty":false},"readonly":{"type":"boolean","x-omitempty":false},"regex":{"type":"string","x-omitempty":false},"required":{"type":"boolean","x-omitempty":false},"type":{"type":"string","x-omitempty":false}},"type":"object"},"v1PackSortFields":{"description":"Packs sort by fields","enum":["name","type","layer","addOnType","displayName"],"type":"string","x-nullable":true},"v1PackSortSpec":{"description":"Packs sort spec","properties":{"field":{"$ref":"#/definitions/v1PackSortFields"},"order":{"$ref":"#/definitions/v1SortOrder"}}},"v1PackSummaries":{"description":"List of packs","properties":{"items":{"description":"Packs array","items":{"$ref":"#/definitions/v1PackSummary"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1PackSummary":{"description":"Pack summary object","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Not used for the resource info.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1PackSummarySpec"},"status":{"$ref":"#/definitions/v1PackSummaryStatus"}},"type":"object"},"v1PackSummarySpec":{"description":"Pack object","properties":{"addonSubType":{"description":"Pack add-on sub type such as monitoring, db etc","type":"string"},"addonType":{"description":"Pack add-on type such as logging, monitoring, security etc","type":"string"},"annotations":{"additionalProperties":{"type":"string"},"description":"Pack annotations is used to allow pack to add more arbitrary configurations","type":"object"},"cloudTypes":{"description":"Pack supported cloud types","items":{"type":"string"},"type":"array"},"digest":{"description":"Pack digest","type":"string"},"displayName":{"description":"Pack display name","type":"string"},"eol":{"description":"Pack end of life, date format: yyyy-MM-dd","type":"string"},"group":{"description":"Pack group","type":"string"},"layer":{"$ref":"#/definitions/v1PackLayer"},"logoUrl":{"description":"Pack logo url","type":"string"},"manifests":{"description":"Pack manifests are additional content as part of the cluster profile","items":{"$ref":"#/definitions/v1ObjectReference"},"type":"array"},"name":{"description":"Pack name","type":"string"},"presets":{"description":"Pack presets are the set of configurations applied on user selection of presets","items":{"$ref":"#/definitions/v1PackPreset"},"type":"array"},"registryUid":{"description":"Pack registry uid","type":"string"},"schema":{"description":"Pack schema contains constraints such as data type, format, hints for the pack values","items":{"$ref":"#/definitions/v1PackSchema"},"type":"array"},"template":{"$ref":"#/definitions/v1PackTemplate"},"type":{"$ref":"#/definitions/v1PackType"},"values":{"description":"Pack values","type":"string"},"version":{"description":"Pack version","type":"string"}},"type":"object"},"v1PackSummaryStatus":{"description":"Pack status","type":"object"},"v1PackTagEntity":{"description":"Pack object","properties":{"addonSubType":{"description":"Pack add-on sub type such as monitoring, db etc","type":"string"},"addonType":{"description":"Pack add-on type such as logging, monitoring, security etc","type":"string"},"cloudTypes":{"description":"Pack supported cloud types","items":{"type":"string"},"type":"array"},"displayName":{"description":"Pack display name","type":"string"},"layer":{"$ref":"#/definitions/v1PackLayer"},"logoUrl":{"description":"Pack logo url","type":"string"},"name":{"description":"Pack name","type":"string"},"packValues":{"description":"Pack values array","items":{"$ref":"#/definitions/v1PackUidValues"},"type":"array"},"registryUid":{"description":"Pack registry uid","type":"string"},"tags":{"description":"Pack version tags array","items":{"$ref":"#/definitions/v1PackTags"},"type":"array"}},"type":"object"},"v1PackTags":{"properties":{"group":{"description":"Pack group","type":"string"},"packUid":{"description":"Pack uid","type":"string"},"parentTags":{"description":"Pack version parent tags","items":{"type":"string"},"type":"array"},"tag":{"description":"Pack version tag","type":"string"},"version":{"description":"Pack version","type":"string"}},"type":"object"},"v1PackTemplate":{"description":"Pack template configuration","properties":{"manifest":{"description":"Pack template manifest content","type":"string"},"parameters":{"$ref":"#/definitions/v1PackTemplateParameters"},"values":{"description":"Pack template values","type":"string"}}},"v1PackTemplateParameter":{"description":"Pack template parameter","properties":{"description":{"description":"Pack template parameter description","type":"string"},"displayName":{"description":"Pack template parameter display name","type":"string"},"format":{"description":"Pack template parameter format","type":"string"},"hidden":{"description":"Pack template parameter hidden flag, if true then the parameter is hidden in the UI","type":"boolean"},"listOptions":{"description":"Pack template parameter list options as string array","items":{"type":"string"},"type":"array"},"name":{"description":"Pack template parameter name","type":"string"},"optional":{"description":"Pack template parameter optional flag, if true then the parameter value is not mandatory","type":"boolean"},"options":{"additionalProperties":{"$ref":"#/definitions/v1PackTemplateParameterOption","type":"object"},"description":"Pack template parameter options array","type":"object"},"readOnly":{"description":"Pack template parameter readonly flag, if true then the parameter value can't be overridden","type":"boolean"},"regex":{"description":"Pack template parameter regex, if set then parameter value must match with specified regex","type":"string"},"targetKey":{"description":"Pack template parameter target key which is mapped to the key defined in the pack values","type":"string"},"type":{"description":"Pack template parameter data type","type":"string"},"value":{"description":"Pack template parameter value","type":"string"}}},"v1PackTemplateParameterOption":{"description":"Pack template parameter option","properties":{"dependencies":{"description":"Pack template parameter dependencies","items":{"$ref":"#/definitions/v1PackDependency"},"type":"array"},"description":{"description":"Pack template parameter description","type":"string"},"label":{"description":"Pack template parameter label","type":"string"}},"type":"object"},"v1PackTemplateParameters":{"description":"Pack template parameters","properties":{"inputParameters":{"description":"Pack template input parameters array","items":{"$ref":"#/definitions/v1PackTemplateParameter"},"type":"array"},"outputParameters":{"description":"Pack template output parameters array","items":{"$ref":"#/definitions/v1PackTemplateParameter"},"type":"array"}}},"v1PackType":{"default":"spectro","enum":["spectro","helm","manifest","oci"],"type":"string"},"v1PackUidValues":{"properties":{"annotations":{"additionalProperties":{"type":"string"},"description":"Pack annotations is used to allow pack to add more arbitrary configurations","type":"object"},"dependencies":{"description":"Pack dependencies array","items":{"$ref":"#/definitions/v1PackDependencyMeta"},"type":"array"},"packUid":{"description":"Pack uid","type":"string"},"presets":{"description":"Pack presets are the set of configurations applied on user selection of presets","items":{"$ref":"#/definitions/v1PackPreset"},"type":"array"},"readme":{"description":"Readme describes the documentation of the specified pack","type":"string"},"schema":{"description":"Pack schema contains constraints such as data type, format, hints for the pack values","items":{"$ref":"#/definitions/v1PackSchema"},"type":"array"},"template":{"$ref":"#/definitions/v1PackTemplate"},"values":{"description":"Pack values represents the values.yaml used as input parameters","type":"string"}},"type":"object"},"v1PackUpdateEntity":{"description":"Pack update request payload","properties":{"pack":{"$ref":"#/definitions/v1PackEntity"}}},"v1PackValuesEntity":{"description":"Pack values entity to refer the existing pack for the values override","properties":{"manifests":{"description":"Pack manifests are additional content as part of the profile","items":{"$ref":"#/definitions/v1ManifestRefUpdateEntity"},"type":"array"},"name":{"description":"Pack name","type":"string"},"tag":{"description":"Pack version tag","type":"string"},"type":{"$ref":"#/definitions/v1PackType"},"values":{"description":"Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values","type":"string"}},"required":["name"],"type":"object"},"v1PacksFilterSpec":{"description":"Packs filter spec","properties":{"filter":{"$ref":"#/definitions/v1PackFilterSpec"},"sort":{"items":{"$ref":"#/definitions/v1PackSortSpec"},"type":"array","uniqueItems":true}}},"v1PairingCode":{"description":"Pairing code response","properties":{"pairingCode":{"type":"string"}},"type":"object"},"v1Partition":{"properties":{"fileSystemType":{"type":"string"},"freeSpace":{"format":"int32","type":"integer"},"mountPoint":{"type":"string"},"totalSpace":{"format":"int32","type":"integer"},"usedSpace":{"format":"int32","type":"integer"}},"type":"object"},"v1PasswordsBlockListEntity":{"description":"List of block listed passwords","properties":{"passwords":{"items":{"type":"string"},"type":"array"}},"type":"object"},"v1PaymentIntent":{"description":"Payment setup object","properties":{"clientSecret":{"description":"Payment client secret","type":"string"},"paymentIntentId":{"description":"Payment intent id","type":"string"},"status":{"description":"Status of payment intent","type":"string"}}},"v1PaymentMethod":{"description":"Payment method object","properties":{"card":{"$ref":"#/definitions/v1Card"},"customerId":{"description":"Customer uid","type":"string"},"firstName":{"description":"First name of the user","type":"string"},"lastName":{"description":"Last name of the user","type":"string"},"paymentMethodId":{"description":"Payment method uid","type":"string"}}},"v1PaymentMethods":{"description":"Payment Method list","properties":{"defaultPaymentMethod":{"description":"Default payment method","type":"string"},"paymentMethods":{"description":"List of payment method","items":{"$ref":"#/definitions/v1PaymentMethod"},"type":"array","uniqueItems":true}}},"v1PaymentPlan":{"description":"Stripe price detail object","properties":{"billingScheme":{"description":"Billing scheme","type":"string"},"currency":{"description":"Unit of currency","type":"string"},"id":{"description":"Stripe payment plan id","type":"string"},"name":{"description":"Name of the stripe plan","type":"string"},"productId":{"description":"Product identifier","type":"string"},"type":{"description":"Type of payment plan","type":"string"},"unitAmount":{"description":"Unit amount for the product","format":"int64","type":"number"}}},"v1PaymentPlans":{"description":"Payment plan object model","properties":{"stripePlanDetails":{"description":"List of Stripe plan details","items":{"$ref":"#/definitions/v1PaymentPlan"},"type":"array","uniqueItems":true}},"required":["stripePlanDetails"],"type":"object"},"v1PaymentSecrets":{"description":"payment secrets","properties":{"publishableKey":{"type":"string"},"secretKey":{"type":"string"}}},"v1PaymentSubscription":{"description":"Payment subscription object","properties":{"customerId":{"description":"Customer uid","type":"string"},"paymentIntent":{"$ref":"#/definitions/v1PaymentIntent","description":"Payment intent"},"paymentMethodIds":{"description":"List of payment method uids","items":{"type":"string"},"type":"array","uniqueItems":true},"planType":{"description":"Plan type","type":"string"},"priceId":{"description":"Price uid","type":"string"},"subscriptionId":{"description":"Subscription uid","type":"string"},"subscriptionState":{"description":"Plan subscription state","type":"string"}}},"v1PcgSelfHostedParams":{"properties":{"cloudType":{"type":"string"},"name":{"type":"string"}}},"v1PcgServiceKubectlCommands":{"description":"Array of kubectl commands","properties":{"kubectlCommands":{"items":{"type":"string"},"type":"array","uniqueItems":true},"overlordUid":{"type":"string"}},"required":["kubectlCommands"],"type":"object"},"v1PcgsSummary":{"properties":{"items":{"items":{"$ref":"#/definitions/v1Overlord"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1Permission":{"description":"Permission information","properties":{"name":{"type":"string"},"permissions":{"items":{"type":"string"},"type":"array"},"scope":{"$ref":"#/definitions/v1Scope"}},"type":"object"},"v1Permissions":{"description":"Array of permissions","items":{"$ref":"#/definitions/v1Permission"},"type":"array"},"v1Plan":{"description":"Plan","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1PlanSpec"},"status":{"$ref":"#/definitions/v1PlanStatus"}}},"v1PlanAddFreeCreditUpdate":{"description":"Plan add free credit update entity","properties":{"credit":{"$ref":"#/definitions/v1PlanCreditEntity"}}},"v1PlanAddSlaCreditUpdate":{"description":"Plan add sla credit update entity","properties":{"credit":{"$ref":"#/definitions/v1PlanCreditEntity"}}},"v1PlanChangeUpdate":{"description":"Plan change update entity","properties":{"expiry":{"$ref":"#/definitions/v1Time","description":"plan expiry time"},"isPaymentGateway":{"type":"boolean"},"planLimit":{"$ref":"#/definitions/v1PlanLimit"},"start":{"$ref":"#/definitions/v1Time","description":"plan start time"},"tierPrice":{"$ref":"#/definitions/v1TierPrice"},"type":{"enum":["Trial","MonthlyOnDemand","AnnualSubscription"],"type":"string"}},"required":["type","start","expiry"]},"v1PlanCost":{"description":"Plan Cost","properties":{"discount":{"format":"float","type":"number","x-omitempty":false},"price":{"format":"float","type":"number","x-omitempty":false}}},"v1PlanCpuCoreHoursUsages":{"properties":{"hourlyUsages":{"items":{"$ref":"#/definitions/v1ResourceUsage"},"type":"array","uniqueItems":true}},"type":"object"},"v1PlanCredit":{"description":"Plan Credit","properties":{"cpuCoreHours":{"format":"int64","type":"number","x-omitempty":false},"creditUid":{"type":"string"},"expiry":{"$ref":"#/definitions/v1Time","description":"credit expiry time"},"name":{"type":"string"},"start":{"$ref":"#/definitions/v1Time","description":"credit start time"},"type":{"enum":["Pure","Alloy"],"type":"string"}},"required":["type"]},"v1PlanCreditEntity":{"description":"Plan Credit entity for create/update request","properties":{"cpuCoreHours":{"format":"int64","type":"number","x-omitempty":false},"expiry":{"$ref":"#/definitions/v1Time"},"name":{"type":"string"},"start":{"$ref":"#/definitions/v1Time"},"type":{"enum":["Pure","Alloy"],"type":"string"}},"required":["type"]},"v1PlanCreditUpdate":{"description":"Plan credit update entity","properties":{"credit":{"$ref":"#/definitions/v1PlanCreditEntity"}}},"v1PlanExpiry":{"description":"Plan expiry","properties":{"expiry":{"$ref":"#/definitions/v1Time","description":"plan expiry time"}},"required":["expiry"]},"v1PlanLimit":{"description":"Monthly Plan Limit","properties":{"alloy":{"$ref":"#/definitions/v1PlanLimitSpec"},"isOnDemand":{"description":"is onDemand plan and has no limit","type":"boolean","x-omitempty":false},"isUnlimited":{"description":"is unlimited cpu core hours","type":"boolean","x-omitempty":false},"pure":{"$ref":"#/definitions/v1PlanLimitSpec"}}},"v1PlanLimitSpec":{"description":"Monthly Plan Limit spec","properties":{"cpuCoreHours":{"description":"cpu cores hours","format":"int64","type":"integer","x-omitempty":false},"overageLimitPercentage":{"default":25,"description":"overage limit in percentage","format":"int8","type":"integer","x-omitempty":false},"warnLimitPercentage":{"default":90,"description":"warning limit in percentage","format":"int8","type":"integer","x-omitempty":false}}},"v1PlanLimitUpdate":{"description":"Plan limit change update entity","properties":{"planLimit":{"$ref":"#/definitions/v1PlanLimit"}},"required":["planLimit"]},"v1PlanMonthlyUsage":{"description":"Plan monthly usage entity","properties":{"dailyUsages":{"items":{"$ref":"#/definitions/v1ResourceUsage"},"type":"array","uniqueItems":true},"month":{"$ref":"#/definitions/v1Time","description":"usage month"},"planLimit":{"$ref":"#/definitions/v1PlanLimit"},"planType":{"enum":["Trial","MonthlyOnDemand","AnnualSubscription"],"type":"string"},"planUid":{"type":"string"},"totalMonthlyUsage":{"$ref":"#/definitions/v1TotalResourceUsage"}}},"v1PlanMonthlyUsages":{"properties":{"items":{"items":{"$ref":"#/definitions/v1PlanMonthlyUsage"},"type":"array"}},"type":"object"},"v1PlanRenewal":{"description":"Plan Renewal","properties":{"expiry":{"$ref":"#/definitions/v1Time","description":"credit expiry time"},"planLimit":{"$ref":"#/definitions/v1PlanLimit"},"start":{"$ref":"#/definitions/v1Time","description":"credit start time"},"type":{"enum":["Trial","MonthlyOnDemand","AnnualSubscription"],"type":"string"}},"required":["type","start","expiry"]},"v1PlanRenewalUpdate":{"description":"Plan add renawal update entity","properties":{"renewal":{"$ref":"#/definitions/v1PlanRenewal"}}},"v1PlanSpec":{"description":"Plan specifications","properties":{"cost":{"$ref":"#/definitions/v1PlanCost"},"developerCredits":{"$ref":"#/definitions/v1DeveloperCredit"},"expiry":{"$ref":"#/definitions/v1Time","description":"plan expiry time"},"freeCredits":{"items":{"$ref":"#/definitions/v1PlanCredit"},"type":"array"},"planLimit":{"$ref":"#/definitions/v1PlanLimit"},"renewal":{"$ref":"#/definitions/v1PlanRenewal"},"slaCredits":{"items":{"$ref":"#/definitions/v1PlanCredit"},"type":"array"},"start":{"$ref":"#/definitions/v1Time","description":"plan start time"},"tierPricing":{"$ref":"#/definitions/v1TierPrice"},"type":{"enum":["Trial","MonthlyOnDemand","AnnualSubscription"],"type":"string"}},"required":["type","start","expiry"]},"v1PlanStatus":{"properties":{"changeLogs":{"items":{"type":"string"},"type":"array"}},"type":"object"},"v1Plans":{"description":"Array of Plans","properties":{"items":{"items":{"$ref":"#/definitions/v1Plan"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1PlansUsageComputeSpec":{"description":"Plans usage compute spec","properties":{"startTime":{"$ref":"#/definitions/v1Time"},"tenantUids":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1PodAntiAffinity":{"description":"Pod anti affinity is a group of inter pod anti affinity scheduling rules.","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"description":"The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.","items":{"$ref":"#/definitions/v1VmWeightedPodAffinityTerm"},"type":"array"},"requiredDuringSchedulingIgnoredDuringExecution":{"description":"If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.","items":{"$ref":"#/definitions/v1VmPodAffinityTerm"},"type":"array"}},"type":"object"},"v1Pool":{"description":"Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool","properties":{"end":{"description":"End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.","type":"string"},"gateway":{"description":"Gateway is the gateway ip address","type":"string"},"nameserver":{"$ref":"#/definitions/v1Nameserver","description":"Nameserver provide information for dns resolvation"},"prefix":{"description":"Prefix is the mask of the network as integer (max 128)","format":"int32","type":"integer"},"start":{"description":"Start is the first ip address that can be rendered","type":"string"},"subnet":{"description":"Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)","type":"string"}},"type":"object"},"v1PriceRange":{"description":"tier price range","properties":{"discount":{"format":"int64","type":"number"},"startFrom":{"format":"float64","type":"number"},"unitAmount":{"format":"float64","type":"number"},"upTo":{"format":"float64","type":"number"},"upToInfinity":{"type":"boolean"}}},"v1PrivateCloudRateConfig":{"description":"Private cloud rate config","properties":{"cpuUnitPricePerHour":{"format":"float64","type":"number"},"gpuUnitPricePerHour":{"format":"float64","type":"number"},"memoryUnitPriceGiBPerHour":{"format":"float64","type":"number"},"storageUnitPriceGiBPerHour":{"format":"float64","type":"number"}}},"v1ProductUsage":{"description":"Product usage","properties":{"alloyUsage":{"$ref":"#/definitions/v1SystemProductUsage"},"pureUsage":{"$ref":"#/definitions/v1SystemProductUsage"}}},"v1ProfileMetaEntity":{"description":"Cluster profile metadata request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"$ref":"#/definitions/v1ClusterProfileSpecEntity"}},"required":["metadata"],"type":"object"},"v1ProfileResolvedValues":{"description":"Cluster profile resolved pack values","properties":{"resolved":{"additionalProperties":{"type":"string"},"description":"Cluster profile pack resolved values","type":"object"},"uid":{"description":"Cluster profile uid","type":"string"}}},"v1ProfileStatus":{"properties":{"hasUserMacros":{"description":"If it is true then profile pack values has a reference to user defined macros","type":"boolean","x-omitempty":false}},"type":"object"},"v1ProfileTemplateSummary":{"description":"Edge host clusterprofile template summary","properties":{"cloudType":{"type":"string"},"name":{"type":"string"},"packs":{"items":{"$ref":"#/definitions/v1PackRefSummary"},"type":"array"},"type":{"type":"string"},"uid":{"type":"string"},"version":{"type":"string"}},"type":"object"},"v1ProfileType":{"default":"cluster","enum":["cluster","infra","add-on","system"],"type":"string"},"v1Project":{"description":"Project information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ProjectSpec"},"status":{"$ref":"#/definitions/v1ProjectStatus"}},"type":"object"},"v1ProjectActiveAppDeployment":{"description":"Active app deployment","properties":{"appRef":{"$ref":"#/definitions/v1ObjectEntity"},"state":{"type":"string"}},"type":"object"},"v1ProjectActiveAppDeployments":{"description":"Active app deployment","properties":{"apps":{"items":{"$ref":"#/definitions/v1ProjectActiveAppDeployment"},"type":"array"},"count":{"format":"int32","type":"integer"}},"type":"object"},"v1ProjectActiveCluster":{"description":"Active clusters","properties":{"clusterRef":{"$ref":"#/definitions/v1ObjectEntity"},"state":{"type":"string"}},"type":"object"},"v1ProjectActiveClusters":{"description":"Active clusters","properties":{"clusters":{"items":{"$ref":"#/definitions/v1ProjectActiveCluster"},"type":"array"},"count":{"format":"int32","type":"integer"}},"type":"object"},"v1ProjectActiveResources":{"description":"Active project resources","properties":{"appDeployments":{"$ref":"#/definitions/v1ProjectActiveAppDeployments"},"clusters":{"$ref":"#/definitions/v1ProjectActiveClusters"},"virtualClusters":{"$ref":"#/definitions/v1ProjectActiveClusters"}},"type":"object"},"v1ProjectAlertComponent":{"description":"Project alert component","properties":{"description":{"type":"string"},"name":{"type":"string"},"supportedChannels":{"items":{"type":"string"},"type":"array"}},"type":"object"},"v1ProjectAlertComponents":{"description":"Supported project alerts component","properties":{"components":{"items":{"$ref":"#/definitions/v1ProjectAlertComponent"},"type":"array"}},"type":"object"},"v1ProjectCleanUpStatus":{"description":"Project cleanup status","properties":{"cleanedResources":{"items":{"type":"string"},"type":"array"},"msg":{"type":"string"},"state":{"type":"string"}},"type":"object"},"v1ProjectCleanup":{"description":"Project delete request payload","properties":{"deletingClusterDurationThresholdInMin":{"format":"int32","type":"integer"},"provisioningClusterDurationThresholdInMin":{"format":"int32","type":"integer"}}},"v1ProjectClusterSettings":{"properties":{"nodesAutoRemediationSetting":{"$ref":"#/definitions/v1NodesAutoRemediationSettings"},"tenantClusterSettings":{"$ref":"#/definitions/v1TenantClusterSettings"}}},"v1ProjectEntity":{"description":"Project information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ProjectEntitySpec"}},"type":"object"},"v1ProjectEntitySpec":{"description":"Project specifications","properties":{"logoUid":{"type":"string"},"teams":{"items":{"$ref":"#/definitions/v1TeamRoleMap"},"type":"array","uniqueItems":true},"users":{"items":{"$ref":"#/definitions/v1UserRoleMap"},"type":"array","uniqueItems":true}}},"v1ProjectFilterSortFields":{"enum":["name","creationTimestamp","lastModifiedTimestamp"],"type":"string","x-nullable":true},"v1ProjectFilterSortSpec":{"properties":{"field":{"$ref":"#/definitions/v1ProjectFilterSortFields"},"order":{"$ref":"#/definitions/v1SortOrder"}}},"v1ProjectFilterSpec":{"description":"Project filter spec","properties":{"name":{"$ref":"#/definitions/v1FilterString"}}},"v1ProjectMeta":{"properties":{"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1ProjectMetadata":{"description":"Project metadata","properties":{"metadata":{"$ref":"#/definitions/v1ObjectEntity"}}},"v1ProjectPatch":{"items":{"$ref":"#/definitions/v1HttpPatch"},"type":"array"},"v1ProjectResourceUsage":{"description":"project resource usage","properties":{"alloyCpuCoreHours":{"type":"number","x-omitempty":false},"project":{"$ref":"#/definitions/v1ProjectMeta"},"pureCpuCoreHours":{"type":"number","x-omitempty":false}}},"v1ProjectRolesEntity":{"properties":{"projects":{"items":{"$ref":"#/definitions/v1UidRoleSummary"},"type":"array"}},"type":"object"},"v1ProjectRolesPatch":{"properties":{"projects":{"items":{"properties":{"projectUid":{"type":"string"},"roles":{"items":{"type":"string"},"type":"array"}},"type":"object"},"type":"array"}},"type":"object"},"v1ProjectSpec":{"description":"Project specifications","properties":{"alerts":{"items":{"$ref":"#/definitions/v1Alert"},"type":"array","uniqueItems":true},"logoUrl":{"type":"string"},"teams":{"items":{"$ref":"#/definitions/v1TeamRoleMap"},"type":"array","uniqueItems":true},"users":{"items":{"$ref":"#/definitions/v1UserRoleMap"},"type":"array","uniqueItems":true}}},"v1ProjectSpecSummary":{"properties":{"logoUrl":{"type":"string"},"teams":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"},"users":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"}},"type":"object"},"v1ProjectStatus":{"description":"Project status","properties":{"cleanUpStatus":{"$ref":"#/definitions/v1ProjectCleanUpStatus"},"isDisabled":{"type":"boolean"}}},"v1ProjectStatusSummary":{"description":"Project status summary","properties":{"clustersHealth":{"$ref":"#/definitions/v1SpectroClustersHealth"},"status":{"$ref":"#/definitions/v1ProjectStatus"},"usage":{"$ref":"#/definitions/v1ProjectUsageSummary"}},"type":"object"},"v1ProjectSummary":{"description":"Project summary","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"specSummary":{"$ref":"#/definitions/v1ProjectSpecSummary","description":"Project spec summary"},"status":{"$ref":"#/definitions/v1ProjectStatusSummary","description":"Project status summary"}},"type":"object"},"v1ProjectTeamsEntity":{"properties":{"teams":{"items":{"$ref":"#/definitions/v1TeamRoleMap"},"type":"array","uniqueItems":true}}},"v1ProjectUsage":{"description":"Project usage object","properties":{"alloy":{"$ref":"#/definitions/v1ProjectUsageData"},"pure":{"$ref":"#/definitions/v1ProjectUsageData"}}},"v1ProjectUsageData":{"description":"Project usage data object","properties":{"amount":{"description":"Billing amount for the project","format":"float64","type":"number"},"tierPrice":{"description":"Tier price based on the usage","format":"float64","type":"number"},"usedCredits":{"description":"Project used credits","format":"float64","type":"number"}}},"v1ProjectUsageSummary":{"description":"Project usage summary","properties":{"alloyCpuCores":{"type":"number","x-omitempty":false},"clusters":{"items":{"$ref":"#/definitions/v1ClusterUsageSummary"},"type":"array"},"pureCpuCores":{"type":"number","x-omitempty":false}},"type":"object"},"v1ProjectUsersEntity":{"properties":{"users":{"items":{"$ref":"#/definitions/v1UserRoleMap"},"type":"array","uniqueItems":true}}},"v1Projects":{"properties":{"items":{"items":{"$ref":"#/definitions/v1Project"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1ProjectsFilterSpec":{"description":"Project filter summary spec","properties":{"filter":{"$ref":"#/definitions/v1ProjectFilterSpec"},"sort":{"items":{"$ref":"#/definitions/v1ProjectFilterSortSpec"},"type":"array","uniqueItems":true}}},"v1ProjectsMetadata":{"properties":{"items":{"items":{"$ref":"#/definitions/v1ProjectMetadata"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1ProjectsSummary":{"properties":{"items":{"items":{"$ref":"#/definitions/v1ProjectSummary"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1ProjectsWorkspaces":{"description":"List projects and its workspaces","properties":{"name":{"type":"string"},"uid":{"type":"string"},"workspaces":{"items":{"$ref":"#/definitions/v1WorkspacesRoles"},"type":"array","uniqueItems":true}}},"v1PublicCloudRateConfig":{"description":"Public cloud rate config","properties":{"computeOptimized":{"$ref":"#/definitions/v1CloudInstanceRateConfig"},"memoryOptimized":{"$ref":"#/definitions/v1CloudInstanceRateConfig"}}},"v1RateConfig":{"description":"Rate config","properties":{"aws":{"$ref":"#/definitions/v1PublicCloudRateConfig"},"azure":{"$ref":"#/definitions/v1PublicCloudRateConfig"},"coxedge":{"$ref":"#/definitions/v1PublicCloudRateConfig"},"custom":{"items":{"$ref":"#/definitions/v1CustomCloudRateConfig"},"type":"array","uniqueItems":true},"edge":{"$ref":"#/definitions/v1PrivateCloudRateConfig"},"edgeNative":{"$ref":"#/definitions/v1PrivateCloudRateConfig"},"gcp":{"$ref":"#/definitions/v1PublicCloudRateConfig"},"generic":{"$ref":"#/definitions/v1PrivateCloudRateConfig"},"libvirt":{"$ref":"#/definitions/v1PrivateCloudRateConfig"},"maas":{"$ref":"#/definitions/v1PrivateCloudRateConfig"},"openstack":{"$ref":"#/definitions/v1PrivateCloudRateConfig"},"vsphere":{"$ref":"#/definitions/v1PrivateCloudRateConfig"}}},"v1RegistriesMetadata":{"description":"Pack Registries Metadata","properties":{"items":{"items":{"$ref":"#/definitions/v1RegistryMetadata"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1RegistryAuth":{"description":"Auth credentials of the registry","properties":{"password":{"format":"password","type":"string"},"tls":{"$ref":"#/definitions/v1TlsConfiguration"},"token":{"format":"password","type":"string"},"type":{"enum":["noAuth","basic","token"],"type":"string"},"username":{"type":"string"}},"type":"object"},"v1RegistryConf":{"description":"Registry configuration","properties":{"auth":{"$ref":"#/definitions/v1RegistryAuth"},"endpoint":{"type":"string"}},"type":"object"},"v1RegistryConfigEntity":{"description":"Registry configuration entity","properties":{"config":{"$ref":"#/definitions/v1RegistryConfiguration"}},"type":"object"},"v1RegistryConfiguration":{"description":"Registry configuration","properties":{"auth":{"$ref":"#/definitions/v1RegistryAuth"},"endpoint":{"type":"string"},"name":{"type":"string"}},"type":"object"},"v1RegistryMetadata":{"description":"Registry meta","properties":{"isDefault":{"type":"boolean","x-omitempty":false},"isPrivate":{"type":"boolean","x-omitempty":false},"kind":{"type":"string"},"name":{"type":"string"},"scope":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1RegistryPackMetadata":{"description":"Registry metadata information","properties":{"annotations":{"additionalProperties":{"type":"string"},"description":"Pack annotations is used to allow pack to add more arbitrary configurations","type":"object"},"latestPackUid":{"description":"Latest pack uid","type":"string"},"latestVersion":{"description":"Pack latest version","type":"string"},"logoUrl":{"description":"Pack logo url","type":"string"},"name":{"description":"Pack registry name","type":"string"},"scope":{"description":"Pack registry scope","type":"string"},"uid":{"description":"Pack registry uid","type":"string"}}},"v1RegistrySyncStatus":{"description":"Status of the registry sync","properties":{"lastRunTime":{"$ref":"#/definitions/v1Time"},"lastSyncedTime":{"$ref":"#/definitions/v1Time"},"message":{"type":"string"},"status":{"type":"string"}},"type":"object"},"v1RelatedObject":{"description":"Object for which the resource is related","properties":{"kind":{"enum":["spectrocluster","machine","cloudconfig","clusterprofile","pack","appprofile","appdeployment","edgehost"],"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1ReleaseDescription":{"description":"spectro application management release description","properties":{"details":{"type":"string"},"title":{"type":"string"},"version":{"type":"string"}}},"v1ReleaseVersion":{"description":"spectro application management release version information","properties":{"date":{"$ref":"#/definitions/v1Time"},"description":{"type":"string"},"releaseNotes":{"items":{"$ref":"#/definitions/v1ReleaseDescription"},"type":"array"},"version":{"type":"string"}}},"v1ResourceCloudCostSummary":{"description":"Resource cloud cost summary information","properties":{"data":{"items":{"$ref":"#/definitions/v1CloudCostDataPoint"},"type":"array","uniqueItems":true},"entity":{"$ref":"#/definitions/v1ResourceReference"},"total":{"$ref":"#/definitions/v1ResourceTotalCloudCost"}},"type":"object"},"v1ResourceConsumption":{"description":"Resource consumption information","properties":{"associatedResources":{"items":{"$ref":"#/definitions/v1ResourceReference"},"type":"array"},"data":{"items":{"$ref":"#/definitions/v1ResourceConsumptionDataPoint"},"type":"array","uniqueItems":true},"entity":{"$ref":"#/definitions/v1ResourceReference"},"total":{"$ref":"#/definitions/v1ResourceTotalConsumptionData"}},"type":"object"},"v1ResourceConsumptionData":{"description":"Resource cosumption data","properties":{"cpu":{"format":"float64","type":"number","x-omitempty":false},"memory":{"format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1ResourceConsumptionDataPoint":{"description":"Resource cosumption data point","properties":{"allotted":{"$ref":"#/definitions/v1ResourceConsumptionData"},"timestamp":{"format":"int64","type":"number"},"usage":{"$ref":"#/definitions/v1ResourceConsumptionData"}},"type":"object"},"v1ResourceConsumptionFilter":{"description":"Resource consumption filter","properties":{"clouds":{"items":{"type":"string"},"type":"array","uniqueItems":true},"clusters":{"items":{"type":"string"},"type":"array","uniqueItems":true},"endTime":{"$ref":"#/definitions/v1Time"},"includeMasterMachines":{"type":"boolean"},"namespaces":{"items":{"type":"string"},"type":"array","uniqueItems":true},"projects":{"items":{"type":"string"},"type":"array","uniqueItems":true},"startTime":{"$ref":"#/definitions/v1Time"},"workspaces":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1ResourceConsumptionOptions":{"description":"Resource consumption options","properties":{"enableSummaryView":{"default":true,"type":"boolean"},"groupBy":{"default":"namespace","enum":["tenant","project","workspace","cluster","namespace","cloud"],"type":"string"},"period":{"default":60,"format":"int32","type":"integer"}},"type":"object"},"v1ResourceConsumptionSpec":{"description":"Resource consumption spec","properties":{"filter":{"$ref":"#/definitions/v1ResourceConsumptionFilter"},"options":{"$ref":"#/definitions/v1ResourceConsumptionOptions"}},"type":"object"},"v1ResourceCost":{"description":"Resource Cost information","properties":{"cloud":{"$ref":"#/definitions/v1CloudCost"},"total":{"format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1ResourceCostDataPoint":{"description":"Resource cost data point","properties":{"cpu":{"format":"float64","type":"number","x-omitempty":false},"memory":{"format":"float64","type":"number","x-omitempty":false},"storage":{"format":"float64","type":"number","x-omitempty":false},"timestamp":{"format":"int64","type":"number"},"total":{"format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1ResourceCostSummary":{"description":"Resource cost summary information","properties":{"associatedResources":{"items":{"$ref":"#/definitions/v1ResourceReference"},"type":"array"},"data":{"items":{"$ref":"#/definitions/v1ResourceCostDataPoint"},"type":"array","uniqueItems":true},"entity":{"$ref":"#/definitions/v1ResourceReference"},"total":{"$ref":"#/definitions/v1ResourceTotalCost"}},"type":"object"},"v1ResourceCostSummaryFilter":{"description":"Resource cost summary filter","properties":{"clouds":{"items":{"type":"string"},"type":"array","uniqueItems":true},"clusters":{"items":{"type":"string"},"type":"array","uniqueItems":true},"endTime":{"$ref":"#/definitions/v1Time"},"includeMasterMachines":{"type":"boolean"},"namespaces":{"items":{"type":"string"},"type":"array","uniqueItems":true},"projects":{"items":{"type":"string"},"type":"array","uniqueItems":true},"startTime":{"$ref":"#/definitions/v1Time"},"workspaces":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1ResourceCostSummaryOptions":{"description":"Resource cost summary options","properties":{"enableSummaryView":{"default":true,"type":"boolean"},"groupBy":{"default":"cluster","enum":["tenant","project","workspace","cluster","namespace","deployment","cloud"],"type":"string"},"period":{"default":60,"format":"int32","type":"integer"}},"type":"object"},"v1ResourceCostSummarySpec":{"description":"Resource cost summary spec","properties":{"filter":{"$ref":"#/definitions/v1ResourceCostSummaryFilter"},"options":{"$ref":"#/definitions/v1ResourceCostSummaryOptions"}},"type":"object"},"v1ResourceEntity":{"properties":{"checks":{"items":{"type":"string"},"type":"array"},"data":{"additionalProperties":{"type":"object"},"type":"object"}},"type":"object"},"v1ResourceGroup":{"description":"Azure resource Group is a container that holds related resources for an Azure solution","properties":{"id":{"description":"The ID of the resource group","type":"string"},"location":{"description":"The location of the resource group. It cannot be changed after the resource group has been created","type":"string"},"name":{"description":"The type of the resource group","type":"string"}},"type":"object"},"v1ResourceLimitType":{"enum":["user","project","apiKey","team","role","cloudaccount","clusterprofile","workspace","registry","privategateway","location","certificate","macro","sshkey","alert","spectrocluster","edgehost","appprofile","appdeployment","edgetoken","clustergroup","filter","systemadmin"],"type":"string"},"v1ResourceReference":{"properties":{"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["uid"],"type":"object"},"v1ResourceRoles":{"properties":{"resourceRoles":{"items":{"$ref":"#/definitions/v1ResourceRolesEntity"},"type":"array"}},"type":"object"},"v1ResourceRolesEntity":{"properties":{"filterRefs":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"},"projectUids":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"},"roles":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"},"uid":{"type":"string"}},"type":"object"},"v1ResourceRolesUpdateEntity":{"properties":{"filterRefs":{"items":{"type":"string"},"type":"array"},"projectUids":{"items":{"type":"string"},"type":"array"},"roles":{"items":{"type":"string"},"type":"array"}},"type":"object"},"v1ResourceTotalCloudCost":{"description":"Resource total cloud cost information","properties":{"compute":{"format":"float64","type":"number","x-omitempty":false},"storage":{"format":"float64","type":"number","x-omitempty":false},"total":{"format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1ResourceTotalConsumptionData":{"description":"Resource total cosumption data","properties":{"allotted":{"$ref":"#/definitions/v1ResourceConsumptionData"},"usage":{"$ref":"#/definitions/v1ResourceConsumptionData"}},"type":"object"},"v1ResourceTotalCost":{"description":"Resource total cost information","properties":{"cpu":{"format":"float64","type":"number","x-omitempty":false},"memory":{"format":"float64","type":"number","x-omitempty":false},"storage":{"format":"float64","type":"number","x-omitempty":false},"total":{"format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1ResourceUsage":{"description":"ResourceUsage","properties":{"projects":{"items":{"$ref":"#/definitions/v1ProjectResourceUsage"},"type":"array","uniqueItems":true},"timestamp":{"$ref":"#/definitions/v1Time","description":"resource usage time"},"totalAlloyCpuCoreHours":{"type":"number","x-omitempty":false},"totalPureCpuCoreHours":{"type":"number","x-omitempty":false}}},"v1ResourceUsageDataPoint":{"description":"Resource usage data point","properties":{"baremetal":{"$ref":"#/definitions/v1ResourceUsageMeteringDataPoint"},"cpu":{"format":"float64","type":"number","x-omitempty":false},"edgehost":{"$ref":"#/definitions/v1ResourceUsageMeteringDataPoint"},"memory":{"format":"float64","type":"number","x-omitempty":false},"timestamp":{"format":"int64","type":"number"}},"type":"object"},"v1ResourceUsageMeteringDataPoint":{"description":"min and max count for machines \u0026 edgehost for the given period","properties":{"activeEdgehosts":{"format":"int64","type":"number"},"activeMachines":{"format":"int64","type":"number"},"maxEdgehosts":{"format":"int64","type":"number"},"maxMachines":{"format":"int64","type":"number"}},"type":"object"},"v1ResourceUsageSummary":{"description":"Resource usage summary information","properties":{"associatedResources":{"items":{"$ref":"#/definitions/v1ResourceReference"},"type":"array"},"data":{"items":{"$ref":"#/definitions/v1ResourceUsageDataPoint"},"type":"array","uniqueItems":true},"entity":{"$ref":"#/definitions/v1ResourceReference"}},"type":"object"},"v1ResourceUsageSummaryFilter":{"description":"Resource usage summary filter","properties":{"clouds":{"items":{"type":"string"},"type":"array","uniqueItems":true},"clusters":{"items":{"type":"string"},"type":"array","uniqueItems":true},"endTime":{"$ref":"#/definitions/v1Time"},"includeMasterMachines":{"type":"boolean"},"namespaces":{"items":{"type":"string"},"type":"array","uniqueItems":true},"pods":{"items":{"type":"string"},"type":"array","uniqueItems":true},"projects":{"items":{"type":"string"},"type":"array","uniqueItems":true},"startTime":{"$ref":"#/definitions/v1Time"},"workload":{"$ref":"#/definitions/v1ResourceWorkloadFilter"},"workspaces":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1ResourceUsageSummaryOptions":{"description":"Resource usage summary options","properties":{"enableSummaryView":{"default":true,"type":"boolean"},"groupBy":{"default":"cluster","enum":["tenant","project","workspace","cluster","namespace","deployment","statefulset","daemonset","pod","cloud"],"type":"string"},"includeMeteringInfo":{"default":false,"type":"boolean"},"period":{"default":60,"format":"int32","type":"integer"}},"type":"object"},"v1ResourceUsageSummarySpec":{"description":"Resource usage summary spec","properties":{"filter":{"$ref":"#/definitions/v1ResourceUsageSummaryFilter"},"options":{"$ref":"#/definitions/v1ResourceUsageSummaryOptions"}},"type":"object"},"v1ResourceWorkloadFilter":{"description":"Workload resource filter","properties":{"names":{"items":{"type":"string"},"type":"array","uniqueItems":true},"type":{"default":"all","enum":["deployment","statefulset","daemonset","all"],"type":"string"}},"type":"object"},"v1Resources":{"properties":{"resources":{"additionalProperties":{"$ref":"#/definitions/v1ResourceEntity","type":"object"},"type":"object"}},"type":"object"},"v1ResourcesCloudCostSummary":{"description":"Resources cloud cost summary information","properties":{"resources":{"items":{"$ref":"#/definitions/v1ResourceCloudCostSummary"},"type":"array"},"total":{"$ref":"#/definitions/v1ResourceTotalCloudCost"}},"type":"object"},"v1ResourcesConsumption":{"description":"Resources consumption information","properties":{"cpuUnit":{"type":"string"},"memoryUnit":{"type":"string"},"resources":{"items":{"$ref":"#/definitions/v1ResourceConsumption"},"type":"array"},"total":{"$ref":"#/definitions/v1ResourceTotalConsumptionData"}},"type":"object"},"v1ResourcesCostSummary":{"description":"Resources cost summary information","properties":{"resources":{"items":{"$ref":"#/definitions/v1ResourceCostSummary"},"type":"array"},"total":{"$ref":"#/definitions/v1ResourceTotalCost"}},"type":"object"},"v1ResourcesUsageSummary":{"description":"Resources usage summary information","properties":{"cpuUnit":{"type":"string"},"memoryUnit":{"type":"string"},"resources":{"items":{"$ref":"#/definitions/v1ResourceUsageSummary"},"type":"array"}},"type":"object"},"v1RestoreStatusMeta":{"description":"Restore status meta","properties":{"isSucceeded":{"type":"boolean"},"msg":{"type":"string"},"restoreTime":{"$ref":"#/definitions/v1Time"}}},"v1Role":{"description":"Role","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1RoleSpec"},"status":{"$ref":"#/definitions/v1RoleStatus"}}},"v1RoleClone":{"description":"Role clone specifications","properties":{"metadata":{"$ref":"#/definitions/v1RoleCloneMetadata"}}},"v1RoleCloneMetadata":{"description":"Role clone metadata","properties":{"name":{"type":"string"}}},"v1RolePatch":{"items":{"$ref":"#/definitions/v1HttpPatch"},"type":"array"},"v1RoleSpec":{"description":"Role specifications","properties":{"permissions":{"items":{"type":"string"},"type":"array","uniqueItems":true},"scope":{"$ref":"#/definitions/v1Scope"},"type":{"enum":["system","user"],"type":"string"}}},"v1RoleStatus":{"description":"Role status","properties":{"isEnabled":{"description":"Specifies if role account is enabled/disabled","type":"boolean","x-omitempty":false}}},"v1Roles":{"description":"Array of Roles","properties":{"items":{"items":{"$ref":"#/definitions/v1Role"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1S3StorageConfig":{"description":"S3 storage config object","properties":{"bucketName":{"description":"S3 storage bucket name","type":"string"},"caCert":{"description":"CA Certificate","type":"string"},"credentials":{"$ref":"#/definitions/v1AwsCloudAccount","description":"AWS cloud account credentials"},"region":{"description":"AWS region name","type":"string"},"s3ForcePathStyle":{"default":true,"type":"boolean"},"s3Url":{"description":"Custom hosted S3 URL","type":"string"},"useRestic":{"default":true,"description":"Set to 'true', to use Restic plugin for the backup","type":"boolean"}},"required":["bucketName","region","credentials"],"type":"object"},"v1SchedulerJob":{"properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta","type":"object","x-omitempty":false},"spec":{"properties":{"cycles":{"type":"integer","x-omitempty":false},"interval":{"type":"integer","x-omitempty":false}},"type":"object"},"status":{"properties":{"cycleNumber":{"type":"integer","x-omitempty":false},"error":{"type":"string","x-omitempty":false},"forceNextRun":{"type":"boolean","x-omitempty":false},"isActive":{"type":"boolean","x-omitempty":false},"isDisabled":{"type":"boolean","x-omitempty":false},"isLocked":{"type":"boolean","x-omitempty":false},"lastRunTime":{"$ref":"#/definitions/v1Time","x-omitempty":false},"lastSuccessfulRunTime":{"$ref":"#/definitions/v1Time","x-omitempty":false},"nextRunTime":{"$ref":"#/definitions/v1Time","x-omitempty":false}},"type":"object"}},"type":"object"},"v1SchedulerJobs":{"items":{"$ref":"#/definitions/v1SchedulerJob"},"type":"array","uniqueItems":true},"v1SchedulerJobsHealth":{"items":{"$ref":"#/definitions/v1SchedulerJob"},"type":"array","uniqueItems":true},"v1Scope":{"enum":["system","tenant","project","resource"],"type":"string"},"v1SearchFilterBoolCondition":{"properties":{"value":{"type":"boolean"}}},"v1SearchFilterCondition":{"properties":{"bool":{"$ref":"#/definitions/v1SearchFilterBoolCondition"},"date":{"$ref":"#/definitions/v1SearchFilterDateCondition"},"float":{"$ref":"#/definitions/v1SearchFilterFloatCondition"},"int":{"$ref":"#/definitions/v1SearchFilterIntegerCondition"},"keyValue":{"$ref":"#/definitions/v1SearchFilterKeyValueCondition"},"string":{"$ref":"#/definitions/v1SearchFilterStringCondition"}}},"v1SearchFilterConjunctionOperator":{"enum":["and","or"],"type":"string","x-nullable":true},"v1SearchFilterDateCondition":{"properties":{"match":{"$ref":"#/definitions/v1SearchFilterDateConditionMatch"},"negation":{"type":"boolean"},"operator":{"$ref":"#/definitions/v1SearchFilterDateOperator"}}},"v1SearchFilterDateConditionMatch":{"properties":{"conjunction":{"$ref":"#/definitions/v1SearchFilterConjunctionOperator"},"values":{"items":{"$ref":"#/definitions/v1Time"},"type":"array","uniqueItems":true}}},"v1SearchFilterDateOperator":{"enum":["eq","gt","gte","lt","lte","range"],"type":"string"},"v1SearchFilterFloatCondition":{"properties":{"match":{"$ref":"#/definitions/v1SearchFilterFloatConditionMatch"},"negation":{"type":"boolean"},"operator":{"$ref":"#/definitions/v1SearchFilterIntegerOperator"}}},"v1SearchFilterFloatConditionMatch":{"properties":{"conjunction":{"$ref":"#/definitions/v1SearchFilterConjunctionOperator"},"values":{"items":{"format":"float64","type":"number"},"type":"array","uniqueItems":true}}},"v1SearchFilterGroup":{"properties":{"conjunction":{"$ref":"#/definitions/v1SearchFilterConjunctionOperator"},"filters":{"items":{"$ref":"#/definitions/v1SearchFilterItem"},"type":"array","uniqueItems":true}}},"v1SearchFilterIntegerCondition":{"properties":{"match":{"$ref":"#/definitions/v1SearchFilterIntegerConditionMatch"},"negation":{"type":"boolean"},"operator":{"$ref":"#/definitions/v1SearchFilterIntegerOperator"}}},"v1SearchFilterIntegerConditionMatch":{"properties":{"conjunction":{"$ref":"#/definitions/v1SearchFilterConjunctionOperator"},"values":{"items":{"type":"integer"},"type":"array","uniqueItems":true}}},"v1SearchFilterIntegerOperator":{"enum":["eq","gt","gte","lt","lte"],"type":"string"},"v1SearchFilterItem":{"properties":{"condition":{"$ref":"#/definitions/v1SearchFilterCondition"},"property":{"type":"string"},"type":{"$ref":"#/definitions/v1SearchFilterPropertyType"}}},"v1SearchFilterKeyValueCondition":{"properties":{"ignoreCase":{"type":"boolean"},"key":{"type":"string"},"match":{"$ref":"#/definitions/v1SearchFilterKeyValueConditionMatch"},"negation":{"type":"boolean"},"operator":{"$ref":"#/definitions/v1SearchFilterStringOperator"}}},"v1SearchFilterKeyValueConditionMatch":{"properties":{"conjunction":{"$ref":"#/definitions/v1SearchFilterConjunctionOperator"},"values":{"items":{"type":"string"},"type":"array","uniqueItems":true}}},"v1SearchFilterKeyValueOperator":{"enum":["eq"],"type":"string"},"v1SearchFilterPropertyType":{"enum":["string","int","float","bool","date","keyValue"],"type":"string"},"v1SearchFilterSchemaSpec":{"properties":{"schema":{"$ref":"#/definitions/v1SearchFilterSchemaSpecProperties"}}},"v1SearchFilterSchemaSpecEnumValue":{"properties":{"displayValue":{"type":"string"},"value":{"type":"string"}}},"v1SearchFilterSchemaSpecProperties":{"properties":{"properties":{"items":{"$ref":"#/definitions/v1SearchFilterSchemaSpecProperty"},"type":"array"}}},"v1SearchFilterSchemaSpecProperty":{"properties":{"default":{"type":"string","x-order":6},"displayName":{"type":"string","x-order":2},"enum":{"items":{"type":"string"},"type":"array","x-omitempty":true,"x-order":4},"enumValues":{"items":{"$ref":"#/definitions/v1SearchFilterSchemaSpecEnumValue"},"type":"array","x-omitempty":true,"x-order":5},"hideDisplay":{"type":"boolean","x-order":1},"maxFloatVal":{"format":"float64","type":"number","x-order":10},"maxIntVal":{"format":"int32","type":"integer","x-order":8},"minFloatVal":{"format":"float64","type":"number","x-order":9},"minIntVal":{"format":"int32","type":"integer","x-order":7},"name":{"type":"string","x-order":0},"type":{"type":"string","x-order":3}}},"v1SearchFilterSortSpec":{"properties":{"field":{"$ref":"#/definitions/v1SearchSortFields"},"order":{"$ref":"#/definitions/v1SortOrder"}}},"v1SearchFilterSpec":{"properties":{"conjunction":{"$ref":"#/definitions/v1SearchFilterConjunctionOperator"},"filterGroups":{"items":{"$ref":"#/definitions/v1SearchFilterGroup"},"type":"array","uniqueItems":true}}},"v1SearchFilterStringCondition":{"properties":{"ignoreCase":{"type":"boolean"},"match":{"$ref":"#/definitions/v1SearchFilterStringConditionMatch"},"negation":{"type":"boolean"},"operator":{"$ref":"#/definitions/v1SearchFilterStringOperator"}}},"v1SearchFilterStringConditionMatch":{"properties":{"conjunction":{"$ref":"#/definitions/v1SearchFilterConjunctionOperator"},"values":{"items":{"type":"string"},"type":"array","uniqueItems":true}}},"v1SearchFilterStringOperator":{"enum":["eq","contains","beginsWith"],"type":"string"},"v1SearchFilterSummarySpec":{"description":"Spectro cluster search filter summary spec","properties":{"filter":{"$ref":"#/definitions/v1SearchFilterSpec"},"sort":{"items":{"$ref":"#/definitions/v1SearchFilterSortSpec"},"type":"array","uniqueItems":true}}},"v1SearchSortFields":{"enum":["environment","clusterName","clusterState","healthState","creationTimestamp","lastModifiedTimestamp"],"type":"string","x-nullable":true},"v1SectroClusterK8sDashboardUrl":{"description":"Service version information","properties":{"url":{"type":"string"}},"type":"object"},"v1ServiceEncryptionKey":{"description":"Returns the data encryption key for the session","properties":{"encryptionKey":{"description":"Encryption key to be used to decrypt the encrypted data in the response","type":"string"}},"type":"object"},"v1ServiceImage":{"description":"Service image entity","properties":{"buildId":{"type":"string"},"image":{"type":"string"},"serviceName":{"type":"string"},"version":{"type":"string"}},"type":"object"},"v1ServiceManifest":{"description":"Service manifest information","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Not used for the resource info.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ServiceManifestSpec"}},"type":"object"},"v1ServiceManifestSpec":{"properties":{"manifests":{"items":{"$ref":"#/definitions/v1GitRepoFileContent"},"type":"array","uniqueItems":true},"name":{"type":"string"},"version":{"type":"string"}},"type":"object"},"v1ServicePort":{"properties":{"port":{"description":"The port that will be exposed by this service.","format":"int32","type":"integer"},"protocol":{"type":"string"}},"required":["port"],"type":"object"},"v1ServiceSpec":{"description":"ServiceSpec defines the specification of service registering edge","properties":{"name":{"type":"string"},"version":{"type":"string"}},"type":"object"},"v1ServiceVersion":{"description":"Service version information","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Not used for the resource info.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1ServiceVersionSpec"}},"type":"object"},"v1ServiceVersionSpec":{"properties":{"latestVersion":{"$ref":"#/definitions/v1GitRepoFileContent"},"name":{"type":"string"}},"type":"object"},"v1ServicesImages":{"properties":{"serviceImages":{"items":{"$ref":"#/definitions/v1ServiceImage"},"type":"array","uniqueItems":true}},"type":"object"},"v1SonobuoyEntity":{"description":"Sonobuoy response","properties":{"reports":{"additionalProperties":{"$ref":"#/definitions/v1SonobuoyReportEntity"},"type":"object"},"requestUid":{"type":"string"},"status":{"enum":["Completed","InProgress","Failed","Initiated"],"type":"string"}},"required":["requestUid","status","reports"]},"v1SonobuoyLog":{"description":"Compliance Scan Sonobuoy Log","properties":{"description":{"type":"string"},"msg":{"type":"string"},"output":{"type":"string"},"path":{"type":"string"},"state":{"type":"string"}}},"v1SonobuoyLogEntity":{"description":"Sonobuoy log","properties":{"description":{"type":"string"},"msg":{"type":"string"},"output":{"type":"string"},"path":{"type":"string"},"state":{"type":"string"}}},"v1SonobuoyReport":{"description":"Compliance Scan Sonobuoy Report","properties":{"fail":{"format":"int32","type":"integer"},"logs":{"items":{"$ref":"#/definitions/v1SonobuoyLog"},"type":"array"},"node":{"type":"string"},"pass":{"format":"int32","type":"integer"},"plugin":{"type":"string"},"status":{"type":"string"},"total":{"format":"int32","type":"integer"}}},"v1SonobuoyReportEntity":{"description":"Sonobuoy report","properties":{"fail":{"format":"int32","type":"integer"},"logs":{"items":{"$ref":"#/definitions/v1SonobuoyLogEntity"},"type":"array"},"node":{"type":"string"},"pass":{"format":"int32","type":"integer"},"plugin":{"type":"string"},"status":{"type":"string"},"total":{"format":"int32","type":"integer"}}},"v1SortOrder":{"default":"asc","enum":["asc","desc"],"type":"string"},"v1SpcApply":{"properties":{"actionType":{"enum":["DownloadAndInstall","DownloadAndInstallLater"],"type":"string"},"canBeApplied":{"description":"If it is true then Agent can apply the changes to the palette","type":"boolean","x-omitempty":false},"crdDigest":{"type":"string"},"lastModifiedTime":{"$ref":"#/definitions/v1Time"},"patchAppliedTime":{"$ref":"#/definitions/v1Time"},"spcHash":{"type":"string"},"spcInfraHash":{"type":"string"}},"type":"object"},"v1SpcApplySettings":{"properties":{"actionType":{"enum":["DownloadAndInstall","DownloadAndInstallLater"],"type":"string"}},"type":"object"},"v1SpcPatchTimeEntity":{"properties":{"clusterHash":{"type":"string"},"patchTime":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1SpectroAppMgmtUpgrade":{"description":"Spectro application management upgrade information","properties":{"profiles":{"items":{"$ref":"#/definitions/v1ClusterProfileNotificationUpdateEntity"},"type":"array","uniqueItems":true},"version":{"type":"string"}},"required":["version"],"type":"object"},"v1SpectroAwsClusterEntity":{"description":"AWS cluster request payload for create and update","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"cloudAccountUid":{"description":"Cloud account uid to be used for cluster provisioning","type":"string"},"cloudConfig":{"$ref":"#/definitions/v1AwsClusterConfig"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"General cluster configuration like health, patching settings, namespace resource allocation, rbac"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1AwsMachinePoolConfigEntity"},"type":"array"},"policies":{"$ref":"#/definitions/v1SpectroClusterPolicies"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"required":["cloudType","cloudAccountUid","cloudConfig"],"type":"object"}},"type":"object"},"v1SpectroAwsClusterImportEntity":{"description":"Spectro AWS cluster import request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"properties":{"clusterConfig":{"$ref":"#/definitions/v1ImportClusterConfig"}},"type":"object"}},"type":"object"},"v1SpectroAwsClusterRateEntity":{"description":"Spectro AWS cluster request payload for estimating rate","properties":{"cloudConfig":{"$ref":"#/definitions/v1AwsClusterConfig"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1AwsMachinePoolConfigEntity"},"type":"array"}},"type":"object"},"v1SpectroAzureClusterEntity":{"description":"Azure cluster request payload for create and update","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"cloudAccountUid":{"description":"Cloud account uid to be used for cluster provisioning","type":"string"},"cloudConfig":{"$ref":"#/definitions/v1AzureClusterConfig"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"General cluster configuration like health, patching settings, namespace resource allocation, rbac"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1AzureMachinePoolConfigEntity"},"type":"array"},"policies":{"$ref":"#/definitions/v1SpectroClusterPolicies"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"required":["cloudType","cloudAccountUid","cloudConfig"],"type":"object"}},"type":"object"},"v1SpectroAzureClusterImportEntity":{"description":"Spectro Azure cluster import request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"properties":{"clusterConfig":{"$ref":"#/definitions/v1ImportClusterConfig"}},"type":"object"}},"type":"object"},"v1SpectroAzureClusterRateEntity":{"description":"Spectro Azure cluster request payload for estimating rate","properties":{"cloudConfig":{"$ref":"#/definitions/v1AzureClusterConfig"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1AzureMachinePoolConfigEntity"},"type":"array"}},"type":"object"},"v1SpectroCluster":{"description":"SpectroCluster is the Schema for the spectroclusters API","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Cloud type of the cloud config","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1SpectroClusterSpec"},"status":{"$ref":"#/definitions/v1SpectroClusterStatus"}},"type":"object"},"v1SpectroClusterActiveAppDeployment":{"description":"Active app deployment","properties":{"appRef":{"$ref":"#/definitions/v1ObjectEntity"},"state":{"type":"string"}},"type":"object"},"v1SpectroClusterActiveCluster":{"description":"Active clusters","properties":{"clusterRef":{"$ref":"#/definitions/v1ObjectEntity"},"state":{"type":"string"}},"type":"object"},"v1SpectroClusterActiveResources":{"description":"Active cluster resources","properties":{"appDeployments":{"items":{"$ref":"#/definitions/v1SpectroClusterActiveAppDeployment"},"type":"array"},"clusters":{"items":{"$ref":"#/definitions/v1SpectroClusterActiveCluster"},"type":"array"},"virtualClusters":{"items":{"$ref":"#/definitions/v1SpectroClusterActiveCluster"},"type":"array"}},"type":"object"},"v1SpectroClusterAddOnService":{"description":"Spectro cluster addon service","properties":{"endpoint":{"type":"string"},"name":{"type":"string"}}},"v1SpectroClusterAddOnServiceSummary":{"description":"Spectro cluster status summary","properties":{"endpoint":{"type":"string"},"name":{"type":"string"}}},"v1SpectroClusterAssetEntity":{"description":"Cluster asset","properties":{"spec":{"properties":{"frpKubeconfig":{"type":"string"},"kubeconfig":{"type":"string"},"kubeconfigclient":{"type":"string"},"manifest":{"type":"string"}},"type":"object"}},"type":"object"},"v1SpectroClusterAssetFrpKubeConfig":{"description":"Cluster asset Frp Kube Config","properties":{"frpKubeconfig":{"type":"string"}},"type":"object"},"v1SpectroClusterAssetKubeConfig":{"description":"Cluster asset Kube Config","properties":{"kubeconfig":{"type":"string"}},"type":"object"},"v1SpectroClusterAssetKubeConfigClient":{"description":"Cluster asset Kube Config Client","properties":{"kubeconfigclient":{"type":"string"}},"type":"object"},"v1SpectroClusterAssetManifest":{"description":"Cluster asset","properties":{"manifest":{"type":"string"}},"type":"object"},"v1SpectroClusterCloudCost":{"description":"Spectro cluster cloud cost information","properties":{"cost":{"$ref":"#/definitions/v1ResourceCost"},"data":{"items":{"$ref":"#/definitions/v1CloudCostDataPoint"},"type":"array"}},"type":"object"},"v1SpectroClusterCloudCostSummaryFilter":{"description":"Spectro cluster cloud cost summary filter","properties":{"clouds":{"items":{"type":"string"},"type":"array","uniqueItems":true},"endTime":{"$ref":"#/definitions/v1Time"},"projects":{"items":{"type":"string"},"type":"array","uniqueItems":true},"startTime":{"$ref":"#/definitions/v1Time"},"workspaces":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1SpectroClusterCloudCostSummaryOptions":{"description":"Spectro cluster cloud cost summary options","properties":{"groupBy":{"default":"project","enum":["tenant","project","cloud","cluster"],"type":"string"},"period":{"default":1440,"format":"int32","type":"integer"}},"type":"object"},"v1SpectroClusterCloudCostSummarySpec":{"description":"Spectro cluster cloud cost summary spec","properties":{"filter":{"$ref":"#/definitions/v1SpectroClusterCloudCostSummaryFilter"},"options":{"$ref":"#/definitions/v1SpectroClusterCloudCostSummaryOptions"}},"type":"object"},"v1SpectroClusterCost":{"description":"Spectro cluster cost information","properties":{"cloud":{"$ref":"#/definitions/v1SpectroClusterCloudCost"},"cost":{"$ref":"#/definitions/v1ResourceCost"},"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1SpectroClusterCostSummary":{"properties":{"cluster":{"$ref":"#/definitions/v1SpectroClusterCost"},"endTime":{"$ref":"#/definitions/v1Time"},"period":{"format":"int32","type":"integer"},"startTime":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1SpectroClusterFilterSpec":{"description":"Spectro cluster filter spec","properties":{"cloudAccounts":{"items":{"type":"string"},"type":"array","uniqueItems":true},"clusterName":{"$ref":"#/definitions/v1FilterString"},"clusterProfiles":{"items":{"type":"string"},"type":"array","uniqueItems":true},"clusterState":{"$ref":"#/definitions/v1ClusterState","description":"Deprecated. Use clusterStates"},"clusterStates":{"items":{"$ref":"#/definitions/v1ClusterState"},"type":"array","uniqueItems":true},"cpuUsage":{"$ref":"#/definitions/v1FilterIntRange"},"environment":{"description":"Deprecated. Use environments","items":{"type":"string"},"type":"array","uniqueItems":true},"environments":{"items":{"type":"string"},"type":"array","uniqueItems":true},"healthState":{"default":"all","enum":["all","Healthy","UnHealthy"],"type":"string"},"isDeleted":{"default":false,"type":"boolean"},"isHostCluster":{"default":false,"type":"boolean","x-omitempty":false},"memoryUsage":{"$ref":"#/definitions/v1FilterNumberRange"},"metricPeriod":{"default":60,"description":"Metric period in minutes defines latest metrics by period","format":"int32","type":"integer"},"projectUids":{"items":{"type":"string"},"type":"array","uniqueItems":true},"tags":{"$ref":"#/definitions/v1FilterArray"}}},"v1SpectroClusterHealthCheck":{"properties":{"spec":{"$ref":"#/definitions/v1SpectroClusterHealthCheckSpec","type":"object"},"status":{"$ref":"#/definitions/v1SpectroClusterHealthCheckStatus","type":"object"}},"type":"object"},"v1SpectroClusterHealthCheckSpec":{"properties":{"name":{"type":"string"},"orgName":{"type":"string"},"ownerName":{"type":"string"},"ownerUid":{"type":"string"},"tenantUid":{"type":"string"}},"type":"object"},"v1SpectroClusterHealthCheckStatus":{"properties":{"machineHealthChecks":{"items":{"$ref":"#/definitions/v1HealthCheck"},"type":"array"},"msgBrokerHealthChecks":{"items":{"$ref":"#/definitions/v1HealthCheck"},"type":"array"},"spectroClusterHealthChecks":{"items":{"$ref":"#/definitions/v1HealthCheck"},"type":"array"}},"type":"object"},"v1SpectroClusterHealthCondition":{"description":"Spectro cluster health condition","properties":{"message":{"type":"string"},"relatedObject":{"$ref":"#/definitions/v1RelatedObject","type":"object"},"type":{"type":"string"}}},"v1SpectroClusterHealthStatus":{"description":"Spectro cluster health status","properties":{"agentVersion":{"type":"string"},"conditions":{"items":{"$ref":"#/definitions/v1SpectroClusterHealthCondition"},"type":"array","uniqueItems":true},"lastHeartBeatTimestamp":{"$ref":"#/definitions/v1Time"},"state":{"type":"string"}}},"v1SpectroClusterKubeCtlRedirect":{"description":"Active resources of tenant","properties":{"redirectUri":{"type":"string"}},"type":"object"},"v1SpectroClusterLocationInputEntity":{"description":"Cluster location","properties":{"location":{"$ref":"#/definitions/v1ClusterLocation"}},"type":"object"},"v1SpectroClusterMetaSummary":{"description":"Spectro cluster meta summary","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"specSummary":{"description":"Spectro cluster meta summary","properties":{"archType":{"description":"Architecture type of the cluster","items":{"default":"amd64","enum":["arm64","amd64"],"type":"string"},"type":"array"},"cloudAccountUid":{"type":"string"},"cloudRegion":{"type":"string"},"cloudType":{"type":"string"},"clusterType":{"type":"string"},"importMode":{"type":"string"},"location":{"$ref":"#/definitions/v1ClusterMetaSpecLocation"},"projectMeta":{"$ref":"#/definitions/v1ProjectMeta"},"tags":{"items":{"type":"string"},"type":"array"}},"type":"object"},"status":{"description":"Spectro cluster meta status summary","properties":{"cost":{"$ref":"#/definitions/v1ClusterMetaStatusCost"},"fips":{"$ref":"#/definitions/v1ClusterFips"},"health":{"$ref":"#/definitions/v1ClusterMetaStatusHealth"},"state":{"type":"string"},"updates":{"$ref":"#/definitions/v1ClusterMetaStatusUpdates"}}}},"type":"object"},"v1SpectroClusterMetadataFilterSpec":{"description":"Spectro cluster filter spec","properties":{"environment":{"type":"string"},"includeVirtual":{"default":false,"type":"boolean"},"isAlloy":{"default":false,"description":"isAlloy is renamed to isImported","type":"boolean"},"isImportReadOnly":{"default":true,"type":"boolean"},"isImported":{"default":false,"type":"boolean"},"name":{"$ref":"#/definitions/v1FilterString"},"state":{"type":"string"}}},"v1SpectroClusterMetadataSpec":{"description":"Spectro cluster metadata spec","properties":{"filter":{"$ref":"#/definitions/v1SpectroClusterMetadataFilterSpec"},"sort":{"enum":["environment","state","name"],"type":"string","x-nullable":true}}},"v1SpectroClusterMetrics":{"description":"Spectro cluster metrics","properties":{"cpu":{"$ref":"#/definitions/v1ComputeMetrics"},"memory":{"$ref":"#/definitions/v1ComputeMetrics"}}},"v1SpectroClusterMigration":{"description":"Spectro cluster migration status","properties":{"database":{"$ref":"#/definitions/v1MgmtMigrationStatuses"},"state":{"type":"string","x-omitempty":false},"tenant":{"$ref":"#/definitions/v1SpectroTenantMigration"}},"type":"object"},"v1SpectroClusterNotifications":{"description":"Spectro cluster notifications","properties":{"isAvailable":{"type":"boolean","x-omitempty":false}}},"v1SpectroClusterOidcClaims":{"properties":{"Email":{"type":"string","x-omitempty":false},"FirstName":{"type":"string","x-omitempty":false},"LastName":{"type":"string","x-omitempty":false},"SpectroTeam":{"type":"string","x-omitempty":false}},"type":"object"},"v1SpectroClusterOidcSpec":{"properties":{"clientId":{"type":"string","x-omitempty":false},"clientSecret":{"type":"string","x-omitempty":false},"issuerUrl":{"description":"the issuer is the URL identifier for the service","type":"string","x-omitempty":false},"requiredClaims":{"$ref":"#/definitions/v1SpectroClusterOidcClaims"},"scopes":{"items":{"type":"string"},"type":"array","x-omitempty":false}},"type":"object"},"v1SpectroClusterPackCondition":{"properties":{"message":{"type":"string"},"reason":{"type":"string"},"status":{"type":"string"},"type":{"enum":["ReadyForInstall","Installed","Ready","Error","UpgradeAvailable","WaitingForOtherLayers"],"type":"string"}},"type":"object"},"v1SpectroClusterPackConfigList":{"properties":{"items":{"items":{"$ref":"#/definitions/v1PackConfig"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1SpectroClusterPackDiff":{"description":"Cluster pack difference","properties":{"current":{"$ref":"#/definitions/v1PackRef"},"diffConfigKeys":{"items":{"type":"string"},"type":"array"},"target":{"$ref":"#/definitions/v1PackRef"}},"type":"object"},"v1SpectroClusterPackProperties":{"description":"Cluster pack properties response","properties":{"yaml":{"type":"string","x-omitempty":false}},"type":"object"},"v1SpectroClusterPackStatusEntity":{"properties":{"condition":{"$ref":"#/definitions/v1SpectroClusterPackCondition","description":"Pack deployment status conditions"},"endTime":{"$ref":"#/definitions/v1Time","description":"Pack deployment end time"},"name":{"description":"Pack name","type":"string"},"profileUid":{"description":"Cluster profile uid","type":"string"},"startTime":{"$ref":"#/definitions/v1Time","description":"Pack deployment start time"},"type":{"$ref":"#/definitions/v1PackType"},"version":{"description":"pack version","type":"string"}},"type":"object"},"v1SpectroClusterPacksEntity":{"description":"Cluster entity for pack refs validate","properties":{"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"type":"object"},"v1SpectroClusterPacksStatusEntity":{"properties":{"packs":{"items":{"$ref":"#/definitions/v1SpectroClusterPackStatusEntity"},"type":"array"}},"type":"object"},"v1SpectroClusterPolicies":{"description":"Cluster policies","properties":{"backupPolicy":{"$ref":"#/definitions/v1ClusterBackupConfig"},"scanPolicy":{"$ref":"#/definitions/v1ClusterComplianceScheduleConfig"}},"type":"object"},"v1SpectroClusterProfile":{"description":"Cluster profile response","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1SpectroClusterProfileSpec"}},"type":"object"},"v1SpectroClusterProfileEntity":{"description":"Cluster profile request payload","properties":{"packValues":{"description":"Cluster profile packs array","items":{"$ref":"#/definitions/v1PackValuesEntity"},"type":"array","uniqueItems":true},"replaceWithProfile":{"description":"Cluster profile uid to be replaced with new profile","type":"string"},"uid":{"description":"Cluster profile uid","type":"string"}},"type":"object"},"v1SpectroClusterProfileList":{"properties":{"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfile"},"type":"array"}},"required":["profiles"],"type":"object"},"v1SpectroClusterProfileSpec":{"description":"Cluster profile spec response","properties":{"cloudType":{"description":"Cluster profile cloud type","type":"string"},"packs":{"description":"Cluster profile packs array","items":{"$ref":"#/definitions/v1ClusterProfilePacksEntity"},"type":"array","uniqueItems":true},"relatedObject":{"$ref":"#/definitions/v1ObjectReference","description":"RelatedObject refers to the type of object(clustergroup, cluster or edgeHost) the cluster profile is associated with"},"type":{"description":"Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]","type":"string"},"version":{"description":"Cluster profile version","format":"int32","type":"integer"}},"type":"object"},"v1SpectroClusterProfileUpdates":{"properties":{"profiles":{"items":{"$ref":"#/definitions/v1ClusterProfileTemplate"},"type":"array","uniqueItems":true}},"type":"object"},"v1SpectroClusterProfileValidatorResponse":{"description":"Cluster profile validator response","properties":{"packs":{"$ref":"#/definitions/v1ConstraintValidatorResponse"},"uid":{"description":"Cluster profile uid","type":"string"}},"type":"object"},"v1SpectroClusterProfiles":{"properties":{"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"},"spcApplySettings":{"$ref":"#/definitions/v1SpcApplySettings"}},"required":["profiles"],"type":"object"},"v1SpectroClusterProfilesDeleteEntity":{"properties":{"profileUids":{"description":"Cluster's profile uid list","items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1SpectroClusterProfilesPacksManifests":{"properties":{"profiles":{"items":{"$ref":"#/definitions/v1ClusterProfilePacksManifests"},"type":"array"}},"required":["profiles"],"type":"object"},"v1SpectroClusterProfilesParamReferenceEntity":{"description":"Cluster profiles param reference entity","properties":{"references":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1SpectroClusterProfilesResolvedValues":{"description":"Cluster profiles resolved values response","properties":{"profiles":{"items":{"$ref":"#/definitions/v1ProfileResolvedValues"},"type":"array","uniqueItems":true}},"type":"object"},"v1SpectroClusterProjectCleanedResource":{"description":"List of cleaned project spectro cluster resources","properties":{"resources":{"items":{"type":"string"},"type":"array"}},"type":"object"},"v1SpectroClusterProjectCleanupValidateEntity":{"description":"Cluster duration thresholds","properties":{"deletingClusterDurationThresholdInMin":{"format":"int32","type":"integer"},"provisioningClusterDurationThresholdInMin":{"format":"int32","type":"integer"}},"type":"object"},"v1SpectroClusterRate":{"description":"Cluster estimated rate information","properties":{"machinePools":{"items":{"$ref":"#/definitions/v1MachinePoolRate"},"type":"array"},"name":{"type":"string"},"rate":{"$ref":"#/definitions/v1TotalClusterRate"},"resourceMetadata":{"$ref":"#/definitions/v1CloudResourceMetadata"}},"type":"object"},"v1SpectroClusterRepave":{"description":"Spectro cluster repave status information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1SpectroClusterRepaveSpec"},"status":{"$ref":"#/definitions/v1SpectroClusterRepaveStatus"}},"type":"object"},"v1SpectroClusterRepaveReason":{"description":"Cluster repave reason description","properties":{"code":{"type":"string"},"message":{"type":"string"},"pack":{"$ref":"#/definitions/v1SpectroClusterPackDiff"}},"type":"object"},"v1SpectroClusterRepaveSpec":{"properties":{"reasons":{"description":"Spectro cluster repave reasons","items":{"$ref":"#/definitions/v1SpectroClusterRepaveReason"},"type":"array"},"source":{"$ref":"#/definitions/v1ClusterRepaveSource"},"spectroClusterUid":{"type":"string"}},"type":"object"},"v1SpectroClusterRepaveStatus":{"properties":{"message":{"type":"string"},"repaveTransitionTime":{"$ref":"#/definitions/v1Time"},"state":{"$ref":"#/definitions/v1ClusterRepaveState"}},"type":"object"},"v1SpectroClusterRepaveValidationResponse":{"description":"Cluster repave validation response","properties":{"isRepaveRequired":{"description":"If true then the pack changes can cause cluster repave","type":"boolean","x-omitempty":false},"reasons":{"items":{"$ref":"#/definitions/v1SpectroClusterRepaveReason"},"type":"array"}},"type":"object"},"v1SpectroClusterRevision":{"description":"Revision specification details for a cluster","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1SpectroClusterSpec"}},"type":"object"},"v1SpectroClusterRevisionMeta":{"description":"Revision spec uid along with the creationTimestamp for the revision","properties":{"creationTimestamp":{"$ref":"#/definitions/v1Time"},"uid":{"description":"The unique id of the spc revision document","type":"string"}},"type":"object"},"v1SpectroClusterRevisionMetaList":{"properties":{"spcRevisions":{"items":{"$ref":"#/definitions/v1SpectroClusterRevisionMeta"},"type":"array"}},"type":"object"},"v1SpectroClusterSortFields":{"enum":["environment","clusterName","healthState","creationTimestamp","lastModifiedTimestamp"],"type":"string","x-nullable":true},"v1SpectroClusterSortSpec":{"properties":{"field":{"$ref":"#/definitions/v1SpectroClusterSortFields"},"order":{"$ref":"#/definitions/v1SortOrder"}}},"v1SpectroClusterSpec":{"description":"SpectroClusterSpec defines the desired state of SpectroCluster","properties":{"cloudConfigRef":{"$ref":"#/definitions/v1ObjectReference","description":"CloudConfigRef point to the cloud configuration for the cluster, input by user Ref types are: AwsCloudConfig/VsphereCloudConfig/BaremetalConfig/ etc this user config will be used to generate cloud specific cluster/machine spec for cluster-api For VM, it will contain information needed to launch VMs, like cloud account, instance type For BM, it will contain actual baremetal machines"},"cloudType":{"type":"string"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfig","description":"ClusterConfig is the configuration related to a general cluster. Configuration related to the health of the cluster."},"clusterProfileTemplates":{"description":"When a cluster created from a clusterprofile at t1, ClusterProfileTemplate is a copy of the draft version or latest published version of the clusterprofileSpec.clusterprofileTemplate then clusterprofile may evolve to v2 at t2, but before user decide to upgrade the cluster, it will stay as it is when user decide to upgrade, clusterProfileTemplate will be updated from the clusterprofile pointed by ClusterProfileRef","items":{"$ref":"#/definitions/v1ClusterProfileTemplate"},"type":"array"},"clusterType":{"enum":["PureManage","AlloyMonitor","AlloyAssist","AlloyExtend"],"type":"string"}},"type":"object"},"v1SpectroClusterStatus":{"description":"SpectroClusterStatus","properties":{"abortTimestamp":{"$ref":"#/definitions/v1Time"},"addOnServices":{"items":{"$ref":"#/definitions/v1SpectroClusterAddOnService"},"type":"array"},"apiEndpoints":{"items":{"$ref":"#/definitions/v1APIEndpoint"},"type":"array"},"clusterImport":{"$ref":"#/definitions/v1ClusterImport"},"conditions":{"items":{"$ref":"#/definitions/v1ClusterCondition"},"type":"array"},"fips":{"$ref":"#/definitions/v1ClusterFips"},"location":{"$ref":"#/definitions/v1ClusterLocation"},"packs":{"items":{"$ref":"#/definitions/v1ClusterPackStatus"},"type":"array"},"profileStatus":{"$ref":"#/definitions/v1ProfileStatus"},"repave":{"$ref":"#/definitions/v1ClusterRepaveStatus"},"services":{"items":{"$ref":"#/definitions/v1LoadBalancerService"},"type":"array"},"spcApply":{"$ref":"#/definitions/v1SpcApply"},"state":{"description":"current operational state","type":"string"},"upgrades":{"items":{"$ref":"#/definitions/v1Upgrades"},"type":"array"},"virtual":{"$ref":"#/definitions/v1Virtual"}},"type":"object"},"v1SpectroClusterSummary":{"description":"Spectro cluster summary","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"specSummary":{"description":"Spectro cluster spec summary","properties":{"archTypes":{"description":"Architecture type of the cluster","items":{"$ref":"#/definitions/v1ArchType"},"type":"array"},"cloudAccountMeta":{"$ref":"#/definitions/v1CloudAccountMeta"},"cloudConfig":{"$ref":"#/definitions/v1CloudConfigMeta"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfigResponse"},"clusterProfileTemplate":{"$ref":"#/definitions/v1ClusterProfileTemplateMeta"},"clusterProfileTemplates":{"items":{"$ref":"#/definitions/v1ClusterProfileTemplateMeta"},"type":"array"},"projectMeta":{"$ref":"#/definitions/v1ProjectMeta"}},"type":"object"},"status":{"description":"Spectro cluster status summary","properties":{"clusterImport":{"$ref":"#/definitions/v1ClusterImport"},"cost":{"$ref":"#/definitions/v1ResourceCost"},"fips":{"$ref":"#/definitions/v1ClusterFips"},"health":{"$ref":"#/definitions/v1SpectroClusterHealthStatus"},"hourlyRate":{"$ref":"#/definitions/v1ResourceCost"},"location":{"$ref":"#/definitions/v1ClusterMetaSpecLocation"},"metrics":{"$ref":"#/definitions/v1SpectroClusterMetrics"},"notifications":{"$ref":"#/definitions/v1SpectroClusterNotifications"},"repave":{"$ref":"#/definitions/v1ClusterRepaveStatus"},"state":{"type":"string"},"virtual":{"$ref":"#/definitions/v1Virtual"}}}},"type":"object"},"v1SpectroClusterSummarySpec":{"description":"Spectro cluster filter summary spec","properties":{"filter":{"$ref":"#/definitions/v1SpectroClusterFilterSpec"},"sort":{"items":{"$ref":"#/definitions/v1SpectroClusterSortSpec"},"type":"array","uniqueItems":true}}},"v1SpectroClusterUidStatusSummary":{"description":"Spectro cluster status summary","properties":{"abortTimestamp":{"$ref":"#/definitions/v1Time"},"addOnServices":{"items":{"$ref":"#/definitions/v1SpectroClusterAddOnServiceSummary"},"type":"array"},"apiEndpoints":{"items":{"$ref":"#/definitions/v1APIEndpoint"},"type":"array"},"clusterImport":{"$ref":"#/definitions/v1ClusterImport"},"conditions":{"items":{"$ref":"#/definitions/v1ClusterCondition"},"type":"array"},"cost":{"$ref":"#/definitions/v1ResourceCost"},"fips":{"$ref":"#/definitions/v1ClusterFips"},"health":{"$ref":"#/definitions/v1SpectroClusterHealthStatus"},"hourlyRate":{"$ref":"#/definitions/v1ResourceCost"},"kubeMeta":{"$ref":"#/definitions/v1KubeMeta"},"location":{"$ref":"#/definitions/v1ClusterMetaSpecLocation"},"metrics":{"$ref":"#/definitions/v1SpectroClusterMetrics"},"notifications":{"$ref":"#/definitions/v1SpectroClusterNotifications"},"packs":{"items":{"$ref":"#/definitions/v1ClusterPackStatus"},"type":"array"},"services":{"items":{"$ref":"#/definitions/v1LoadBalancerService"},"type":"array"},"spcApply":{"$ref":"#/definitions/v1SpcApply"},"state":{"description":"current operational state","type":"string"},"upgrades":{"items":{"$ref":"#/definitions/v1Upgrades"},"type":"array"},"virtual":{"$ref":"#/definitions/v1Virtual"},"workspaces":{"items":{"$ref":"#/definitions/v1ResourceReference"},"type":"array"}}},"v1SpectroClusterUidSummary":{"description":"Spectro cluster summary","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"description":"Spectro cluster spec summary","properties":{"archTypes":{"description":"Architecture types of the cluster","items":{"$ref":"#/definitions/v1ArchType"},"type":"array"},"cloudConfig":{"$ref":"#/definitions/v1CloudConfigMeta"},"cloudaccount":{"$ref":"#/definitions/v1CloudAccountMeta"},"clusterProfileTemplate":{"$ref":"#/definitions/v1ClusterProfileTemplateMeta"},"clusterProfileTemplates":{"items":{"$ref":"#/definitions/v1ClusterProfileTemplateMeta"},"type":"array"}},"type":"object"},"status":{"$ref":"#/definitions/v1SpectroClusterUidStatusSummary"}},"type":"object"},"v1SpectroClusterUidUpgrades":{"description":"Cluster status upgrades","properties":{"upgrades":{"items":{"$ref":"#/definitions/v1Upgrades"},"type":"array"}},"type":"object"},"v1SpectroClusterVMCloneEntity":{"properties":{"annotationFilters":{"description":"Annotation filters","items":{"type":"string"},"type":"array"},"cloneName":{"description":"Cloning Virtual machine's name","type":"string"},"labelFilters":{"description":"Label filters","items":{"type":"string"},"type":"array"},"newMacAddresses":{"additionalProperties":{"type":"string"},"description":"NewMacAddresses manually sets that target interfaces' mac addresses. The key is the interface name and the value is the new mac address. If this field is not specified, a new MAC address will be generated automatically, as for any interface that is not included in this map","type":"object"},"newSMBiosSerial":{"description":"NewSMBiosSerial manually sets that target's SMbios serial. If this field is not specified, a new serial will be generated automatically.","type":"string"}},"required":["cloneName"],"type":"object"},"v1SpectroClusterValidatorResponse":{"description":"Cluster validator response","properties":{"machinePools":{"$ref":"#/definitions/v1ConstraintValidatorResponse"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileValidatorResponse"},"type":"array","uniqueItems":true}},"type":"object"},"v1SpectroClusters":{"properties":{"items":{"items":{"$ref":"#/definitions/v1SpectroCluster"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1SpectroClustersAgentsNotifyEntity":{"description":"SpectroClusters for which agents has to be notified","properties":{"clusterUids":{"items":{"type":"string"},"type":"array"},"notifyAllClusters":{"type":"boolean"}}},"v1SpectroClustersCostComputeSpec":{"description":"Cluster's cost compute spec","properties":{"clusterUids":{"items":{"type":"string"},"type":"array","uniqueItems":true},"startTime":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1SpectroClustersHealth":{"description":"Spectro Clusters health data","properties":{"errored":{"format":"int32","type":"integer","x-omitempty":false},"healthy":{"format":"int32","type":"integer","x-omitempty":false},"running":{"format":"int32","type":"integer","x-omitempty":false},"unhealthy":{"format":"int32","type":"integer","x-omitempty":false}},"type":"object"},"v1SpectroClustersMetadata":{"properties":{"items":{"items":{"$ref":"#/definitions/v1ObjectMeta"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1SpectroClustersMetadataSearch":{"properties":{"items":{"items":{"$ref":"#/definitions/v1SpectroClusterMetaSummary"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1SpectroClustersSummary":{"properties":{"items":{"items":{"$ref":"#/definitions/v1SpectroClusterSummary"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1SpectroClustersUsageComputeSpec":{"description":"Cluster's usage compute spec","properties":{"clusterUids":{"items":{"type":"string"},"type":"array","uniqueItems":true},"startTime":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1SpectroCoxEdgeClusterEntity":{"description":"CoxEdge cluster request payload for create and update","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"cloudAccountUid":{"description":"Cloud account uid to be used for cluster provisioning","type":"string"},"cloudConfig":{"$ref":"#/definitions/v1CoxEdgeClusterConfig"},"cloudType":{"type":"string"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"General cluster configuration like health, patching settings, namespace resource allocation, rbac"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1CoxEdgeMachinePoolConfigEntity"},"type":"array"},"policies":{"$ref":"#/definitions/v1SpectroClusterPolicies"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"required":["cloudType","cloudAccountUid","cloudConfig"],"type":"object"}},"type":"object"},"v1SpectroCoxEdgeClusterRateEntity":{"description":"Cox Edge cluster request payload for estimating rate","properties":{"cloudConfig":{"$ref":"#/definitions/v1CoxEdgeClusterConfig"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1CoxEdgeMachinePoolConfigEntity"},"type":"array"}},"type":"object"},"v1SpectroCustomClusterEntity":{"description":"Custom cluster request payload for create and update","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"properties":{"cloudAccountUid":{"description":"Cloud account uid to be used for cluster provisioning","type":"string"},"cloudConfig":{"$ref":"#/definitions/v1CustomClusterConfig"},"clusterConfig":{"$ref":"#/definitions/v1CustomClusterConfigEntity","description":"General cluster configuration like patching settings, namespace resource allocation, rbac"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1CustomMachinePoolConfigEntity"},"type":"array"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"required":["cloudType","cloudAccountUid","cloudConfig"],"type":"object"}},"type":"object"},"v1SpectroEdgeClusterEntity":{"description":"Edge cluster request payload for create and update","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1EdgeClusterConfig"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"General cluster configuration like health, patching settings, namespace resource allocation, rbac"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1EdgeMachinePoolConfigEntity"},"type":"array"},"policies":{"$ref":"#/definitions/v1SpectroClusterPolicies"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"type":"object"}},"type":"object"},"v1SpectroEdgeClusterImportEntity":{"description":"Spectro Edge cluster import request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"properties":{"clusterConfig":{"$ref":"#/definitions/v1ImportClusterConfig"}},"type":"object"}},"type":"object"},"v1SpectroEdgeClusterRateEntity":{"description":"Edge cluster request payload for estimating rate","properties":{"cloudConfig":{"$ref":"#/definitions/v1EdgeClusterConfig"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1EdgeMachinePoolConfigEntity"},"type":"array"}},"type":"object"},"v1SpectroEdgeNativeClusterEntity":{"description":"EdgeNative cluster create or update request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1EdgeNativeClusterConfig"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfigParamEntity","description":"General cluster configuration like health, patching settings, namespace resource allocation, rbac"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1EdgeNativeMachinePoolConfigEntity"},"type":"array"},"policies":{"$ref":"#/definitions/v1SpectroClusterPolicies"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"type":"object"}},"type":"object"},"v1SpectroEdgeNativeClusterImportEntity":{"description":"Spectro EdgeNative cluster import request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"properties":{"clusterConfig":{"$ref":"#/definitions/v1ImportClusterConfig"}},"type":"object"}},"type":"object"},"v1SpectroEdgeNativeClusterRateEntity":{"description":"Edge-native cluster request payload for estimating rate","properties":{"cloudConfig":{"$ref":"#/definitions/v1EdgeNativeClusterConfig"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1EdgeNativeMachinePoolConfigEntity"},"type":"array"}},"type":"object"},"v1SpectroEksClusterEntity":{"description":"Spectro EKS cluster request payload for create and update","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"cloudAccountUid":{"description":"Cloud account uid to be used for cluster provisioning","type":"string"},"cloudConfig":{"$ref":"#/definitions/v1EksClusterConfig"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"General cluster configuration like health, patching settings, namespace resource allocation, rbac"},"fargateProfiles":{"items":{"$ref":"#/definitions/v1FargateProfile"},"type":"array"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1EksMachinePoolConfigEntity"},"type":"array"},"policies":{"$ref":"#/definitions/v1SpectroClusterPolicies"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"required":["cloudAccountUid","cloudConfig"],"type":"object"}},"type":"object"},"v1SpectroEksClusterRateEntity":{"description":"Spectro EKS cluster request payload for estimating rate","properties":{"cloudConfig":{"$ref":"#/definitions/v1EksClusterConfig"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1EksMachinePoolConfigEntity"},"type":"array"}},"type":"object"},"v1SpectroGcpClusterEntity":{"description":"GCP cluster request payload for create and update","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"cloudAccountUid":{"description":"Cloud account uid to be used for cluster provisioning","type":"string"},"cloudConfig":{"$ref":"#/definitions/v1GcpClusterConfig"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"General cluster configuration like health, patching settings, namespace resource allocation, rbac"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1GcpMachinePoolConfigEntity"},"type":"array"},"policies":{"$ref":"#/definitions/v1SpectroClusterPolicies"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"required":["cloudType","cloudAccountUid","cloudConfig"],"type":"object"}},"type":"object"},"v1SpectroGcpClusterImportEntity":{"description":"Spectro GCP cluster import request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"properties":{"clusterConfig":{"$ref":"#/definitions/v1ImportClusterConfig"}},"type":"object"}},"type":"object"},"v1SpectroGcpClusterRateEntity":{"description":"Gcp cluster request payload for estimating rate","properties":{"cloudConfig":{"$ref":"#/definitions/v1GcpClusterConfig"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1GcpMachinePoolConfigEntity"},"type":"array"}},"type":"object"},"v1SpectroGenericClusterImportEntity":{"description":"Spectro generic cluster import request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"properties":{"clusterConfig":{"$ref":"#/definitions/v1ImportClusterConfig"},"edgeConfig":{"$ref":"#/definitions/v1ImportEdgeHostConfig"}},"type":"object"}},"type":"object"},"v1SpectroGenericClusterRateEntity":{"description":"Generic cluster request payload for estimating rate","properties":{"cloudConfig":{"$ref":"#/definitions/v1GenericClusterConfig"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1GenericMachinePoolConfigEntity"},"type":"array"}},"type":"object"},"v1SpectroInstallerEntity":{"description":"Spectro installer entity for create","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"cloudAccountUid":{"type":"string"},"privateGatewayUid":{"type":"string"},"spectroClusterUid":{"type":"string"}},"type":"object"},"status":{"$ref":"#/definitions/v1InstallerStatus"}},"type":"object"},"v1SpectroInstallerInputEntity":{"description":"Spectro installer entity for create","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"}},"type":"object"},"v1SpectroInstallerStatus":{"description":"spectro installer status","properties":{"status":{"$ref":"#/definitions/v1InstallerStatus"}},"type":"object"},"v1SpectroInstallers":{"description":"List Spectro installers","properties":{"items":{"items":{"$ref":"#/definitions/v1SpectroInstallerEntity"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"type":"object"},"v1SpectroLibvirtClusterEntity":{"description":"Libvirt cluster request payload for create and update","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1LibvirtClusterConfig"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"General cluster configuration like health, patching settings, namespace resource allocation, rbac"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1LibvirtMachinePoolConfigEntity"},"type":"array"},"policies":{"$ref":"#/definitions/v1SpectroClusterPolicies"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"type":"object"}},"type":"object"},"v1SpectroLibvirtClusterImportEntity":{"description":"Spectro Libvirt cluster import request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"properties":{"clusterConfig":{"$ref":"#/definitions/v1ImportClusterConfig"}},"type":"object"}},"type":"object"},"v1SpectroLibvirtClusterRateEntity":{"description":"libvirt cluster request payload for estimating rate","properties":{"cloudConfig":{"$ref":"#/definitions/v1LibvirtClusterConfig"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1LibvirtMachinePoolConfigEntity"},"type":"array"}},"type":"object"},"v1SpectroMaasClusterEntity":{"description":"Spectro Maas cluster request payload for create and update","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"cloudAccountUid":{"description":"Cloud account uid to be used for cluster provisioning","type":"string"},"cloudConfig":{"$ref":"#/definitions/v1MaasClusterConfig"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"General cluster configuration like health, patching settings, namespace resource allocation, rbac"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1MaasMachinePoolConfigEntity"},"type":"array"},"policies":{"$ref":"#/definitions/v1SpectroClusterPolicies"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"required":["cloudType","cloudAccountUid","cloudConfig"],"type":"object"}},"type":"object"},"v1SpectroMaasClusterImportEntity":{"description":"Spectro maas cluster import request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"properties":{"clusterConfig":{"$ref":"#/definitions/v1ImportClusterConfig"}},"type":"object"}},"type":"object"},"v1SpectroMaasClusterRateEntity":{"description":"Maas cluster request payload for estimating rate","properties":{"cloudConfig":{"$ref":"#/definitions/v1MaasClusterConfig"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1MaasMachinePoolConfigEntity"},"type":"array"}},"type":"object"},"v1SpectroMgmt":{"description":"Spectro management data","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1SpectroMgmtSpec"},"status":{"$ref":"#/definitions/v1SpectroMgmtStatus"}},"type":"object"},"v1SpectroMgmtSpec":{"description":"spectro management specifications","properties":{"installerMode":{"type":"string"},"spectroClusterUid":{"type":"string"},"targetVersion":{"type":"string"},"version":{"type":"string"}}},"v1SpectroMgmtStatus":{"description":"spectro management status information","properties":{"appVersions":{"items":{"$ref":"#/definitions/v1AppVersion"},"type":"array","uniqueItems":true},"isFailed":{"type":"boolean","x-omitempty":false},"lastUpdatedTime":{"$ref":"#/definitions/v1Time"},"message":{"type":"string"},"messageLogs":{"items":{"type":"string"},"type":"array"},"state":{"type":"string"},"upgradeHistory":{"items":{"$ref":"#/definitions/v1SpectroMgmtUpgrade"},"type":"array","uniqueItems":true}}},"v1SpectroMgmtUpgrade":{"description":"spectro management upgrade logs","properties":{"upgradeTime":{"$ref":"#/definitions/v1Time"},"version":{"type":"string"}}},"v1SpectroMgmtUpgradePack":{"description":"Spectro application management cluster upgrade pack information","properties":{"diffMessage":{"description":"Spectro application management cluster pack difference message","type":"string"},"layer":{"description":"Spectro application management cluster pack layer type","type":"string"},"name":{"description":"Spectro application management cluster pack name","type":"string"},"registryUid":{"description":"Spectro application management cluster pack registry unique identifier","type":"string"},"type":{"description":"Spectro application management cluster pack type","type":"string"},"uid":{"description":"Spectro application management cluster pack unique identifier","type":"string"},"values":{"description":"Spectro application management cluster pack values","type":"string"},"version":{"description":"Spectro application management cluster pack version","type":"string"}},"type":"object"},"v1SpectroMgmtUpgradeProfile":{"description":"Spectro application management cluster upgrade pack information","properties":{"packs":{"description":"Spectro application management cluster upgrade packs","items":{"$ref":"#/definitions/v1SpectroMgmtUpgradePack"},"type":"array"},"uid":{"description":"Spectro application management cluster profile unique identifier","type":"string"}},"type":"object"},"v1SpectroMgmtUpgradeProfiles":{"description":"Spectro application management cluster information","properties":{"profiles":{"description":"Spectro application management cluster profiles","items":{"$ref":"#/definitions/v1SpectroMgmtUpgradeProfile"},"type":"array"},"version":{"description":"Spectro application management cluster version","type":"string"}},"type":"object"},"v1SpectroMgmtUpgradeSpc":{"description":"Spectro application management cluster upgrade profiles","properties":{"current":{"$ref":"#/definitions/v1SpectroMgmtUpgradeProfiles"},"target":{"$ref":"#/definitions/v1SpectroMgmtUpgradeProfiles"}},"type":"object"},"v1SpectroOpenStackClusterEntity":{"description":"OpenStack cluster request payload for create and update","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"cloudAccountUid":{"description":"Cloud account uid to be used for cluster provisioning","type":"string"},"cloudConfig":{"$ref":"#/definitions/v1OpenStackClusterConfig"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"General cluster configuration like health, patching settings, namespace resource allocation, rbac"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1OpenStackMachinePoolConfigEntity"},"type":"array"},"policies":{"$ref":"#/definitions/v1SpectroClusterPolicies"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"required":["cloudAccountUid","cloudConfig"],"type":"object"}},"type":"object"},"v1SpectroOpenStackClusterImportEntity":{"description":"Spectro OpenStack cluster import request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"properties":{"clusterConfig":{"$ref":"#/definitions/v1ImportClusterConfig"}},"type":"object"}},"type":"object"},"v1SpectroOpenStackClusterRateEntity":{"description":"Openstack cluster request payload for estimating rate","properties":{"cloudConfig":{"$ref":"#/definitions/v1OpenStackClusterConfig"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1OpenStackMachinePoolConfigEntity"},"type":"array"}},"type":"object"},"v1SpectroTenantClusterMigration":{"description":"Spectro tenant cluster migration status","properties":{"message":{"type":"string"},"name":{"type":"string"},"state":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1SpectroTenantMigration":{"description":"Spectro tenant migration status","properties":{"clusters":{"items":{"$ref":"#/definitions/v1SpectroTenantClusterMigration"},"type":"array","uniqueItems":true},"state":{"type":"string","x-omitempty":false}},"type":"object"},"v1SpectroTencentClusterEntity":{"description":"Tencent cluster request payload for create and update","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"cloudAccountUid":{"description":"Cloud account uid to be used for cluster provisioning","type":"string"},"cloudConfig":{"$ref":"#/definitions/v1TencentClusterConfig"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"General cluster configuration like health, patching settings, namespace resource allocation, rbac"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1TencentMachinePoolConfigEntity"},"type":"array"},"policies":{"$ref":"#/definitions/v1SpectroClusterPolicies"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"required":["cloudType","cloudAccountUid","cloudConfig"],"type":"object"}},"type":"object"},"v1SpectroTencentClusterRateEntity":{"description":"Spectro Tencent cluster request payload for estimating rate","properties":{"cloudConfig":{"$ref":"#/definitions/v1TencentClusterConfig"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1TencentMachinePoolConfigEntity"},"type":"array"}},"type":"object"},"v1SpectroVirtualClusterEntity":{"description":"Spectro virtual cluster request payload for create and update","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1VirtualClusterConfig"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"General cluster configuration like health, patching settings, namespace resource allocation, rbac"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1VirtualMachinePoolConfigEntity"},"type":"array"},"policies":{"$ref":"#/definitions/v1SpectroClusterPolicies"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"required":["cloudType","clusterConfig"],"type":"object"}},"type":"object"},"v1SpectroVsphereClusterEntity":{"description":"vSphere cluster request payload for create and update","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"properties":{"cloudAccountUid":{"description":"Cloud account uid to be used for cluster provisioning","type":"string"},"cloudConfig":{"$ref":"#/definitions/v1VsphereClusterConfigEntity"},"clusterConfig":{"$ref":"#/definitions/v1ClusterConfigEntity","description":"General cluster configuration like health, patching settings, namespace resource allocation, rbac"},"edgeHostUid":{"description":"Appliance (Edge Host) uid for Edge env","type":"string"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1VsphereMachinePoolConfigEntity"},"type":"array"},"policies":{"$ref":"#/definitions/v1SpectroClusterPolicies"},"profiles":{"items":{"$ref":"#/definitions/v1SpectroClusterProfileEntity"},"type":"array"}},"required":["cloudConfig"],"type":"object"}},"type":"object"},"v1SpectroVsphereClusterImportEntity":{"description":"Spectro Vsphere cluster import request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"properties":{"clusterConfig":{"$ref":"#/definitions/v1ImportClusterConfig"}},"type":"object"}},"type":"object"},"v1SpectroVsphereClusterRateEntity":{"description":"Vsphere cluster request payload for estimating rate","properties":{"cloudConfig":{"$ref":"#/definitions/v1VsphereClusterConfigEntity"},"machinepoolconfig":{"items":{"$ref":"#/definitions/v1VsphereMachinePoolConfigEntity"},"type":"array"}},"type":"object"},"v1SpotMarketOptions":{"description":"SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.","properties":{"maxPrice":{"description":"MaxPrice defines the maximum price the user is willing to pay for Spot VM instances","type":"string"}},"type":"object"},"v1SpotVMOptions":{"description":"SpotVMOptions defines the options relevant to running the Machine on Spot VMs","properties":{"maxPrice":{"description":"MaxPrice defines the maximum price the user is willing to pay for Spot VM instances","type":"string"}},"type":"object"},"v1SsoLogin":{"description":"Describes the allowed sso login details","properties":{"displayName":{"description":"Describes the display name for the sso login","type":"string"},"logo":{"description":"Describes the url path for the sso login","type":"string"},"name":{"description":"Describes the processed name for the sso login","type":"string"},"redirectUri":{"description":"Describes the sso login url for the authentication","type":"string"}},"type":"object"},"v1SsoLogins":{"description":"Describes the allowed sso logins","items":{"$ref":"#/definitions/v1SsoLogin"},"type":"array","uniqueItems":true},"v1StorageAccount":{"description":"Azure storage account provides a unique namespace for your Azure resources","properties":{"id":{"description":"Fully qualified resource ID for the resource","type":"string"},"kind":{"description":"The kind of the resource","type":"string"},"location":{"description":"The geo-location where the resource lives","type":"string"},"name":{"description":"The name of the resource","type":"string"}},"type":"object"},"v1StorageAccountEntity":{"description":"Azure storage account entity","properties":{"id":{"description":"Azure storage account id","type":"string"},"name":{"description":"Azure storage account name","type":"string"}},"type":"object"},"v1StorageContainer":{"description":"Azure storage container organizes a set of blobs, similar to a directory in a file system","properties":{"id":{"description":"Fully qualified resource ID for the resource.","type":"string"},"name":{"description":"The name of the resource","type":"string"},"type":{"description":"The type of the resource. E.g. \"Microsoft.Compute/virtualMachines\"","type":"string"}},"type":"object"},"v1StorageCost":{"description":"Cloud storage cost","properties":{"discountedUsage":{"description":"Cloud storage upper limit which is free.","type":"string"},"price":{"description":"Array of cloud storage range prices","items":{"$ref":"#/definitions/v1StoragePrice"},"type":"array"}},"type":"object"},"v1StoragePrice":{"description":"Cloud storage price within an upper limit.","properties":{"limit":{"description":"Upper limit of cloud storage usage","type":"string"},"price":{"description":"Price of cloud storage type","type":"string"}},"type":"object"},"v1StorageRate":{"description":"Storage estimated rate information","properties":{"iops":{"format":"float64","type":"number"},"rate":{"format":"float64","type":"number","x-omitempty":false},"sizeGB":{"format":"float64","type":"number"},"throughput":{"format":"float64","type":"number"},"type":{"type":"string"}},"type":"object"},"v1StorageType":{"description":"Cloud cloud Storage type details","properties":{"cost":{"$ref":"#/definitions/v1StorageCost"},"iopsCost":{"$ref":"#/definitions/v1StorageCost"},"kind":{"description":"kind of storage type","type":"string"},"name":{"description":"Name of the storage type","type":"string"},"throughputCost":{"$ref":"#/definitions/v1StorageCost"}},"type":"object"},"v1StripeKey":{"description":"Stripe key object","properties":{"publishKey":{"description":"Publish stripe key","type":"string"}}},"v1Subnet":{"properties":{"cidrBlock":{"description":"CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.","type":"string"},"name":{"type":"string"},"securityGroupName":{"description":"Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes","type":"string"}},"type":"object"},"v1Subscription":{"description":"Azure Subscription Type","properties":{"authorizationSource":{"description":"The authorization source of the request. Valid values are one or more combinations of Legacy, RoleBased, Bypassed, Direct and Management","type":"string"},"displayName":{"description":"The subscription display name","type":"string"},"state":{"description":"The subscription state. Possible values are Enabled, Warned, PastDue, Disabled, and Deleted.","type":"string"},"subscriptionId":{"description":"The subscription ID","type":"string"}},"type":"object"},"v1SyftDependency":{"description":"Compliance Scan Syft Dependency","properties":{"name":{"type":"string"},"type":{"type":"string"},"version":{"type":"string"}}},"v1SyftDependencyEntity":{"description":"Syft dependency","properties":{"name":{"type":"string"},"type":{"type":"string"},"version":{"type":"string"}}},"v1SyftEntity":{"description":"Syft response","properties":{"report":{"$ref":"#/definitions/v1SyftReportEntity"},"requestUid":{"type":"string"},"status":{"enum":["Completed","InProgress","Failed","Initiated"],"type":"string"}},"required":["requestUid","status","report"]},"v1SyftImageContext":{"description":"Compliance Scan Syft Image Context","properties":{"containerName":{"type":"string"},"namespace":{"type":"string"},"podName":{"type":"string"}}},"v1SyftReport":{"description":"Compliance Scan Syft Report","properties":{"dependencies":{"items":{"$ref":"#/definitions/v1SyftDependency"},"type":"array"},"image":{"type":"string"},"imageContexts":{"items":{"$ref":"#/definitions/v1SyftImageContext"},"type":"array"},"isSBOMExist":{"type":"boolean"},"state":{"type":"string"},"time":{"$ref":"#/definitions/v1Time"},"vulnerabilities":{"items":{"$ref":"#/definitions/v1SyftVulnerability"},"type":"array"},"vulnerabilitySummary":{"$ref":"#/definitions/v1SyftVulnerabilitySummary"}}},"v1SyftReportEntity":{"description":"Syft report","properties":{"batchNo":{"format":"int32","type":"integer"},"batchSize":{"format":"int32","type":"integer"},"dependencies":{"items":{"$ref":"#/definitions/v1SyftDependencyEntity"},"type":"array"},"image":{"type":"string"},"imageContexts":{"items":{"$ref":"#/definitions/v1SyftImageContext"},"type":"array"},"sbom":{"type":"string"},"time":{"$ref":"#/definitions/v1Time"},"vulnerabilities":{"items":{"$ref":"#/definitions/v1SyftVulnerabilityEntity"},"type":"array"},"vulnerabilitySummary":{"$ref":"#/definitions/v1SyftVulnerabilitySummaryEntity"}}},"v1SyftScanContext":{"description":"Compliance Scan Syft Context","properties":{"format":{"type":"string"},"labelSelector":{"type":"string"},"namespace":{"type":"string"},"podName":{"type":"string"},"scope":{"type":"string"}}},"v1SyftVulnerability":{"description":"Compliance Scan Syft Vulnerability","properties":{"fixedIn":{"type":"string"},"installed":{"type":"string"},"name":{"type":"string"},"severity":{"type":"string"},"type":{"type":"string"},"vulnerability":{"type":"string"}}},"v1SyftVulnerabilityEntity":{"description":"Syft vulnerability","properties":{"fixedIn":{"type":"string"},"installed":{"type":"string"},"name":{"type":"string"},"severity":{"type":"string"},"type":{"type":"string"},"vulnerability":{"type":"string"}}},"v1SyftVulnerabilitySummary":{"description":"Compliance Scan Syft Vulnerability Summary","properties":{"critical":{"format":"int32","type":"integer"},"high":{"format":"int32","type":"integer"},"low":{"format":"int32","type":"integer"},"medium":{"format":"int32","type":"integer"},"negligible":{"format":"int32","type":"integer"},"unknown":{"format":"int32","type":"integer"}}},"v1SyftVulnerabilitySummaryEntity":{"description":"Syft vulnerability summary","properties":{"critical":{"format":"int32","type":"integer"},"high":{"format":"int32","type":"integer"},"low":{"format":"int32","type":"integer"},"medium":{"format":"int32","type":"integer"},"negligible":{"format":"int32","type":"integer"},"unknown":{"format":"int32","type":"integer"}}},"v1SysLogin":{"description":"System admin login input","properties":{"emailId":{"type":"string"},"password":{"format":"password","type":"string"},"username":{"type":"string"}},"type":"object"},"v1SysUserToken":{"description":"Auth token response","properties":{"Authorization":{"type":"string"},"IsEmailSet":{"type":"boolean","x-omitempty":false},"IsEmailVerified":{"type":"boolean","x-omitempty":false},"IsMfa":{"type":"boolean","x-omitempty":false},"IsPasswordReset":{"type":"boolean","x-omitempty":false}},"type":"object"},"v1SystemAdmin":{"description":"System Admin information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1SystemAdministratorSpec"},"status":{"$ref":"#/definitions/v1SystemAdministratorStatus"}},"type":"object"},"v1SystemAdminActivation":{"description":"System Administrator Activation Specification","properties":{"expiry":{"$ref":"#/definitions/v1Time"},"link":{"type":"string"}},"type":"object"},"v1SystemAdminEntity":{"description":"System Admin information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"$ref":"#/definitions/v1SystemAdministratorSpec"}},"type":"object"},"v1SystemAdminMfa":{"description":"System Administrator MFA configuration","properties":{"devices":{"items":{"type":"string"},"type":"array"},"state":{"type":"string"}},"type":"object"},"v1SystemAdminProfile":{"description":"System Administrator Profile Entity","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"$ref":"#/definitions/v1SystemAdminProfileSpec"}},"type":"object"},"v1SystemAdminProfileSpec":{"description":"System Administrator Profile Specification","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"}},"type":"object"},"v1SystemAdministratorSpec":{"description":"System Administrator Entity Specification","properties":{"adminType":{"enum":["AccountAdmin","OperationAdmin"],"type":"string"},"emailId":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"mfa":{"$ref":"#/definitions/v1SystemAdminMfa","type":"string"}},"required":["firstName","lastName","emailId","adminType"],"type":"object"},"v1SystemAdministratorStatus":{"description":"System Administrator Status","properties":{"activation":{"$ref":"#/definitions/v1SystemAdminActivation"},"createdBy":{"type":"string"},"lastPasswordUpdate":{"$ref":"#/definitions/v1Time"},"lastSignIn":{"$ref":"#/definitions/v1Time"},"state":{"type":"string"}},"type":"object"},"v1SystemAdmins":{"description":"List of System Admin information's","properties":{"items":{"items":{"$ref":"#/definitions/v1SystemAdmin"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1SystemAwsAccount":{"description":"SystemAdmin","properties":{"spec":{"$ref":"#/definitions/v1SystemAwsSpec"}},"type":"object"},"v1SystemAwsImage":{"description":"SystemAdmin","properties":{"spec":{"$ref":"#/definitions/v1SystemAwsImageSpec"}},"type":"object"},"v1SystemAwsImageSpec":{"description":"system aws account specifications","properties":{"goldenImageRegion":{"type":"string"}}},"v1SystemAwsSpec":{"description":"system aws account specifications","properties":{"accessKey":{"type":"string"},"secretKey":{"type":"string"}}},"v1SystemAwsStsAccount":{"description":"System AWS Gov account specifications","properties":{"accessKey":{"type":"string"},"accountId":{"type":"string"},"secretKey":{"type":"string"}}},"v1SystemAzureAccount":{"description":"SystemAdmin","properties":{"spec":{"$ref":"#/definitions/v1SystemAzureSpec"}},"type":"object"},"v1SystemAzureSpec":{"description":"system azure account specifications","properties":{"clientId":{"type":"string"},"clientSecret":{"type":"string"},"subscriptionId":{"type":"string"},"tenantId":{"type":"string"}}},"v1SystemAzureStorage":{"description":"SystemAdmin","properties":{"spec":{"$ref":"#/definitions/v1SystemAzureStorageSpec"}},"type":"object"},"v1SystemAzureStorageSpec":{"description":"system aws account specifications","properties":{"accessKey":{"type":"string"},"container":{"type":"string"},"storageName":{"type":"string"}}},"v1SystemBackupConfigSpec":{"description":"system backup config spec","properties":{"ftp":{"$ref":"#/definitions/v1SystemFtpSpec"},"hourOfTheDay":{"type":"integer","x-omitempty":false},"interval":{"type":"integer","x-omitempty":false},"retentionPeriod":{"type":"integer","x-omitempty":false}},"type":"object"},"v1SystemBackupFtpConfigSpec":{"description":"system backup config spec","properties":{"backupSpec":{"$ref":"#/definitions/v1SystemBackupSpec"},"ftp":{"$ref":"#/definitions/v1SystemFtpSpec"}},"type":"object"},"v1SystemBackupS3ConfigSpec":{"description":"system backup config spec","properties":{"backupSpec":{"$ref":"#/definitions/v1SystemBackupSpec"},"s3":{"$ref":"#/definitions/v1SystemS3Spec"}},"type":"object"},"v1SystemBackupSpec":{"description":"system backup config spec","properties":{"hourOfTheDay":{"type":"integer","x-omitempty":false},"interval":{"type":"integer","x-omitempty":false},"retentionPeriod":{"type":"integer","x-omitempty":false}},"type":"object"},"v1SystemCertificateSpec":{"description":"system smtp config spec","properties":{"caCert":{"type":"string"},"crt":{"type":"string"},"insecureSkipVerify":{"type":"boolean"},"key":{"type":"string"}},"type":"object"},"v1SystemConfigAuth":{"description":"System config auth","properties":{"enforceServiceAuthToken":{"type":"boolean","x-omitempty":false},"enforceTlsVerify":{"type":"boolean","x-omitempty":false}}},"v1SystemConfigCluster":{"description":"System config cluster","properties":{"stableEndpointAccess":{"type":"boolean","x-omitempty":false}}},"v1SystemConfigDomainSpec":{"description":"system domain config spec","properties":{"apiServer":{"type":"string"},"derivedApiServer":{"type":"string"},"derivedRootDomain":{"type":"string"},"rootDomain":{"type":"string"},"urlProtocol":{"type":"string"}},"type":"object"},"v1SystemConfigStoreEntity":{"properties":{"key":{"type":"string","x-omitempty":false},"value":{"type":"string","x-omitempty":false}},"required":["key","value"],"type":"object"},"v1SystemCryptoData":{"description":"SystemAdmin","properties":{"input":{"type":"string"},"result":{"type":"string"}},"type":"object"},"v1SystemCryptoInput":{"description":"SystemAdmin","properties":{"input":{"type":"string"}},"type":"object"},"v1SystemEdgeImage":{"description":"SystemAdmin","properties":{"spec":{"$ref":"#/definitions/v1SystemEdgeImageSpec"}},"type":"object"},"v1SystemEdgeImageSpec":{"description":"system edge account specifications","properties":{"caCert":{"type":"string"},"imagesHostEndpoint":{"type":"string"},"insecureSkipVerify":{"type":"boolean"}}},"v1SystemEdgeNativeImage":{"description":"SystemAdmin","properties":{"spec":{"$ref":"#/definitions/v1SystemEdgeNativeImageSpec"}},"type":"object"},"v1SystemEdgeNativeImageSpec":{"description":"system edge-native account specifications","properties":{"caCert":{"type":"string"},"imagesHostEndpoint":{"type":"string"},"insecureSkipVerify":{"type":"boolean"},"stylusImagesEndpoint":{"type":"string"}}},"v1SystemFtpSpec":{"description":"system ftp config spec","properties":{"dir":{"type":"string","x-omitempty":false},"password":{"type":"string","x-omitempty":false},"server":{"type":"string","x-omitempty":false},"username":{"type":"string","x-omitempty":false}},"type":"object"},"v1SystemGcpAccount":{"description":"SystemAdmin","properties":{"spec":{"$ref":"#/definitions/v1SystemGcpSpec"}},"type":"object"},"v1SystemGcpImage":{"description":"SystemAdmin","properties":{"spec":{"$ref":"#/definitions/v1SystemGcpImageSpec"}},"type":"object"},"v1SystemGcpImageSpec":{"description":"system gcp account specifications","properties":{"imageProject":{"type":"string"}}},"v1SystemGcpSpec":{"description":"system gcp account specifications","properties":{"json":{"type":"string"}}},"v1SystemGitAuthSpec":{"description":"system git auth account specifications","properties":{"_type":{"type":"string"},"password":{"type":"string"},"token":{"type":"string"},"username":{"$ref":"#/definitions/v1SystemGitAuthSpec"}}},"v1SystemGithubSsoSpec":{"description":"system sso github config spec","properties":{"clientId":{"type":"string"},"clientSecretKey":{"type":"string"},"isEnabled":{"type":"boolean"},"logoUrl":{"type":"string","x-omitempty":false}},"type":"object"},"v1SystemKubectlSpec":{"description":"system web kubectl config spec","properties":{"endpoint":{"type":"string"},"isEnabled":{"type":"boolean"}},"type":"object"},"v1SystemLibvirtImage":{"description":"SystemAdmin","properties":{"spec":{"$ref":"#/definitions/v1SystemLibvirtImageSpec"}},"type":"object"},"v1SystemLibvirtImageSpec":{"description":"system libvirt account specifications","properties":{"caCert":{"type":"string"},"imagesHostEndpoint":{"type":"string"},"insecureSkipVerify":{"type":"boolean"}}},"v1SystemLoggerSpec":{"description":"system logger config spec","properties":{"format":{"type":"string"},"level":{"type":"string"}},"type":"object"},"v1SystemMaasImage":{"description":"SystemAdmin","properties":{"spec":{"$ref":"#/definitions/v1SystemMaasImageSpec"}},"type":"object"},"v1SystemMaasImageSpec":{"description":"system maas account specifications","properties":{"caCert":{"type":"string"},"imagesHostEndpoint":{"type":"string"},"insecureSkipVerify":{"type":"boolean"}}},"v1SystemOciImageRegistry":{"description":"system web kubectl config spec","properties":{"baseContentPath":{"type":"string"},"caCert":{"type":"string"},"endpoint":{"type":"string"},"insecureSkipVerify":{"type":"boolean"},"mirrorRegistries":{"type":"string"},"name":{"type":"string"},"password":{"type":"string"},"username":{"type":"string"}},"type":"object"},"v1SystemOidcClaims":{"properties":{"Email":{"type":"string","x-omitempty":false},"FirstName":{"type":"string","x-omitempty":false},"LastName":{"type":"string","x-omitempty":false},"SpectroTeam":{"type":"string","x-omitempty":false}},"type":"object"},"v1SystemOidcClientSpec":{"description":"system sso oidc config spec","properties":{"callbackUrl":{"type":"string","x-omitempty":false},"clientId":{"type":"string","x-omitempty":false},"clientSecret":{"type":"string","x-omitempty":false},"isEnabled":{"type":"boolean","x-omitempty":false},"issuerUrl":{"description":"the issuer is the URL identifier for the service","type":"string","x-omitempty":false},"logoUrl":{"type":"string","x-omitempty":false},"requiredClaims":{"$ref":"#/definitions/v1SystemOidcClaims"},"scopes":{"items":{"type":"string"},"type":"array","x-omitempty":false}},"type":"object"},"v1SystemOpenstackImage":{"description":"SystemAdmin","properties":{"spec":{"$ref":"#/definitions/v1SystemOpenstackImageSpec"}},"type":"object"},"v1SystemOpenstackImageSpec":{"description":"system openstack account specifications","properties":{"imagesHostEndpoint":{"type":"string"}}},"v1SystemPasswordPolicySpec":{"description":"system password policy","properties":{"creationTimestamp":{"$ref":"#/definitions/v1Time"},"expiryDurationInDays":{"type":"integer"},"firstReminderInDays":{"type":"integer"},"isRegex":{"type":"boolean"},"minLength":{"type":"integer"},"minNumOfBlockLetters":{"type":"integer"},"minNumOfDigits":{"type":"integer"},"minNumOfSmallLetters":{"type":"integer"},"minNumOfSpecialCharacters":{"type":"integer"},"regex":{"type":"string"},"reminderFrequency":{"type":"integer"},"updateTimestamp":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1SystemPlan":{"description":"system plan","properties":{"freeCredits":{"items":{"$ref":"#/definitions/v1SystemPlanCredit"},"type":"array"},"planLimit":{"$ref":"#/definitions/v1SystemPlanLimit"},"slaCredits":{"items":{"$ref":"#/definitions/v1SystemPlanCredit"},"type":"array"},"systemStartDate":{"$ref":"#/definitions/v1Time"}}},"v1SystemPlanCredit":{"description":"Plan Credit","properties":{"cpuCoreHours":{"format":"int64","type":"number","x-omitempty":false},"creditUid":{"type":"string"},"expiry":{"$ref":"#/definitions/v1Time","description":"credit expiry time"},"name":{"type":"string"},"start":{"$ref":"#/definitions/v1Time","description":"credit start time"},"type":{"enum":["Pure","Alloy"],"type":"string"}},"required":["type"]},"v1SystemPlanLimit":{"description":"System Monthly Plan Limit","properties":{"alloy":{"$ref":"#/definitions/v1SystemPlanLimitSpec"},"isUnlimited":{"description":"is unlimited cpu core hours","type":"boolean","x-omitempty":false},"pure":{"$ref":"#/definitions/v1SystemPlanLimitSpec"}}},"v1SystemPlanLimitSpec":{"description":"Monthly Plan Limit spec","properties":{"cpuCoreHours":{"description":"cpu cores hours","format":"int64","type":"integer","x-omitempty":false},"overageLimitPercentage":{"default":25,"description":"overage limit in percentage","format":"int8","type":"integer","x-omitempty":false},"warnLimitPercentage":{"default":90,"description":"warning limit in percentage","format":"int8","type":"integer","x-omitempty":false}}},"v1SystemPlanLimitUpdate":{"description":"System Plan limit change update entity","properties":{"planLimit":{"$ref":"#/definitions/v1SystemPlanLimit"}}},"v1SystemProductUsage":{"description":"Yearly usage","properties":{"allocatedCredits":{"description":"Allocated credits","format":"int64","type":"number"},"breachedCredits":{"description":"Credits exceeded the allocated and free credits","format":"float64","type":"number"},"freeSlaCredits":{"description":"Free allocated SLA credits","format":"int64","type":"number"},"usedCredits":{"description":"Used credits","format":"float64","type":"number"}}},"v1SystemProxySpec":{"description":"system proxy config spec","properties":{"httpProxy":{"type":"string"},"httpsProxy":{"type":"string"},"noProxy":{"type":"string"}},"type":"object"},"v1SystemRateLimit":{"description":"system rate-limit","properties":{"isActive":{"type":"boolean"}}},"v1SystemRegistry":{"description":"Registry configuration","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1RegistryConf"}},"type":"object"},"v1SystemResourceLimit":{"properties":{"kind":{"$ref":"#/definitions/v1ResourceLimitType","type":"string","x-omitempty":false},"limit":{"format":"int64","type":"number","x-omitempty":false}}},"v1SystemResourceLimits":{"description":"System resource limits. Supported resources keys are 'user','project','apiKey','team','role','cloudaccount','clusterprofile','workspace','registry','privategateway','location','certificate','macro','sshkey','alert','spectrocluster','edgehost'.","properties":{"resources":{"items":{"$ref":"#/definitions/v1SystemResourceLimit"},"type":"array","uniqueItems":true}}},"v1SystemRetentionPolicy":{"description":"system retention policy","properties":{"retentionPeriod":{"type":"integer","x-omitempty":false}},"type":"object"},"v1SystemReverseProxy":{"description":"system config reverse proxy","properties":{"caCert":{"type":"string"},"clientCert":{"type":"string"},"clientKey":{"type":"string"},"port":{"type":"integer"},"protocol":{"enum":["http","https"],"type":"string"},"server":{"type":"string"},"vHostPort":{"type":"integer"}}},"v1SystemS3Spec":{"description":"system backup s3 storage config spec","properties":{"accessKey":{"type":"string","x-omitempty":false},"bucket":{"type":"string","x-omitempty":false},"folder":{"type":"string","x-omitempty":false},"region":{"type":"string","x-omitempty":false},"secretKey":{"type":"string","x-omitempty":false}},"type":"object"},"v1SystemScarSpec":{"description":"system scar config spec","properties":{"baseContentPath":{"type":"string"},"caCert":{"type":"string"},"endpoint":{"type":"string"},"insecureVerify":{"type":"boolean"},"password":{"type":"string"},"username":{"type":"string"}},"type":"object"},"v1SystemScarValidationResponse":{"description":"system proxy config spec","properties":{"spectroVersion":{"type":"string"}},"type":"object"},"v1SystemSecurityMode":{"description":"System service mode","properties":{"securityMode":{"type":"string"}}},"v1SystemServiceLogin":{"description":"System service login input","properties":{"authToken":{"description":"authToken helps in two step verification for the authorization.","type":"string"},"isSystem":{"type":"boolean"},"overlordUid":{"type":"string"},"serviceName":{"type":"string"},"serviceVersion":{"type":"string"},"spectroClusterUid":{"type":"string"},"tenantUid":{"type":"string"}},"type":"object"},"v1SystemSmtpSpec":{"description":"system smtp config spec","properties":{"fromEmailId":{"type":"string"},"insecureSkipVerifyTls":{"type":"boolean"},"password":{"type":"string"},"smtpPort":{"type":"integer"},"smtpServer":{"type":"string"},"userName":{"type":"string"}},"type":"object"},"v1SystemSsoAuthSpec":{"description":"system sso config spec","properties":{"github":{"$ref":"#/definitions/v1SystemGithubSsoSpec"},"oidcAuthSpecs":{"additionalProperties":{"$ref":"#/definitions/v1SystemOidcClientSpec"},"type":"object"}},"type":"object"},"v1SystemSsoSpec":{"description":"system sso config spec","properties":{"acsUrlRoot":{"type":"string"},"acsUrlScheme":{"type":"string"},"apiVersion":{"type":"string"},"audienceUrl":{"type":"string"},"authSpec":{"$ref":"#/definitions/v1SystemSsoAuthSpec"},"entityId":{"type":"string"}},"type":"object"},"v1SystemStartDate":{"description":"system start date","properties":{"systemStartDate":{"$ref":"#/definitions/v1Time"}}},"v1SystemStorageS3ConfigSpec":{"description":"system storage s3 config spec","properties":{"isEnabled":{"type":"boolean"},"retentionPolicy":{"$ref":"#/definitions/v1SystemRetentionPolicy"},"s3":{"$ref":"#/definitions/v1SystemS3Spec"}},"type":"object"},"v1SystemTencentAccount":{"description":"SystemAdmin","properties":{"spec":{"$ref":"#/definitions/v1SystemTencentSpec"}},"type":"object"},"v1SystemTencentSpec":{"description":"system tencent account specifications","properties":{"secretId":{"type":"string"},"secretKey":{"type":"string"}}},"v1SystemTimeseriesMetrics":{"description":"system timeseries metrics config","properties":{"archivalInterval":{"type":"integer"},"batchInterval":{"type":"integer"},"enabled":{"type":"boolean","x-omitempty":false},"retentionPeriod":{"type":"integer"}},"type":"object"},"v1SystemTimeseriesSpec":{"description":"system timeseries config spec","properties":{"machine":{"$ref":"#/definitions/v1SystemTimeseriesMetrics"},"pod":{"$ref":"#/definitions/v1SystemTimeseriesMetrics"}},"type":"object"},"v1SystemUsage":{"description":"System usage billing object","properties":{"planLimit":{"$ref":"#/definitions/v1PlanLimit"},"usageBillingPeriod":{"$ref":"#/definitions/v1InvoiceBillingPeriod"},"yearlyUsages":{"description":"List of every year system usage","items":{"$ref":"#/definitions/v1YearlyUsage"},"type":"array","uniqueItems":true}}},"v1SystemUserMe":{"description":"User information wrt permissions","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1SystemUserSpec"},"status":{"$ref":"#/definitions/v1SystemUserMeStatus"}},"type":"object"},"v1SystemUserMeStatus":{"description":"User status with permissions","properties":{"isEmailSet":{"type":"boolean","x-omitempty":false},"isEmailVerified":{"type":"boolean","x-omitempty":false},"isMfaEnabled":{"type":"boolean","x-omitempty":false},"isPasswordReset":{"type":"boolean","x-omitempty":false},"lastEmailUpdateTime":{"$ref":"#/definitions/v1Time"},"lastEmailVerifiedTime":{"$ref":"#/definitions/v1Time"},"lastLoginTime":{"$ref":"#/definitions/v1Time"},"lastPasswordUpdateTime":{"$ref":"#/definitions/v1Time"}}},"v1SystemUserSpec":{"description":"User specifications","properties":{"adminType":{"description":"Admin type","type":"string"},"emailId":{"description":"System User's email id","type":"string"}}},"v1SystemVersionInfo":{"description":"system version info","properties":{"version":{"type":"string"}},"type":"object"},"v1SystemVsphereImage":{"description":"SystemAdmin","properties":{"spec":{"$ref":"#/definitions/v1SystemVsphereImageSpec"}},"type":"object"},"v1SystemVsphereImageSpec":{"description":"system vsphere account specifications","properties":{"caCert":{"type":"string"},"imagesHostEndpoint":{"type":"string"},"insecureSkipVerify":{"type":"boolean"},"overlordOvaLocation":{"type":"string"}}},"v1TagFilter":{"description":"Tag Filter create spec","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"$ref":"#/definitions/v1TagFilterSpec"}},"type":"object"},"v1TagFilterGroup":{"properties":{"conjunction":{"$ref":"#/definitions/v1SearchFilterConjunctionOperator"},"filters":{"items":{"$ref":"#/definitions/v1TagFilterItem"},"type":"array","uniqueItems":true}}},"v1TagFilterItem":{"properties":{"key":{"type":"string"},"negation":{"type":"boolean"},"operator":{"$ref":"#/definitions/v1SearchFilterKeyValueOperator"},"values":{"items":{"type":"string"},"type":"array","uniqueItems":true}}},"v1TagFilterSpec":{"description":"Filter create spec","properties":{"filterGroup":{"$ref":"#/definitions/v1TagFilterGroup"}},"type":"object"},"v1TagFilterSummary":{"description":"Filter summary object","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1TagFilterSpec"}},"type":"object"},"v1Taint":{"description":"Taint","properties":{"effect":{"enum":["NoSchedule","PreferNoSchedule","NoExecute"],"type":"string"},"key":{"description":"The taint key to be applied to a node","type":"string"},"timeAdded":{"$ref":"#/definitions/v1Time"},"value":{"description":"The taint value corresponding to the taint key.","type":"string"}},"type":"object"},"v1Team":{"description":"Team information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1TeamSpec"},"status":{"$ref":"#/definitions/v1TeamStatus"}},"type":"object"},"v1TeamPatch":{"items":{"$ref":"#/definitions/v1HttpPatch"},"type":"array"},"v1TeamRoleMap":{"properties":{"roles":{"items":{"type":"string"},"type":"array"},"teamId":{"type":"string"}}},"v1TeamSpec":{"description":"Team specifications","properties":{"roles":{"items":{"type":"string"},"type":"array","uniqueItems":true},"sources":{"items":{"type":"string"},"type":"array","uniqueItems":true},"users":{"items":{"type":"string"},"type":"array","uniqueItems":true}}},"v1TeamSpecSummary":{"properties":{"emailId":{"type":"string"},"projects":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"},"roles":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"},"users":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"}},"type":"object"},"v1TeamStatus":{"description":"Team status","type":"object"},"v1TeamSummary":{"description":"Team summary","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1TeamSpecSummary"},"status":{"$ref":"#/definitions/v1TeamStatus"}},"type":"object"},"v1TeamSummarySortFields":{"enum":["name","creationTimestamp"],"type":"string","x-nullable":true},"v1TeamSummarySortSpec":{"properties":{"field":{"$ref":"#/definitions/v1TeamSummarySortFields"},"order":{"$ref":"#/definitions/v1SortOrder"}}},"v1TeamTenantRolesEntity":{"properties":{"roles":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"}},"type":"object"},"v1TeamTenantRolesUpdate":{"properties":{"roles":{"items":{"type":"string"},"type":"array"}},"type":"object"},"v1Teams":{"properties":{"items":{"items":{"$ref":"#/definitions/v1Team"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1TeamsBatch":{"items":{"$ref":"#/definitions/v1Team"},"type":"array","uniqueItems":true},"v1TeamsFilterSpec":{"description":"Teams filter spec","properties":{"name":{"$ref":"#/definitions/v1FilterString"}}},"v1TeamsMetadata":{"properties":{"items":{"items":{"$ref":"#/definitions/v1ObjectEntity"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1TeamsSummary":{"description":"Deprecated, Use v1UsersSummaryList - Returns User summary","properties":{"items":{"items":{"$ref":"#/definitions/v1TeamSummary"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1TeamsSummaryList":{"description":"Returns Team summary","properties":{"items":{"items":{"$ref":"#/definitions/v1TeamSummary"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1TeamsSummarySpec":{"description":"Teams filter summary spec","properties":{"filter":{"$ref":"#/definitions/v1TeamsFilterSpec"},"sort":{"items":{"$ref":"#/definitions/v1TeamSummarySortSpec"},"type":"array","uniqueItems":true}}},"v1Tenant":{"description":"Tenant","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1TenantSpec"},"status":{"$ref":"#/definitions/v1TenantStatus"}},"type":"object"},"v1TenantActivate":{"description":"Activate/Deactivate tenant","properties":{"isActive":{"default":true,"type":"boolean"}},"type":"object"},"v1TenantActivity":{"description":"Active tenant and clusters data","properties":{"clustersInfo":{"$ref":"#/definitions/v1ClustersInfo"},"org":{"type":"string"},"planType":{"type":"string"},"totalProjects":{"format":"int64","type":"number"},"totalUsers":{"format":"int64","type":"number"},"uid":{"type":"string"},"users":{"items":{"$ref":"#/definitions/v1UserActivityInfo"},"type":"array","uniqueItems":true}},"type":"object"},"v1TenantAddressPatch":{"description":"Tenant Address","properties":{"address":{"$ref":"#/definitions/v1Address"}},"type":"object"},"v1TenantAssetCert":{"description":"tenant cert","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1Cert"}},"type":"object"},"v1TenantAssetCerts":{"properties":{"items":{"items":{"$ref":"#/definitions/v1TenantAssetCert"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1TenantBasicEntity":{"description":"Tenant Basic param","properties":{"emailId":{"type":"string"},"orgName":{"type":"string"}},"type":"object"},"v1TenantCleanUpStatus":{"description":"Tenant CleanUp Status","properties":{"cleanUpError":{"type":"string"},"cleanUpStages":{"type":"string"},"cleanUpTimestamp":{"$ref":"#/definitions/v1Time"},"cleanedResources":{"items":{"type":"string"},"type":"array"},"isCompleted":{"type":"boolean","x-omitempty":false},"isInProgress":{"type":"boolean","x-omitempty":false}},"type":"object"},"v1TenantClusterSettings":{"properties":{"nodesAutoRemediationSetting":{"$ref":"#/definitions/v1NodesAutoRemediationSettings"}}},"v1TenantContractSpec":{"description":"Tenant contract settings","properties":{"acceptedTime":{"$ref":"#/definitions/v1Time","description":"If the contract is accepted offline, set the accepted time"},"isAccepted":{"description":"If the contract is accepted offline, then set this field to true","type":"boolean"},"isRequired":{"description":"Is the contract required, for on-prem installation it will be false","type":"boolean"}},"required":["isRequired","isAccepted"],"type":"object"},"v1TenantDomains":{"description":"Tenant domains","properties":{"domains":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1TenantEmailPatch":{"description":"Tenant EmailId","properties":{"emailId":{"type":"string"}},"type":"object"},"v1TenantEnableClusterGroup":{"description":"Enable or Disable cluster group for a tenant","properties":{"hideSystemClusterGroups":{"type":"boolean","x-omitempty":false},"isClusterGroupEnabled":{"description":"Deprecated. Use hideSystemClusterGroups field","type":"boolean","x-omitempty":false}}},"v1TenantEntity":{"description":"Tenant Entity","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1TenantSpecEntity"}},"type":"object"},"v1TenantFreemium":{"description":"Tenant freemium configuration","properties":{"activeClustersLimit":{"type":"integer","x-omitempty":false},"isFreemium":{"type":"boolean","x-omitempty":false},"isUnlimited":{"type":"boolean","x-omitempty":false},"overageUsageLimit":{"format":"float64","type":"number","x-omitempty":false},"totalUsageLimit":{"format":"float64","type":"number","x-omitempty":false}}},"v1TenantFreemiumUsage":{"properties":{"isFreemium":{"type":"boolean","x-omitempty":false},"isUnlimited":{"type":"boolean","x-omitempty":false},"limit":{"$ref":"#/definitions/v1FreemiumUsageLimit"},"usage":{"$ref":"#/definitions/v1FreemiumUsage"}},"type":"object"},"v1TenantOidcClaims":{"properties":{"Email":{"type":"string","x-omitempty":false},"FirstName":{"type":"string","x-omitempty":false},"LastName":{"type":"string","x-omitempty":false},"SpectroTeam":{"type":"string","x-omitempty":false}},"type":"object"},"v1TenantOidcClientSpec":{"description":"Tenant","properties":{"callbackUrl":{"type":"string","x-omitempty":false},"clientId":{"type":"string","x-omitempty":false},"clientSecret":{"type":"string","x-omitempty":false},"defaultTeams":{"items":{"type":"string"},"type":"array","x-omitempty":false},"isSsoEnabled":{"type":"boolean","x-omitempty":false},"issuerUrl":{"description":"the issuer is the URL identifier for the service","type":"string","x-omitempty":false},"logoutUrl":{"type":"string","x-omitempty":false},"requiredClaims":{"$ref":"#/definitions/v1TenantOidcClaims"},"scopes":{"items":{"type":"string"},"type":"array","x-omitempty":false},"scopesDelimiter":{"type":"string","x-omitempty":false},"syncSsoTeams":{"type":"boolean","x-omitempty":false}},"type":"object"},"v1TenantPasswordPolicyEntity":{"description":"Tenant Password Policy Entity","properties":{"creationTimestamp":{"$ref":"#/definitions/v1Time"},"expiryDurationInDays":{"type":"integer"},"firstReminderInDays":{"type":"integer"},"isRegex":{"type":"boolean"},"minLength":{"type":"integer"},"minNumOfBlockLetters":{"type":"integer"},"minNumOfDigits":{"type":"integer"},"minNumOfSmallLetters":{"type":"integer"},"minNumOfSpecialCharacters":{"type":"integer"},"regex":{"type":"string"},"updateTimestamp":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1TenantResourceLimit":{"properties":{"kind":{"$ref":"#/definitions/v1ResourceLimitType","type":"string"},"label":{"type":"string"},"limit":{"format":"int64","type":"number","x-omitempty":false}}},"v1TenantResourceLimitEntity":{"properties":{"kind":{"$ref":"#/definitions/v1ResourceLimitType","type":"string","x-omitempty":false},"limit":{"format":"int64","type":"number","x-omitempty":false}}},"v1TenantResourceLimits":{"description":"Tenant resource limits","properties":{"resources":{"items":{"$ref":"#/definitions/v1TenantResourceLimit"},"type":"array","uniqueItems":true}}},"v1TenantResourceLimitsEntity":{"description":"Tenant resource limits. Supported resources keys are 'user','project','apiKey','team','role','cloudaccount','clusterprofile','workspace','registry','privategateway','location','certificate','macro','sshkey','alert','spectrocluster','edgehost'.","properties":{"resources":{"items":{"$ref":"#/definitions/v1TenantResourceLimitEntity"},"type":"array","uniqueItems":true}}},"v1TenantSamlRequestSpec":{"description":"Tenant","properties":{"attributes":{"items":{"$ref":"#/definitions/v1TenantSamlSpecAttribute"},"type":"array"},"defaultTeams":{"items":{"type":"string"},"type":"array"},"federationMetadata":{"type":"string"},"identityProvider":{"type":"string"},"isSingleLogoutEnabled":{"type":"boolean"},"isSsoEnabled":{"type":"boolean"},"nameIdFormat":{"type":"string"},"syncSsoTeams":{"type":"boolean"}},"type":"object"},"v1TenantSamlSpec":{"description":"Tenant","properties":{"acsUrl":{"type":"string"},"attributes":{"items":{"$ref":"#/definitions/v1TenantSamlSpecAttribute"},"type":"array"},"audienceUrl":{"description":"same as entity id","type":"string"},"certificate":{"description":"certificate for slo","type":"string"},"defaultTeams":{"items":{"type":"string"},"type":"array"},"entityId":{"type":"string"},"federationMetadata":{"type":"string"},"identityProvider":{"type":"string"},"isSingleLogoutEnabled":{"type":"boolean","x-omitempty":false},"isSsoEnabled":{"type":"boolean","x-omitempty":false},"issuer":{"description":"same as entity id","type":"string"},"nameIdFormat":{"type":"string"},"serviceProviderMetadata":{"type":"string"},"singleLogoutUrl":{"description":"slo url","type":"string","x-omitempty":false},"syncSsoTeams":{"type":"boolean","x-omitempty":false}},"type":"object"},"v1TenantSamlSpecAttribute":{"properties":{"attributeValue":{"type":"string"},"mappedAttribute":{"type":"string"},"name":{"type":"string"},"nameFormat":{"type":"string"}},"type":"object"},"v1TenantSelfSignUpSpec":{"description":"Tenant sign up data","properties":{"emailId":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"loginMode":{"default":"devops","enum":["dev","devops"],"type":"string"},"notifyTenantAdmin":{"type":"boolean"},"orgName":{"type":"string"}},"required":["firstName","lastName","emailId","orgName"],"type":"object"},"v1TenantSpec":{"description":"Tenant Spec","properties":{"address":{"$ref":"#/definitions/v1Address"},"authType":{"type":"string"},"defaultLoginMode":{"type":"string"},"orgEmailId":{"type":"string"},"orgName":{"type":"string"},"planUid":{"type":"string"}},"type":"object"},"v1TenantSpecEntity":{"description":"Tenant Entity input","properties":{"address":{"$ref":"#/definitions/v1Address"},"authType":{"type":"string"},"emailId":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"loginMode":{"default":"devops","enum":["dev","devops"],"type":"string"},"orgEmailId":{"type":"string"},"orgName":{"type":"string"},"roles":{"items":{"type":"string"},"type":"array","uniqueItems":true},"ssoApp":{"type":"string"}},"type":"object"},"v1TenantSsoAuthProvidersEntity":{"properties":{"isEnabled":{"type":"boolean","x-omitempty":false},"ssoLogins":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1TenantStatus":{"description":"Tenant Status","properties":{"cleanUpStatus":{"$ref":"#/definitions/v1TenantCleanUpStatus"},"isActive":{"type":"boolean","x-omitempty":false},"toBeDeleted":{"type":"boolean","x-omitempty":false}},"type":"object"},"v1TenantUpgradeSettingsEntity":{"properties":{"enableLock":{"type":"boolean","x-omitempty":false},"supportedVersionsRange":{"type":"integer","x-omitempty":false}}},"v1TenantUsage":{"description":"Tenant usage object","properties":{"orgName":{"description":"Organization name","type":"string"},"tenantUid":{"description":"Tenant uid","type":"string"},"usedAlloyCredits":{"description":"Credits used by imported clusters","format":"float64","type":"number"},"usedPureCredits":{"description":"Credits used by managed clusters","format":"float64","type":"number"}}},"v1Tenants":{"description":"Tenants list","properties":{"items":{"items":{"$ref":"#/definitions/v1Tenant"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1TenantsAccountsNas":{"properties":{"failures":{"items":{"type":"string"},"type":"array"},"success":{"items":{"type":"string"},"type":"array"}},"type":"object"},"v1TenantsActivities":{"description":"Active tenants and clusters data","properties":{"tenants":{"additionalProperties":{"$ref":"#/definitions/v1TenantActivity"},"type":"object"}},"type":"object"},"v1TencentAccount":{"description":"Tencent cloud account information","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the account.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1TencentCloudAccount"},"status":{"$ref":"#/definitions/v1CloudAccountStatus"}},"type":"object"},"v1TencentAccounts":{"properties":{"items":{"items":{"$ref":"#/definitions/v1TencentAccount"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1TencentAvailabilityZone":{"description":"Tencent availability zone","properties":{"name":{"description":"Tencent availability zone name","type":"string"},"state":{"description":"Tencent availability zone state","type":"string"},"zoneId":{"description":"Tencent availability zone id","type":"string"}},"type":"object"},"v1TencentAvailabilityZones":{"description":"List of Tencent Availability zones","properties":{"zones":{"items":{"$ref":"#/definitions/v1TencentAvailabilityZone"},"type":"array"}},"required":["zones"],"type":"object"},"v1TencentCloudAccount":{"properties":{"secretId":{"description":"Tencent api secretID","type":"string"},"secretKey":{"description":"Tencent api secret key","type":"string"}},"required":["secretId","secretKey"],"type":"object"},"v1TencentCloudClusterConfigEntity":{"description":"Tencent cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1TencentClusterConfig"}},"type":"object"},"v1TencentCloudConfig":{"description":"TencentCloudConfig is the Schema for the tencentcloudconfigs API","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1TencentCloudConfigSpec"}},"type":"object"},"v1TencentCloudConfigSpec":{"description":"TencentCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api","properties":{"cloudAccountRef":{"$ref":"#/definitions/v1ObjectReference","description":"cloudAccountRef should point to the secret which contains TencentCloudAccount"},"clusterConfig":{"$ref":"#/definitions/v1TencentClusterConfig"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1TencentMachinePoolConfig"},"type":"array"}},"type":"object"},"v1TencentClusterConfig":{"description":"Cluster level configuration for tencent cloud and applicable for all the machine pools","properties":{"endpointAccess":{"$ref":"#/definitions/v1TkeEndpointAccess","description":"Endpoints specifies access to this cluster's control plane endpoints"},"region":{"type":"string"},"sshKeyIDs":{"items":{"type":"string"},"type":"array"},"vpcID":{"description":"VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created","type":"string"}},"required":["region"],"type":"object"},"v1TencentInstanceTypes":{"description":"List of Tencent instance types","properties":{"instanceTypes":{"items":{"$ref":"#/definitions/v1InstanceType"},"type":"array"}},"type":"object"},"v1TencentKeypair":{"description":"Tencent Keypair entity","properties":{"id":{"description":"Tencent keypair id","type":"string"},"name":{"description":"Tencent keypair name","type":"string"},"publickey":{"description":"Tencent public key","type":"string"}},"type":"object"},"v1TencentKeypairs":{"description":"List of Tencent keypairs","properties":{"keypairs":{"items":{"$ref":"#/definitions/v1TencentKeypair"},"type":"array"}},"type":"object"},"v1TencentMachine":{"description":"Tencent cloud VM definition","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the machine.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1TencentMachineSpec"},"status":{"$ref":"#/definitions/v1CloudMachineStatus"}},"type":"object"},"v1TencentMachinePoolCloudConfigEntity":{"properties":{"azs":{"items":{"type":"string"},"type":"array"},"instanceType":{"description":"instance type","type":"string"},"rootDeviceSize":{"description":"rootDeviceSize in GBs","format":"int64","maximum":2000,"minimum":1,"type":"integer"},"subnetIds":{"additionalProperties":{"type":"string"},"description":"AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment","type":"object"}},"type":"object"},"v1TencentMachinePoolConfig":{"properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"AdditionalLabels","type":"object"},"additionalTags":{"additionalProperties":{"type":"string"},"description":"AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole","type":"object"},"azs":{"description":"AZs is only used for dynamic placement","items":{"type":"string"},"type":"array"},"instanceConfig":{"$ref":"#/definitions/v1InstanceConfig"},"instanceType":{"description":"instance type","type":"string"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean"},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"machinePoolProperties":{"$ref":"#/definitions/v1MachinePoolProperties"},"maxSize":{"description":"max size of the pool, for scaling","format":"int32","type":"integer"},"minSize":{"description":"min size of the pool, for scaling","format":"int32","type":"integer"},"name":{"type":"string"},"nodeRepaveInterval":{"description":"Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster","format":"int32","type":"integer"},"rootDeviceSize":{"description":"rootDeviceSize in GBs","format":"int64","type":"integer"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"subnetIds":{"additionalProperties":{"type":"string"},"description":"AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment","type":"object"},"taints":{"description":"master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array"},"updateStrategy":{"$ref":"#/definitions/v1UpdateStrategy","description":"rolling update strategy for this machinepool if not specified, will use ScaleOut"},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean"}},"type":"object"},"v1TencentMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1TencentMachinePoolCloudConfigEntity"},"poolConfig":{"$ref":"#/definitions/v1MachinePoolConfigEntity"}},"required":["cloudConfig"],"type":"object"},"v1TencentMachineSpec":{"description":"Tencent cloud VM definition spec","properties":{"dnsName":{"type":"string"},"imageId":{"type":"string"},"instanceType":{"type":"string"},"nics":{"items":{"$ref":"#/definitions/v1TencentNic"},"type":"array"},"securityGroups":{"items":{"type":"string"},"type":"array"},"subnetId":{"type":"string"},"type":{"type":"string"},"vpcId":{"type":"string"},"zoneId":{"type":"string"}},"required":["nics","instanceType","imageId"],"type":"object"},"v1TencentMachines":{"description":"Tencent machine list","properties":{"items":{"items":{"$ref":"#/definitions/v1TencentMachine"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1TencentNic":{"description":"Tencent network interface","properties":{"index":{"format":"int8","type":"integer"},"privateIPs":{"items":{"type":"string"},"type":"array"},"publicIp":{"type":"string"}},"type":"object"},"v1TencentRegion":{"description":"Tencent region entity","properties":{"name":{"description":"Name of tencent region","type":"string"},"state":{"description":"State of tencent region","type":"string"}},"type":"object"},"v1TencentRegions":{"description":"List of tencent regions","properties":{"regions":{"description":"Tencent regions entity","items":{"$ref":"#/definitions/v1TencentRegion"},"type":"array"}},"required":["regions"],"type":"object"},"v1TencentSecurityGroup":{"description":"Tencent Security Group. A security group is a virtual firewall that features stateful data packet filtering","properties":{"id":{"description":"Tencent security group id","type":"string"},"isDefault":{"description":"Whether it is the default security group, the default security group does not support deletion.","type":"boolean"},"name":{"description":"Tencent security group name","type":"string"},"projectId":{"description":"Tencent security group associated to a project","type":"string"}},"type":"object"},"v1TencentSecurityGroups":{"description":"List of Tencent security groups","properties":{"groups":{"items":{"$ref":"#/definitions/v1TencentSecurityGroup"},"type":"array"}},"type":"object"},"v1TencentStorageTypes":{"description":"List of Tencent storage types","properties":{"storageTypes":{"items":{"$ref":"#/definitions/v1StorageType"},"type":"array"}},"type":"object"},"v1TencentSubnet":{"description":"Tencent Subnet entity","properties":{"az":{"description":"Availability zone associated with tencent subnet","type":"string"},"cidrBlock":{"description":"Tencent subnet CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32","type":"string"},"name":{"description":"Tencent subnet name","type":"string"},"subnetId":{"description":"Tencent subnet id","type":"string"}},"type":"object"},"v1TencentVpc":{"description":"Tencent VPC entity","properties":{"cidrBlock":{"description":"Tencent VPC CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32","type":"string"},"name":{"description":"Tencent VPC name","type":"string"},"subnets":{"items":{"$ref":"#/definitions/v1TencentSubnet"},"type":"array"},"vpcId":{"description":"Tencent VPC id","type":"string"}},"required":["vpcId"],"type":"object"},"v1TencentVpcs":{"description":"List of Tencent VPCs","properties":{"vpcs":{"items":{"$ref":"#/definitions/v1TencentVpc"},"type":"array"}},"required":["vpcs"],"type":"object"},"v1TierPrice":{"description":"tier price","properties":{"alloyPricing":{"items":{"$ref":"#/definitions/v1PriceRange"},"type":"array","uniqueItems":true},"purePricing":{"items":{"$ref":"#/definitions/v1PriceRange"},"type":"array","uniqueItems":true}}},"v1Time":{"description":"Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.","format":"date-time","type":"string"},"v1TkeEndpointAccess":{"description":"TKEEndpointAccess specifies how control plane endpoints are accessible","properties":{"IsExtranet":{"description":"IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)","type":"boolean"},"private":{"description":"Private points VPC-internal control plane access to the private endpoint","type":"boolean"},"privateCIDR":{"description":"Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint","type":"string"},"public":{"description":"Public controls whether control plane endpoints are publicly accessible","type":"boolean"},"publicCIDRs":{"description":"Deprecated. PublicCIDRs specifies which blocks can access the public endpoint","items":{"type":"string"},"type":"array"},"securityGroup":{"description":"Tencent security group","type":"string"},"subnetId":{"description":"Tencent Subnet","type":"string"}},"type":"object"},"v1TlsConfiguration":{"description":"TLS configuration","properties":{"ca":{"type":"string"},"certificate":{"type":"string"},"enabled":{"type":"boolean","x-omitempty":false},"insecureSkipVerify":{"type":"boolean","x-omitempty":false},"key":{"type":"string"}},"type":"object"},"v1TotalClusterRate":{"description":"Cluster total estimated rate information","properties":{"compute":{"format":"float64","type":"number","x-omitempty":false},"storage":{"format":"float64","type":"number","x-omitempty":false},"total":{"format":"float64","type":"number","x-omitempty":false}},"type":"object"},"v1TotalResourceUsage":{"description":"Total Resource Usage","properties":{"projects":{"items":{"$ref":"#/definitions/v1ProjectResourceUsage"},"type":"array","uniqueItems":true},"totalAlloyCpuCoreHours":{"type":"number","x-omitempty":false},"totalPureCpuCoreHours":{"type":"number","x-omitempty":false}}},"v1TransferJob":{"description":"transfer job details","properties":{"finishTime":{"$ref":"#/definitions/v1Time"},"folder":{"type":"string"},"isCompleted":{"type":"boolean"},"message":{"items":{"type":"string"},"type":"array"},"startTime":{"$ref":"#/definitions/v1Time"},"state":{"type":"string"},"status":{"items":{"type":"string"},"type":"array"}},"type":"object"},"v1Uid":{"properties":{"uid":{"type":"string"}},"required":["uid"],"type":"object"},"v1UidRoleSummary":{"properties":{"inheritedRoles":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"},"name":{"type":"string"},"roles":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"},"uid":{"type":"string"}},"type":"object"},"v1UidSummary":{"properties":{"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1Uids":{"items":{"$ref":"#/definitions/v1Uid"},"type":"array","uniqueItems":true},"v1UpdateStrategy":{"description":"UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut =\u003e maxSurge=1, maxUnavailable=0 ScaleIn =\u003e maxSurge=0, maxUnavailable=1","properties":{"type":{"description":"update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut","enum":["RollingUpdateScaleOut","RollingUpdateScaleIn"],"type":"string"}},"type":"object"},"v1UpdateTenantStatus":{"description":"Update tenant status","properties":{"errorMessage":{"type":"string"},"kind":{"type":"string"},"stage":{"type":"string"}},"type":"object"},"v1Updated":{"description":"The resource was updated successfully"},"v1UpdatedMsg":{"description":"Update response with message","properties":{"msg":{"type":"string"}}},"v1Upgrades":{"description":"Upgrades represent the reason of the last upgrade that took place","properties":{"reason":{"items":{"type":"string"},"type":"array"},"timestamp":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1User":{"description":"User","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1UserSpec"},"status":{"$ref":"#/definitions/v1UserStatus"}},"type":"object"},"v1UserActivateInfo":{"properties":{"passwordToken":{"type":"string"}},"type":"object"},"v1UserActivateLink":{"properties":{"activationLink":{"type":"string"}},"type":"object"},"v1UserActivityInfo":{"description":"Active user data","properties":{"lastLogin":{"type":"string"},"lastLoginTimestamp":{"$ref":"#/definitions/v1Time"},"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1UserAssetSsh":{"description":"SSH key information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1UserAssetSshSpec"}},"type":"object"},"v1UserAssetSshEntity":{"description":"SSH Key request payload","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"$ref":"#/definitions/v1UserAssetSshSpec"}},"type":"object"},"v1UserAssetSshSpec":{"description":"SSH key specification","properties":{"publicKey":{"type":"string"}},"type":"object"},"v1UserAssetsLocation":{"description":"Location object","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1UserAssetsLocationSpec"}},"type":"object"},"v1UserAssetsLocationAzure":{"description":"Azure location object","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"$ref":"#/definitions/v1UserAssetsLocationAzureSpec"}},"type":"object"},"v1UserAssetsLocationAzureSpec":{"description":"Azure location specification","properties":{"config":{"$ref":"#/definitions/v1AzureStorageConfig"},"isDefault":{"description":"Set to 'true', if location has to be set as default","type":"boolean"},"type":{"description":"Azure location type [azure]","type":"string"}},"required":["config"],"type":"object"},"v1UserAssetsLocationGcp":{"description":"GCP location object","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"$ref":"#/definitions/v1UserAssetsLocationGcpSpec"}},"type":"object"},"v1UserAssetsLocationGcpSpec":{"description":"GCP location specification","properties":{"config":{"$ref":"#/definitions/v1GcpStorageConfig"},"isDefault":{"description":"Set to 'true', if location has to be set as default","type":"boolean"},"type":{"description":"GCP location type [gcp]","type":"string"}},"required":["config"],"type":"object"},"v1UserAssetsLocationS3":{"description":"S3 location object","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"},"spec":{"$ref":"#/definitions/v1UserAssetsLocationS3Spec"}},"type":"object"},"v1UserAssetsLocationS3Spec":{"description":"S3 location specification","properties":{"config":{"$ref":"#/definitions/v1S3StorageConfig"},"isDefault":{"description":"Set to 'true', if location has to be set as default","type":"boolean"},"type":{"description":"S3 location type [s3/minio]","type":"string"}},"required":["config"],"type":"object"},"v1UserAssetsLocationSpec":{"description":"Location specification","properties":{"isDefault":{"type":"boolean"},"storage":{"$ref":"#/definitions/v1LocationType"},"type":{"type":"string"}},"type":"object"},"v1UserAssetsLocations":{"properties":{"items":{"description":"List of locations","items":{"$ref":"#/definitions/v1UserAssetsLocation"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1UserAssetsSsh":{"properties":{"items":{"description":"List of SSH keys","items":{"$ref":"#/definitions/v1UserAssetSsh"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1UserAuthenticatedUrl":{"description":"Returns the Authenticated redirect Url for the palette oidc","properties":{"redirectUrl":{"description":"authenticated redirect Url for the palette oidc","type":"string"}},"type":"object"},"v1UserEntity":{"description":"User","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1UserSpecEntity"}},"type":"object"},"v1UserInfoResponse":{"properties":{"address":{"description":"End-User's preferred postal address","type":"string"},"birthdate":{"description":"End-User's birthday, represented as an ISO 8601:2004 [ISO8601‑2004] YYYY-MM-DD format","type":"string"},"email":{"description":"End-User's preferred e-mail address","type":"string"},"email_verified":{"description":"User at the time the verification was performed","type":"boolean"},"family_name":{"description":"Surname(s) or last name(s) of the End-User","type":"string"},"gender":{"description":"End-User's gender","type":"string"},"given_name":{"description":"Given name(s) or first name(s) of the End-User","type":"string"},"locale":{"description":"End-User's locale, represented as a BCP47 [RFC5646] language tag","type":"string"},"middle_name":{"description":"Middle name(s) of the End-User","type":"string"},"name":{"description":"End-User's full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User's locale and preferences","type":"string"},"nickname":{"description":"Casual name of the End-User that may or may not be the same as the given_name","type":"string"},"phone_number":{"description":"End-User's preferred telephone number","type":"string"},"phone_number_verified":{"description":"User at the time the verification was performed","type":"boolean"},"picture":{"description":"URL of the End-User's profile picture","type":"string"},"preferred_username":{"description":"Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe","type":"string"},"profile":{"description":"URL of the End-User's profile page","type":"string"},"sub":{"description":"Subject - Identifier for the End-User at the Issuer","type":"string"},"updated_at":{"description":"Time the End-User's information was last updated","type":"integer"},"website":{"description":"URL of the End-User's Web page or blog","type":"string"},"zoneinfo":{"description":"String from zoneinfo [zoneinfo] time zone database representing the End-User's time zone","type":"string"}},"type":"object"},"v1UserKubectlSession":{"properties":{"clusterUid":{"type":"string"},"creationTime":{"type":"string"},"isActive":{"type":"boolean"},"podIp":{"type":"string"},"podName":{"type":"string"},"port":{"type":"string"},"projectUid":{"type":"string"},"sessionUid":{"type":"string"},"shellyCluster":{"type":"string"},"tenantClusterEndpoint":{"type":"string"},"userName":{"type":"string"},"userUid":{"type":"string"}},"type":"object"},"v1UserMe":{"description":"User information wrt permissions","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1UserSpec"},"status":{"$ref":"#/definitions/v1UserMeStatus"}},"type":"object"},"v1UserMeStatus":{"description":"User status with permissions","properties":{"activationLink":{"description":"Contains activation link for the user","type":"string"},"isActive":{"description":"Specifies if user account is active/disabled","type":"boolean"},"isContractAccepted":{"description":"Specifies if user account has accepted the contract","type":"boolean","x-omitempty":false},"loginMode":{"description":"User's login Mode","type":"string"},"projectPermissions":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},"tenant":{"$ref":"#/definitions/v1UserMeTenant","description":"users's tenant information"},"tenantPermissions":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"}}},"v1UserMeTenant":{"properties":{"orgName":{"type":"string"},"tenantUid":{"type":"string"}},"type":"object"},"v1UserMeta":{"properties":{"emailId":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"org":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1UserMetaEntity":{"description":"User meta entity","properties":{"emailId":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1UserPatch":{"items":{"$ref":"#/definitions/v1HttpPatch"},"type":"array"},"v1UserProfile":{"description":"User Profile","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1UserProfileSpec"},"status":{"$ref":"#/definitions/v1UserProfileStatus"}},"type":"object"},"v1UserProfileSpec":{"description":"User Profile specifications","properties":{"emailId":{"description":"User's email id","type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"}}},"v1UserProfileStatus":{"description":"User Profile status","properties":{"lastPasswordPolicyMail":{"$ref":"#/definitions/v1Time","description":"user's last password policy time"},"lastPasswordUpdate":{"$ref":"#/definitions/v1Time","description":"user's last password update time"}}},"v1UserProfiles":{"properties":{"items":{"items":{"$ref":"#/definitions/v1UserProfile"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1UserRoleMap":{"properties":{"roles":{"items":{"type":"string"},"type":"array"},"userId":{"type":"string"}}},"v1UserRoleUIDs":{"properties":{"roles":{"items":{"type":"string"},"type":"array"}},"type":"object"},"v1UserRolesEntity":{"properties":{"inheritedRoles":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"},"roles":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"}},"type":"object"},"v1UserRsaToken":{"description":"Rsa Auth token response","properties":{"token":{"type":"string"}},"type":"object"},"v1UserSpec":{"description":"User specifications","properties":{"emailId":{"description":"User's email id","type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"roles":{"items":{"type":"string"},"type":"array","uniqueItems":true}}},"v1UserSpecEntity":{"description":"User Entity input","properties":{"emailId":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"loginMode":{"type":"string"},"roles":{"items":{"type":"string"},"type":"array","uniqueItems":true},"teams":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1UserSpecSummary":{"properties":{"emailId":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"projects":{"description":"Deprecated.","items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"},"projectsCount":{"format":"int32","type":"integer","x-omitempty":false},"roles":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"},"teams":{"items":{"$ref":"#/definitions/v1UidSummary"},"type":"array"}},"type":"object"},"v1UserStatus":{"description":"User status","properties":{"activationLink":{"description":"provides the link to activate or reset the user password","type":"string","x-omitempty":false},"isActive":{"description":"Specifies if user account is active/disabled","type":"boolean","x-omitempty":false},"isPasswordResetting":{"description":"Specifies if user in multi org requested password reset","type":"boolean","x-omitempty":false},"lastSignIn":{"$ref":"#/definitions/v1Time","description":"user's last sign in time"}}},"v1UserStatusLoginMode":{"properties":{"loginMode":{"enum":["dev","devops"],"type":"string"}},"type":"object"},"v1UserSummary":{"description":"User summary","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1UserSpecSummary"},"status":{"$ref":"#/definitions/v1UserStatus"}},"type":"object"},"v1UserSummarySortFields":{"enum":["name","creationTimestamp"],"type":"string","x-nullable":true},"v1UserSummarySortSpec":{"properties":{"field":{"$ref":"#/definitions/v1UserSummarySortFields"},"order":{"$ref":"#/definitions/v1SortOrder"}}},"v1UserToken":{"description":"Returns the Authorization token. To be used for further api calls","properties":{"Authorization":{"description":"Describes the authentication token in jwt format.","type":"string"},"isMfa":{"description":"Indicates the authentication flow using MFA","type":"boolean","x-omitempty":false}},"type":"object"},"v1UserUpdateEntity":{"description":"User","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1UserUpdateSpecEntity"}},"type":"object"},"v1UserUpdateSpecEntity":{"description":"User Entity input","properties":{"emailId":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"roles":{"description":"Deprecated. Use 'v1/users/{uid}/roles' API to assign roles.","items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1Users":{"properties":{"items":{"items":{"$ref":"#/definitions/v1User"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1UsersFilterSpec":{"description":"Users filter spec","properties":{"emailId":{"$ref":"#/definitions/v1FilterString"},"name":{"$ref":"#/definitions/v1FilterString"}}},"v1UsersMetadata":{"properties":{"items":{"items":{"$ref":"#/definitions/v1UserMetaEntity"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1UsersSummary":{"description":"Deprecated, Use v1UsersSummaryList - Returns User summary","properties":{"items":{"items":{"$ref":"#/definitions/v1UserSummary"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1UsersSummaryList":{"properties":{"items":{"items":{"$ref":"#/definitions/v1UserSummary"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1UsersSummarySpec":{"description":"Users filter summary spec","properties":{"filter":{"$ref":"#/definitions/v1UsersFilterSpec"},"sort":{"items":{"$ref":"#/definitions/v1UserSummarySortSpec"},"type":"array","uniqueItems":true}}},"v1V1SystemAdminEmail":{"description":"SystemAdmin","properties":{"email":{"type":"string"},"insecureVerify":{"type":"boolean"},"password":{"type":"string"}},"type":"object"},"v1V1SystemAdminPasswordResetEntity":{"description":"SystemAdmin","properties":{"email":{"type":"string"},"newPassword":{"type":"string"},"oldPassword":{"type":"string"}},"type":"object"},"v1VMAddVolumeEntity":{"properties":{"addVolumeOptions":{"$ref":"#/definitions/v1VmAddVolumeOptions","description":"Parameters required to add volume to virtual machine/virtual machine instance"},"dataVolumeTemplate":{"$ref":"#/definitions/v1VmDataVolumeTemplateSpec","description":"dataVolumeTemplates is a list of dataVolumes that the VirtualMachineInstance template can reference. DataVolumes in this list are dynamically created for the VirtualMachine and are tied to the VirtualMachine's life-cycle."},"persist":{"description":"If 'true' add the disk to the Virtual Machine \u0026 Virtual Machine Instance, else add the disk to the Virtual Machine Instance only","type":"boolean"}},"required":["addVolumeOptions"],"type":"object"},"v1VMCluster":{"description":"VM Dashboard enabled Spectro cluster","properties":{"metadata":{"properties":{"name":{"type":"string"},"projectUid":{"type":"string"},"uid":{"type":"string"}}},"spec":{"description":"Spectro cluster spec","properties":{"cloudType":{"type":"string"}},"type":"object"},"status":{"description":"Spectro cluster status","properties":{"clusterState":{"type":"string"}}}},"type":"object"},"v1VMClusters":{"properties":{"items":{"items":{"$ref":"#/definitions/v1VMCluster"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1VMRemoveVolumeEntity":{"properties":{"persist":{"description":"If 'true' remove the disk from the Virtual Machine \u0026 Virtual Machine Instance, else remove the disk from the Virtual Machine Instance only","type":"boolean"},"removeVolumeOptions":{"$ref":"#/definitions/v1VmRemoveVolumeOptions","description":"Parameters required to remove volume from virtual machine/virtual machine instance"}},"required":["removeVolumeOptions"],"type":"object"},"v1Variable":{"description":"Unique variable field with schema definition","properties":{"defaultValue":{"description":"The default value of the variable","type":"string"},"description":{"description":"Variable description","type":"string"},"displayName":{"description":"Unique display name of the variable","type":"string"},"format":{"$ref":"#/definitions/v1VariableFormat"},"hidden":{"description":"If true, then variable will be hidden for overriding the value. By default the hidden flag will be set to false","type":"boolean","x-omitempty":false},"immutable":{"description":"If true, then variable value can't be editable. By default the immutable flag will be set to false","type":"boolean","x-omitempty":false},"isSensitive":{"description":"If true, then default value will be masked. By default the isSensitive flag will be set to false","type":"boolean","x-omitempty":false},"name":{"description":"Variable name","type":"string"},"regex":{"description":"Regular expression pattern which the variable value must match","type":"string"},"required":{"description":"Flag to specify if the variable is optional or mandatory. If it is mandatory then default value must be provided","type":"boolean","x-omitempty":false}},"required":["name"],"type":"object"},"v1VariableFormat":{"default":"string","description":"Format type of the variable value","enum":["string","number","boolean","ipv4","ipv4cidr","ipv6","version"],"type":"string"},"v1VariableNames":{"properties":{"variables":{"description":"Array of variable names","items":{"type":"string"},"type":"array","uniqueItems":true}},"required":["variables"]},"v1Variables":{"properties":{"variables":{"description":"List of unique variable fields with schema constraints","items":{"$ref":"#/definitions/v1Variable"},"type":"array","uniqueItems":true}},"type":"object"},"v1Virtual":{"properties":{"appDeployments":{"description":"list of apps deployed on the virtual cluster","items":{"$ref":"#/definitions/v1ObjectResReference"},"type":"array"},"clusterGroup":{"$ref":"#/definitions/v1ObjectResReference","description":"cluster group details of virtual cluster"},"hostCluster":{"$ref":"#/definitions/v1ObjectResReference","description":"host cluster reference"},"lifecycleStatus":{"$ref":"#/definitions/v1LifecycleStatus","description":"cluster life cycle status of virtual cluster"},"state":{"description":"cluster virtual host status","type":"string"},"virtualClusters":{"description":"list of virtual clusters deployed on the cluster","items":{"$ref":"#/definitions/v1ObjectResReference"},"type":"array"}}},"v1VirtualCloudClusterConfigEntity":{"description":"Virtual cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1VirtualClusterConfig"}},"type":"object"},"v1VirtualCloudConfig":{"description":"VirtualCloudConfig is the Schema for the virtual cloudconfigs API","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Cloud type of the cloud config","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1VirtualCloudConfigSpec"},"status":{"$ref":"#/definitions/v1NestedCloudConfigStatus"}},"type":"object"},"v1VirtualCloudConfigSpec":{"description":"VirtualCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec for cluster-api.","properties":{"clusterConfig":{"$ref":"#/definitions/v1VirtualClusterConfig"},"hostClusterUid":{"type":"string"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1VirtualMachinePoolConfig"},"type":"array"}},"required":["clusterConfig","hostClusterUid","machinePoolConfig"],"type":"object"},"v1VirtualClusterConfig":{"description":"Cluster level configuration for virtual cluster","properties":{"controlPlaneEndpoint":{"$ref":"#/definitions/v1APIEndpoint"},"helmRelease":{"$ref":"#/definitions/v1VirtualClusterHelmRelease"},"kubernetesVersion":{"default":"","type":"string"}},"type":"object"},"v1VirtualClusterHelmChart":{"properties":{"name":{"default":"","type":"string"},"repo":{"default":"","type":"string"},"version":{"default":"","type":"string"}},"type":"object"},"v1VirtualClusterHelmRelease":{"properties":{"chart":{"$ref":"#/definitions/v1VirtualClusterHelmChart"},"values":{"default":"","type":"string"}},"type":"object"},"v1VirtualClusterResize":{"properties":{"instanceType":{"$ref":"#/definitions/v1VirtualInstanceType"}},"required":["instanceType"],"type":"object"},"v1VirtualInstanceType":{"properties":{"maxCPU":{"description":"Maximum CPU cores","format":"int32","type":"integer"},"maxMemInMiB":{"description":"Maximum memory in MiB","format":"int32","type":"integer"},"maxStorageGiB":{"description":"Maximum storage in GiB","format":"int32","type":"integer"},"minCPU":{"description":"Minimum CPU cores","format":"int32","type":"integer"},"minMemInMiB":{"description":"Minimum memory in MiB","format":"int32","type":"integer"},"minStorageGiB":{"description":"Minimum storage in GiB","format":"int32","type":"integer"}},"type":"object"},"v1VirtualMachine":{"description":"Virtual cloud machine definition","properties":{"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1VirtualMachineSpec"},"status":{"$ref":"#/definitions/v1CloudMachineStatus"}},"type":"object"},"v1VirtualMachinePoolCloudConfigEntity":{"properties":{"instanceType":{"$ref":"#/definitions/v1VirtualInstanceType"}},"required":["instanceType"],"type":"object"},"v1VirtualMachinePoolConfig":{"properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"additionalLabels","type":"object"},"additionalTags":{"additionalProperties":{"type":"string"},"description":"AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole","type":"object"},"azs":{"items":{"type":"string"},"type":"array"},"instanceType":{"$ref":"#/definitions/v1VirtualInstanceType","description":"InstanceType defines the required CPU, Memory"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean"},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"machinePoolProperties":{"$ref":"#/definitions/v1MachinePoolProperties"},"maxSize":{"description":"max size of the pool, for scaling","format":"int32","type":"integer"},"minSize":{"description":"min size of the pool, for scaling","format":"int32","type":"integer"},"name":{"type":"string"},"resourcePool":{"type":"string"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"taints":{"description":"master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array","uniqueItems":true},"updateStrategy":{"$ref":"#/definitions/v1UpdateStrategy","description":"rolling update strategy for this machinepool if not specified, will use ScaleOut"},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean"}},"required":["instanceType"],"type":"object"},"v1VirtualMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1VirtualMachinePoolCloudConfigEntity"}},"required":["cloudConfig"],"type":"object"},"v1VirtualMachineSnapshot":{"description":"VirtualMachineSnapshot defines the operation of snapshotting a VM","properties":{"apiVersion":{"description":"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"metadata":{"$ref":"#/definitions/v1VmObjectMeta"},"spec":{"$ref":"#/definitions/v1VirtualMachineSnapshotSpec"},"status":{"$ref":"#/definitions/v1VirtualMachineSnapshotStatus"}},"required":["spec"],"type":"object"},"v1VirtualMachineSnapshotList":{"description":"VirtualMachineSnapshotList is a list of VirtualMachineSnapshot resources","properties":{"apiVersion":{"description":"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"items":{"items":{"$ref":"#/definitions/v1VirtualMachineSnapshot"},"type":"array"},"kind":{"description":"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"metadata":{"$ref":"#/definitions/v1VmListMeta"}},"required":["metadata","items"],"type":"object"},"v1VirtualMachineSnapshotSpec":{"description":"VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource","properties":{"deletionPolicy":{"type":"string"},"failureDeadline":{"$ref":"#/definitions/v1VmDuration"},"source":{"$ref":"#/definitions/v1VmTypedLocalObjectReference"}},"required":["source"],"type":"object"},"v1VirtualMachineSnapshotStatus":{"description":"VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource","properties":{"conditions":{"items":{"$ref":"#/definitions/v1VmCondition"},"type":"array"},"creationTime":{"$ref":"#/definitions/v1Time"},"error":{"$ref":"#/definitions/v1VmError"},"indications":{"items":{"type":"string"},"type":"array","x-kubernetes-list-type":"set"},"phase":{"type":"string"},"readyToUse":{"type":"boolean"},"snapshotVolumes":{"$ref":"#/definitions/v1VmSnapshotVolumesLists"},"sourceUID":{"type":"string"},"virtualMachineSnapshotContentName":{"type":"string"}},"type":"object","x-nullable":true},"v1VirtualMachineSpec":{"description":"Virtual cloud machine definition spec","properties":{"hostname":{"type":"string"}},"type":"object"},"v1VirtualMachines":{"description":"List of virtual machines","properties":{"items":{"items":{"$ref":"#/definitions/v1VirtualMachine"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1VirtualNetwork":{"description":"Azure virtual network is the fundamental building block for your private network in Azure.","properties":{"addressSpaces":{"description":"Location of the virtual network","items":{"type":"string"},"type":"array","uniqueItems":true},"id":{"description":"The ID of the resource group","type":"string"},"location":{"description":"Location of the virtual network","type":"string"},"name":{"description":"Name of the virtual network","type":"string"},"subnets":{"description":"List of subnets associated with Azure VPC","items":{"$ref":"#/definitions/v1Subnet"},"type":"array"},"type":{"description":"Type of the virtual network","type":"string"}},"type":"object"},"v1VmAccessCredential":{"description":"AccessCredential represents a credential source that can be used to authorize remote access to the vm guest Only one of its members may be specified.","properties":{"sshPublicKey":{"$ref":"#/definitions/v1VmSshPublicKeyAccessCredential"},"userPassword":{"$ref":"#/definitions/v1VmUserPasswordAccessCredential"}},"type":"object"},"v1VmAccessCredentialSecretSource":{"properties":{"secretName":{"description":"SecretName represents the name of the secret in the VMI's namespace","type":"string"}},"required":["secretName"],"type":"object"},"v1VmAddVolumeOptions":{"description":"AddVolumeOptions is provided when dynamically hot plugging a volume and disk","properties":{"disk":{"$ref":"#/definitions/v1VmDisk"},"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","items":{"type":"string"},"type":"array","x-kubernetes-list-type":"atomic"},"name":{"description":"Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.","type":"string"},"volumeSource":{"$ref":"#/definitions/v1VmHotplugVolumeSource"}},"required":["name","disk","volumeSource"],"type":"object"},"v1VmAffinity":{"description":"Affinity is a group of affinity scheduling rules.","properties":{"nodeAffinity":{"$ref":"#/definitions/v1VmNodeAffinity"},"podAffinity":{"$ref":"#/definitions/v1VmPodAffinity"},"podAntiAffinity":{"$ref":"#/definitions/v1PodAntiAffinity"}},"type":"object"},"v1VmBIOS":{"description":"If set (default), BIOS will be used.","properties":{"useSerial":{"description":"If set, the BIOS output will be transmitted over serial","type":"boolean"}},"type":"object"},"v1VmBlockSize":{"description":"BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.","properties":{"custom":{"$ref":"#/definitions/v1VmCustomBlockSize"},"matchVolume":{"$ref":"#/definitions/v1VmFeatureState"}},"type":"object"},"v1VmBootloader":{"description":"Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.","properties":{"bios":{"$ref":"#/definitions/v1VmBIOS"},"efi":{"$ref":"#/definitions/v1VmEFI"}},"type":"object"},"v1VmCDRomTarget":{"properties":{"bus":{"description":"Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.","type":"string"},"readonly":{"description":"ReadOnly. Defaults to true.","type":"boolean"},"tray":{"description":"Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.","type":"string"}},"type":"object"},"v1VmChassis":{"description":"Chassis specifies the chassis info passed to the domain.","properties":{"asset":{"type":"string"},"manufacturer":{"type":"string"},"serial":{"type":"string"},"sku":{"type":"string"},"version":{"type":"string"}},"type":"object"},"v1VmClientPassthroughDevices":{"description":"Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.","type":"object"},"v1VmClock":{"description":"Represents the clock and timers of a vmi.","properties":{"timer":{"$ref":"#/definitions/v1VmTimer"},"timezone":{"description":"Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').","type":"string"},"utc":{"$ref":"#/definitions/v1VmClockOffsetUTC"}},"type":"object"},"v1VmClockOffsetUTC":{"description":"UTC sets the guest clock to UTC on each boot.","properties":{"offsetSeconds":{"description":"OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.","format":"int32","type":"integer"}},"type":"object"},"v1VmCloudInitConfigDriveSource":{"description":"Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html","properties":{"networkData":{"description":"NetworkData contains config drive inline cloud-init networkdata.","type":"string"},"networkDataBase64":{"description":"NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.","type":"string"},"networkDataSecretRef":{"$ref":"#/definitions/v1VmLocalObjectReference"},"secretRef":{"$ref":"#/definitions/v1VmLocalObjectReference"},"userData":{"description":"UserData contains config drive inline cloud-init userdata.","type":"string"},"userDataBase64":{"description":"UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.","type":"string"}},"type":"object"},"v1VmCloudInitNoCloudSource":{"description":"Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html","properties":{"networkData":{"description":"NetworkData contains NoCloud inline cloud-init networkdata.","type":"string"},"networkDataBase64":{"description":"NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.","type":"string"},"networkDataSecretRef":{"$ref":"#/definitions/v1VmLocalObjectReference"},"secretRef":{"$ref":"#/definitions/v1VmLocalObjectReference"},"userData":{"description":"UserData contains NoCloud inline cloud-init userdata.","type":"string"},"userDataBase64":{"description":"UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.","type":"string"}},"type":"object"},"v1VmCondition":{"description":"Condition defines conditions","properties":{"lastProbeTime":{"type":"string"},"lastTransitionTime":{"type":"string"},"message":{"type":"string"},"reason":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"}},"required":["type","status"],"type":"object"},"v1VmConfigDriveSshPublicKeyAccessCredentialPropagation":{"type":"object"},"v1VmConfigMapVolumeSource":{"description":"ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"optional":{"description":"Specify whether the ConfigMap or it's keys must be defined","type":"boolean"},"volumeLabel":{"description":"The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).","type":"string"}},"type":"object"},"v1VmContainerDiskSource":{"description":"Represents a docker image with an embedded disk.","properties":{"image":{"description":"Image is the name of the image with the embedded disk.","type":"string"},"imagePullPolicy":{"description":"Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images","type":"string"},"imagePullSecret":{"description":"ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.","type":"string"},"path":{"description":"Path defines the path to disk file in the container","type":"string"}},"required":["image"],"type":"object"},"v1VmCoreDataVolumeSource":{"properties":{"hotpluggable":{"description":"Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.","type":"boolean"},"name":{"description":"Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.","type":"string"}},"required":["name"],"type":"object"},"v1VmCoreResourceRequirements":{"description":"ResourceRequirements describes the compute resource requirements.","properties":{"limits":{"additionalProperties":{"$ref":"#/definitions/v1VmQuantity"},"description":"Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object"},"requests":{"additionalProperties":{"$ref":"#/definitions/v1VmQuantity"},"description":"Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/","type":"object"}},"type":"object"},"v1VmCpu":{"description":"CPU allows specifying the CPU topology.","properties":{"cores":{"description":"Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.","format":"int64","type":"integer"},"dedicatedCpuPlacement":{"description":"DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.","type":"boolean"},"features":{"description":"Features specifies the CPU features list inside the VMI.","items":{"$ref":"#/definitions/v1VmCpuFeature"},"type":"array"},"isolateEmulatorThread":{"description":"IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.","type":"boolean"},"model":{"description":"Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.","type":"string"},"numa":{"$ref":"#/definitions/v1VmNUMA"},"realtime":{"$ref":"#/definitions/v1VmRealtime"},"sockets":{"description":"Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.","format":"int64","type":"integer"},"threads":{"description":"Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.","format":"int64","type":"integer"}},"type":"object"},"v1VmCpuFeature":{"description":"CPUFeature allows specifying a CPU feature.","properties":{"name":{"description":"Name of the CPU feature","type":"string"},"policy":{"description":"Policy is the CPU feature attribute which can have the following attributes: force - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable - The feature will not be supported by virtual CPU. forbid - Guest creation will fail if the feature is supported by host CPU. Defaults to require","type":"string"}},"required":["name"],"type":"object"},"v1VmCustomBlockSize":{"description":"CustomBlockSize represents the desired logical and physical block size for a VM disk.","properties":{"logical":{"format":"int32","type":"integer"},"physical":{"format":"int32","type":"integer"}},"required":["logical","physical"],"type":"object"},"v1VmDHCPOptions":{"description":"Extra DHCP options to use in the interface.","properties":{"bootFileName":{"description":"If specified will pass option 67 to interface's DHCP server","type":"string"},"ntpServers":{"description":"If specified will pass the configured NTP server to the VM via DHCP option 042.","items":{"type":"string"},"type":"array"},"privateOptions":{"description":"If specified will pass extra DHCP options for private use, range: 224-254","items":{"$ref":"#/definitions/v1VmDHCPPrivateOptions"},"type":"array"},"tftpServerName":{"description":"If specified will pass option 66 to interface's DHCP server","type":"string"}},"type":"object"},"v1VmDHCPPrivateOptions":{"description":"DHCPExtraOptions defines Extra DHCP options for a VM.","properties":{"option":{"description":"Option is an Integer value from 224-254 Required.","format":"int32","type":"integer"},"value":{"description":"Value is a String value for the Option provided Required.","type":"string"}},"required":["option","value"],"type":"object"},"v1VmDataVolumeBlankImage":{"description":"DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC","type":"object"},"v1VmDataVolumeCheckpoint":{"description":"DataVolumeCheckpoint defines a stage in a warm migration.","properties":{"current":{"description":"Current is the identifier of the snapshot created for this checkpoint.","type":"string"},"previous":{"description":"Previous is the identifier of the snapshot from the previous checkpoint.","type":"string"}},"required":["previous","current"],"type":"object"},"v1VmDataVolumeSource":{"description":"DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC","properties":{"blank":{"$ref":"#/definitions/v1VmDataVolumeBlankImage"},"http":{"$ref":"#/definitions/v1VmDataVolumeSourceHttp"},"imageio":{"$ref":"#/definitions/v1VmDataVolumeSourceImageIO"},"pvc":{"$ref":"#/definitions/v1VmDataVolumeSourcePVC"},"registry":{"$ref":"#/definitions/v1VmDataVolumeSourceRegistry"},"s3":{"$ref":"#/definitions/v1VmDataVolumeSourceS3"},"upload":{"$ref":"#/definitions/v1VmDataVolumeSourceUpload"},"vddk":{"$ref":"#/definitions/v1VmDataVolumeSourceVDDK"}},"type":"object"},"v1VmDataVolumeSourceHttp":{"description":"DataVolumeSourceHTTP can be either an http or https endpoint, with an optional basic auth user name and password, and an optional configmap containing additional CAs","properties":{"certConfigMap":{"description":"CertConfigMap is a configmap reference, containing a Certificate Authority(CA) public key, and a base64 encoded pem certificate","type":"string"},"extraHeaders":{"description":"ExtraHeaders is a list of strings containing extra headers to include with HTTP transfer requests","items":{"type":"string"},"type":"array"},"secretExtraHeaders":{"description":"SecretExtraHeaders is a list of Secret references, each containing an extra HTTP header that may include sensitive information","items":{"type":"string"},"type":"array"},"secretRef":{"description":"SecretRef A Secret reference, the secret should contain accessKeyId (user name) base64 encoded, and secretKey (password) also base64 encoded","type":"string"},"url":{"description":"URL is the URL of the http(s) endpoint","type":"string"}},"required":["url"],"type":"object"},"v1VmDataVolumeSourceImageIO":{"description":"DataVolumeSourceImageIO provides the parameters to create a Data Volume from an imageio source","properties":{"certConfigMap":{"description":"CertConfigMap provides a reference to the CA cert","type":"string"},"diskId":{"description":"DiskID provides id of a disk to be imported","type":"string"},"secretRef":{"description":"SecretRef provides the secret reference needed to access the ovirt-engine","type":"string"},"url":{"description":"URL is the URL of the ovirt-engine","type":"string"}},"required":["url","diskId"],"type":"object"},"v1VmDataVolumeSourcePVC":{"description":"DataVolumeSourcePVC provides the parameters to create a Data Volume from an existing PVC","properties":{"name":{"description":"The name of the source PVC","type":"string"},"namespace":{"description":"The namespace of the source PVC","type":"string"}},"required":["namespace","name"],"type":"object"},"v1VmDataVolumeSourceRef":{"description":"DataVolumeSourceRef defines an indirect reference to the source of data for the DataVolume","properties":{"kind":{"description":"The kind of the source reference, currently only \"DataSource\" is supported","type":"string"},"name":{"description":"The name of the source reference","type":"string"},"namespace":{"description":"The namespace of the source reference, defaults to the DataVolume namespace","type":"string"}},"required":["kind","name"],"type":"object"},"v1VmDataVolumeSourceRegistry":{"description":"DataVolumeSourceRegistry provides the parameters to create a Data Volume from an registry source","properties":{"certConfigMap":{"description":"CertConfigMap provides a reference to the Registry certs","type":"string"},"imageStream":{"description":"ImageStream is the name of image stream for import","type":"string"},"pullMethod":{"description":"PullMethod can be either \"pod\" (default import), or \"node\" (node docker cache based import)","type":"string"},"secretRef":{"description":"SecretRef provides the secret reference needed to access the Registry source","type":"string"},"url":{"description":"URL is the url of the registry source (starting with the scheme: docker, oci-archive)","type":"string"}},"type":"object"},"v1VmDataVolumeSourceS3":{"description":"DataVolumeSourceS3 provides the parameters to create a Data Volume from an S3 source","properties":{"certConfigMap":{"description":"CertConfigMap is a configmap reference, containing a Certificate Authority(CA) public key, and a base64 encoded pem certificate","type":"string"},"secretRef":{"description":"SecretRef provides the secret reference needed to access the S3 source","type":"string"},"url":{"description":"URL is the url of the S3 source","type":"string"}},"required":["url"],"type":"object"},"v1VmDataVolumeSourceUpload":{"description":"DataVolumeSourceUpload provides the parameters to create a Data Volume by uploading the source","type":"object"},"v1VmDataVolumeSourceVDDK":{"description":"DataVolumeSourceVDDK provides the parameters to create a Data Volume from a Vmware source","properties":{"backingFile":{"description":"BackingFile is the path to the virtual hard disk to migrate from vCenter/ESXi","type":"string"},"initImageURL":{"description":"InitImageURL is an optional URL to an image containing an extracted VDDK library, overrides v2v-vmware config map","type":"string"},"secretRef":{"description":"SecretRef provides a reference to a secret containing the username and password needed to access the vCenter or ESXi host","type":"string"},"thumbprint":{"description":"Thumbprint is the certificate thumbprint of the vCenter or ESXi host","type":"string"},"url":{"description":"URL is the URL of the vCenter or ESXi host with the VM to migrate","type":"string"},"uuid":{"description":"UUID is the UUID of the virtual machine that the backing file is attached to in vCenter/ESXi","type":"string"}},"type":"object"},"v1VmDataVolumeSpec":{"description":"DataVolumeSpec defines the DataVolume type specification","properties":{"checkpoints":{"description":"Checkpoints is a list of DataVolumeCheckpoints, representing stages in a multistage import.","items":{"$ref":"#/definitions/v1VmDataVolumeCheckpoint"},"type":"array"},"contentType":{"description":"DataVolumeContentType options: \"kubevirt\", \"archive\"","type":"string"},"finalCheckpoint":{"description":"FinalCheckpoint indicates whether the current DataVolumeCheckpoint is the final checkpoint.","type":"boolean"},"preallocation":{"description":"Preallocation controls whether storage for DataVolumes should be allocated in advance.","type":"boolean"},"priorityClassName":{"description":"PriorityClassName for Importer, Cloner and Uploader pod","type":"string"},"pvc":{"$ref":"#/definitions/v1VmPersistentVolumeClaimSpec"},"source":{"$ref":"#/definitions/v1VmDataVolumeSource"},"sourceRef":{"$ref":"#/definitions/v1VmDataVolumeSourceRef"},"storage":{"$ref":"#/definitions/v1VmStorageSpec"}},"type":"object"},"v1VmDataVolumeTemplateSpec":{"properties":{"apiVersion":{"description":"APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values.","type":"string"},"kind":{"description":"Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.","type":"string"},"metadata":{"$ref":"#/definitions/v1VmObjectMeta"},"spec":{"$ref":"#/definitions/v1VmDataVolumeSpec"}},"required":["spec"],"type":"object"},"v1VmDevices":{"properties":{"autoattachGraphicsDevice":{"description":"Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.","type":"boolean"},"autoattachInputDevice":{"description":"Whether to attach an Input Device. Defaults to false.","type":"boolean"},"autoattachMemBalloon":{"description":"Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.","type":"boolean"},"autoattachPodInterface":{"description":"Whether to attach a pod network interface. Defaults to true.","type":"boolean"},"autoattachSerialConsole":{"description":"Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.","type":"boolean"},"autoattachVSOCK":{"description":"Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.","type":"boolean"},"blockMultiQueue":{"description":"Whether or not to enable virtio multi-queue for block devices. Defaults to false.","type":"boolean"},"clientPassthrough":{"$ref":"#/definitions/v1VmClientPassthroughDevices"},"disableHotplug":{"description":"DisableHotplug disabled the ability to hotplug disks.","type":"boolean"},"disks":{"description":"Disks describes disks, cdroms and luns which are connected to the vmi.","items":{"$ref":"#/definitions/v1VmDisk"},"type":"array"},"filesystems":{"description":"Filesystems describes filesystem which is connected to the vmi.","items":{"$ref":"#/definitions/v1VmFilesystem"},"type":"array","x-kubernetes-list-type":"atomic"},"gpus":{"description":"Whether to attach a GPU device to the vmi.","items":{"$ref":"#/definitions/v1VmGPU"},"type":"array","x-kubernetes-list-type":"atomic"},"hostDevices":{"description":"Whether to attach a host device to the vmi.","items":{"$ref":"#/definitions/v1VmHostDevice"},"type":"array","x-kubernetes-list-type":"atomic"},"inputs":{"description":"Inputs describe input devices","items":{"$ref":"#/definitions/v1VmInput"},"type":"array"},"interfaces":{"description":"Interfaces describe network interfaces which are added to the vmi.","items":{"$ref":"#/definitions/v1VmInterface"},"type":"array"},"networkInterfaceMultiqueue":{"description":"If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.","type":"boolean"},"rng":{"$ref":"#/definitions/v1VmRng"},"sound":{"$ref":"#/definitions/v1VmSoundDevice"},"tpm":{"$ref":"#/definitions/v1VmTPMDevice"},"useVirtioTransitional":{"description":"Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).","type":"boolean"},"watchdog":{"$ref":"#/definitions/v1VmWatchdog"}},"type":"object"},"v1VmDisk":{"properties":{"blockSize":{"$ref":"#/definitions/v1VmBlockSize"},"bootOrder":{"description":"BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.","format":"int32","type":"integer"},"cache":{"description":"Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.","type":"string"},"cdrom":{"$ref":"#/definitions/v1VmCDRomTarget"},"dedicatedIOThread":{"description":"dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.","type":"boolean"},"disk":{"$ref":"#/definitions/v1VmDiskTarget"},"io":{"description":"IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.","type":"string"},"lun":{"$ref":"#/definitions/v1VmLunTarget"},"name":{"description":"Name is the device name","type":"string"},"serial":{"description":"Serial provides the ability to specify a serial number for the disk device.","type":"string"},"shareable":{"description":"If specified the disk is made sharable and multiple write from different VMs are permitted","type":"boolean"},"tag":{"description":"If specified, disk address and its tag will be provided to the guest via config drive metadata","type":"string"}},"required":["name"],"type":"object"},"v1VmDiskTarget":{"properties":{"bus":{"description":"Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.","type":"string"},"pciAddress":{"description":"If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10","type":"string"},"readonly":{"description":"ReadOnly. Defaults to false.","type":"boolean"}},"type":"object"},"v1VmDomainSpec":{"properties":{"chassis":{"$ref":"#/definitions/v1VmChassis"},"clock":{"$ref":"#/definitions/v1VmClock"},"cpu":{"$ref":"#/definitions/v1VmCpu"},"devices":{"$ref":"#/definitions/v1VmDevices"},"features":{"$ref":"#/definitions/v1VmFeatures"},"firmware":{"$ref":"#/definitions/v1VmFirmware"},"ioThreadsPolicy":{"description":"Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto","type":"string"},"launchSecurity":{"$ref":"#/definitions/v1VmLaunchSecurity"},"machine":{"$ref":"#/definitions/v1VmMachine"},"memory":{"$ref":"#/definitions/v1VmMemory"},"resources":{"$ref":"#/definitions/v1VmResourceRequirements"}},"required":["devices"],"type":"object"},"v1VmDownwardApiVolumeFile":{"description":"DownwardAPIVolumeFile represents information to create the file containing the pod field","properties":{"fieldRef":{"$ref":"#/definitions/v1VmObjectFieldSelector"},"mode":{"description":"Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.","format":"int32","type":"integer"},"path":{"description":"Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'","type":"string"},"resourceFieldRef":{"$ref":"#/definitions/v1VmResourceFieldSelector"}},"required":["path"],"type":"object"},"v1VmDownwardApiVolumeSource":{"description":"DownwardAPIVolumeSource represents a volume containing downward API info.","properties":{"fields":{"description":"Fields is a list of downward API volume file","items":{"$ref":"#/definitions/v1VmDownwardApiVolumeFile"},"type":"array"},"volumeLabel":{"description":"The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).","type":"string"}},"type":"object"},"v1VmDownwardMetricsVolumeSource":{"description":"DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.","type":"object"},"v1VmDuration":{"description":"Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.","type":"string"},"v1VmEFI":{"description":"If set, EFI will be used instead of BIOS.","properties":{"secureBoot":{"description":"If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true","type":"boolean"}},"type":"object"},"v1VmEmptyDiskSource":{"description":"EmptyDisk represents a temporary disk which shares the vmis lifecycle.","properties":{"capacity":{"$ref":"#/definitions/v1VmQuantity"}},"required":["capacity"],"type":"object"},"v1VmEphemeralVolumeSource":{"properties":{"persistentVolumeClaim":{"$ref":"#/definitions/v1VmPersistentVolumeClaimVolumeSource"}},"type":"object"},"v1VmError":{"description":"Error is the last error encountered during the snapshot/restore","properties":{"message":{"type":"string"},"time":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1VmExecAction":{"description":"ExecAction describes a \"run in container\" action.","properties":{"command":{"description":"Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.","items":{"type":"string"},"type":"array"}},"type":"object"},"v1VmFeatureApiC":{"properties":{"enabled":{"description":"Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.","type":"boolean"},"endOfInterrupt":{"description":"EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.","type":"boolean"}},"type":"object"},"v1VmFeatureHyperv":{"description":"Hyperv specific features.","properties":{"evmcs":{"$ref":"#/definitions/v1VmFeatureState"},"frequencies":{"$ref":"#/definitions/v1VmFeatureState"},"ipi":{"$ref":"#/definitions/v1VmFeatureState"},"reenlightenment":{"$ref":"#/definitions/v1VmFeatureState"},"relaxed":{"$ref":"#/definitions/v1VmFeatureState"},"reset":{"$ref":"#/definitions/v1VmFeatureState"},"runtime":{"$ref":"#/definitions/v1VmFeatureState"},"spinlocks":{"$ref":"#/definitions/v1VmFeatureSpinlocks"},"synic":{"$ref":"#/definitions/v1VmFeatureState"},"synictimer":{"$ref":"#/definitions/v1VmSyNICTimer"},"tlbflush":{"$ref":"#/definitions/v1VmFeatureState"},"vapic":{"$ref":"#/definitions/v1VmFeatureState"},"vendorid":{"$ref":"#/definitions/v1VmFeatureVendorId"},"vpindex":{"$ref":"#/definitions/v1VmFeatureState"}},"type":"object"},"v1VmFeatureKVm":{"properties":{"hidden":{"description":"Hide the KVM hypervisor from standard MSR based discovery. Defaults to false","type":"boolean"}},"type":"object"},"v1VmFeatureSpinlocks":{"properties":{"enabled":{"description":"Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.","type":"boolean"},"spinlocks":{"description":"Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.","format":"int64","type":"integer"}},"type":"object"},"v1VmFeatureState":{"description":"Represents if a feature is enabled or disabled.","properties":{"enabled":{"description":"Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.","type":"boolean"}},"type":"object"},"v1VmFeatureVendorId":{"properties":{"enabled":{"description":"Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.","type":"boolean"},"vendorid":{"description":"VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.","type":"string"}},"type":"object"},"v1VmFeatures":{"properties":{"acpi":{"$ref":"#/definitions/v1VmFeatureState"},"apic":{"$ref":"#/definitions/v1VmFeatureApiC"},"hyperv":{"$ref":"#/definitions/v1VmFeatureHyperv"},"kvm":{"$ref":"#/definitions/v1VmFeatureKVm"},"pvspinlock":{"$ref":"#/definitions/v1VmFeatureState"},"smm":{"$ref":"#/definitions/v1VmFeatureState"}},"type":"object"},"v1VmFieldsV1":{"description":"FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:\u003cname\u003e', where \u003cname\u003e is the name of a field in a struct, or key in a map 'v:\u003cvalue\u003e', where \u003cvalue\u003e is the exact json formatted value of a list item 'i:\\\u003cindex\u003e', where \\\u003cindex\u003e is position of a item in a list 'k:\u003ckeys\u003e', where \u003ckeys\u003e is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff","properties":{"Raw":{"items":{"format":"byte","type":"string"},"type":"array"}},"type":"object"},"v1VmFilesystem":{"properties":{"name":{"description":"Name is the device name","type":"string"},"virtiofs":{"$ref":"#/definitions/v1VmFilesystemVirtiofs"}},"required":["name","virtiofs"],"type":"object"},"v1VmFilesystemVirtiofs":{"type":"object"},"v1VmFirmware":{"properties":{"bootloader":{"$ref":"#/definitions/v1VmBootloader"},"kernelBoot":{"$ref":"#/definitions/v1VmKernelBoot"},"serial":{"description":"The system-serial-number in SMBIOS","type":"string"},"uuid":{"description":"UUID reported by the vmi bios. Defaults to a random generated uid.","type":"string"}},"type":"object"},"v1VmGPU":{"properties":{"deviceName":{"type":"string"},"name":{"description":"Name of the GPU device as exposed by a device plugin","type":"string"},"tag":{"description":"If specified, the virtual network interface address and its tag will be provided to the guest via config drive","type":"string"},"virtualGPUOptions":{"$ref":"#/definitions/v1VmVGPUOptions"}},"required":["name","deviceName"],"type":"object"},"v1VmGuestAgentPing":{"description":"GuestAgentPing configures the guest-agent based ping probe","type":"object"},"v1VmHPETTimer":{"properties":{"present":{"description":"Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.","type":"boolean"},"tickPolicy":{"description":"TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"merge\", \"discard\".","type":"string"}},"type":"object"},"v1VmHostDevice":{"properties":{"deviceName":{"description":"DeviceName is the resource name of the host device exposed by a device plugin","type":"string"},"name":{"type":"string"},"tag":{"description":"If specified, the virtual network interface address and its tag will be provided to the guest via config drive","type":"string"}},"required":["name","deviceName"],"type":"object"},"v1VmHostDisk":{"description":"Represents a disk created on the cluster level","properties":{"capacity":{"$ref":"#/definitions/v1VmQuantity"},"path":{"description":"The path to HostDisk image located on the cluster","type":"string"},"shared":{"description":"Shared indicate whether the path is shared between nodes","type":"boolean"},"type":{"description":"Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'","type":"string"}},"required":["path","type"],"type":"object"},"v1VmHotplugVolumeSource":{"description":"HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.","properties":{"dataVolume":{"$ref":"#/definitions/v1VmCoreDataVolumeSource"},"persistentVolumeClaim":{"$ref":"#/definitions/v1VmPersistentVolumeClaimVolumeSource"}},"type":"object"},"v1VmHttpGetAction":{"description":"HTTPGetAction describes an action based on HTTP Get requests.","properties":{"host":{"description":"Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.","type":"string"},"httpHeaders":{"description":"Custom headers to set in the request. HTTP allows repeated headers.","items":{"$ref":"#/definitions/v1VmHttpHeader"},"type":"array"},"path":{"description":"Path to access on the HTTP server.","type":"string"},"port":{"description":"Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.","type":["string","number"]},"scheme":{"description":"Scheme to use for connecting to the host. Defaults to HTTP.","type":"string"}},"required":["port"],"type":"object"},"v1VmHttpHeader":{"description":"HTTPHeader describes a custom header to be used in HTTP probes","properties":{"name":{"description":"The header field name","type":"string"},"value":{"description":"The header field value","type":"string"}},"required":["name","value"],"type":"object"},"v1VmHugepages":{"description":"Hugepages allow to use hugepages for the VirtualMachineInstance instead of regular memory.","properties":{"pageSize":{"description":"PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.","type":"string"}},"type":"object"},"v1VmHypervTimer":{"properties":{"present":{"description":"Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.","type":"boolean"}},"type":"object"},"v1VmI6300ESBWatchdog":{"description":"i6300esb watchdog device.","properties":{"action":{"description":"The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.","type":"string"}},"type":"object"},"v1VmInput":{"properties":{"bus":{"description":"Bus indicates the bus of input device to emulate. Supported values: virtio, usb.","type":"string"},"name":{"description":"Name is the device name","type":"string"},"type":{"description":"Type indicated the type of input device. Supported values: tablet.","type":"string"}},"required":["type","name"],"type":"object"},"v1VmInstancetypeMatcher":{"description":"InstancetypeMatcher references a instancetype that is used to fill fields in the VMI template.","properties":{"inferFromVolume":{"description":"InferFromVolume lists the name of a volume that should be used to infer or discover the instancetype to be used through known annotations on the underlying resource. Once applied to the InstancetypeMatcher this field is removed.","type":"string"},"kind":{"description":"Kind specifies which instancetype resource is referenced. Allowed values are: \"VirtualMachineInstancetype\" and \"VirtualMachineClusterInstancetype\". If not specified, \"VirtualMachineClusterInstancetype\" is used by default.","type":"string"},"name":{"description":"Name is the name of the VirtualMachineInstancetype or VirtualMachineClusterInstancetype","type":"string"},"revisionName":{"description":"RevisionName specifies a ControllerRevision containing a specific copy of the VirtualMachineInstancetype or VirtualMachineClusterInstancetype to be used. This is initially captured the first time the instancetype is applied to the VirtualMachineInstance.","type":"string"}},"type":"object"},"v1VmInterface":{"properties":{"acpiIndex":{"description":"If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).","format":"int32","type":"integer"},"bootOrder":{"description":"BootOrder is an integer value \u003e 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.","format":"int32","type":"integer"},"bridge":{"$ref":"#/definitions/v1VmInterfaceBridge"},"dhcpOptions":{"$ref":"#/definitions/v1VmDHCPOptions"},"macAddress":{"description":"Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.","type":"string"},"macvtap":{"$ref":"#/definitions/v1VmInterfaceMacvtap"},"masquerade":{"$ref":"#/definitions/v1VmInterfaceMasquerade"},"model":{"description":"Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.","type":"string"},"name":{"description":"Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.","type":"string"},"passt":{"$ref":"#/definitions/v1VmInterfacePasst"},"pciAddress":{"description":"If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10","type":"string"},"ports":{"description":"List of ports to be forwarded to the virtual machine.","items":{"$ref":"#/definitions/v1VmPort"},"type":"array"},"slirp":{"$ref":"#/definitions/v1VmInterfaceSlirp"},"sriov":{"$ref":"#/definitions/v1VmInterfaceSRIOV"},"tag":{"description":"If specified, the virtual network interface address and its tag will be provided to the guest via config drive","type":"string"}},"required":["name"],"type":"object"},"v1VmInterfaceBridge":{"description":"InterfaceBridge connects to a given network via a linux bridge.","type":"object"},"v1VmInterfaceMacvtap":{"description":"InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.","type":"object"},"v1VmInterfaceMasquerade":{"description":"InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.","type":"object"},"v1VmInterfacePasst":{"description":"InterfacePasst connects to a given network.","type":"object"},"v1VmInterfaceSRIOV":{"description":"InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.","type":"object"},"v1VmInterfaceSlirp":{"description":"InterfaceSlirp connects to a given network using QEMU user networking mode.","type":"object"},"v1VmKVmTimer":{"properties":{"present":{"description":"Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.","type":"boolean"}},"type":"object"},"v1VmKernelBoot":{"description":"Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments","properties":{"container":{"$ref":"#/definitions/v1VmKernelBootContainer"},"kernelArgs":{"description":"Arguments to be passed to the kernel at boot time","type":"string"}},"type":"object"},"v1VmKernelBootContainer":{"description":"If set, the VM will be booted from the defined kernel / initrd.","properties":{"image":{"description":"Image that contains initrd / kernel files.","type":"string"},"imagePullPolicy":{"description":"Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images","type":"string"},"imagePullSecret":{"description":"ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.","type":"string"},"initrdPath":{"description":"the fully-qualified path to the ramdisk image in the host OS","type":"string"},"kernelPath":{"description":"The fully-qualified path to the kernel image in the host OS","type":"string"}},"required":["image"],"type":"object"},"v1VmLabelSelector":{"description":"A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.","properties":{"matchExpressions":{"description":"matchExpressions is a list of label selector requirements. The requirements are ANDed.","items":{"$ref":"#/definitions/v1VmLabelSelectorRequirement"},"type":"array"},"matchLabels":{"additionalProperties":{"type":"string"},"description":"matchLabels is a map of key-value pairs. A single key-value in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.","type":"object"}},"type":"object"},"v1VmLabelSelectorRequirement":{"description":"A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","properties":{"key":{"description":"key is the label key that the selector applies to.","type":"string","x-kubernetes-patch-merge-key":"key","x-kubernetes-patch-strategy":"merge"},"operator":{"description":"operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.","type":"string"},"values":{"description":"values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.","items":{"type":"string"},"type":"array"}},"required":["key","operator"],"type":"object"},"v1VmLaunchSecurity":{"properties":{"sev":{"$ref":"#/definitions/v1VmSEV"}},"type":"object"},"v1VmListMeta":{"description":"ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.","properties":{"continue":{"description":"continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.","type":"string"},"remainingItemCount":{"description":"remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.","format":"int64","type":"integer"},"resourceVersion":{"description":"String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only.","type":"string"},"selfLink":{"description":"selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.","type":"string"}},"type":"object"},"v1VmLocalObjectReference":{"description":"LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.","properties":{"name":{"description":"Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"}},"type":"object"},"v1VmLunTarget":{"properties":{"bus":{"description":"Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.","type":"string"},"readonly":{"description":"ReadOnly. Defaults to false.","type":"boolean"}},"type":"object"},"v1VmMachine":{"properties":{"type":{"description":"QEMU machine type is the actual chipset of the VirtualMachineInstance.","type":"string"}},"type":"object"},"v1VmManagedFieldsEntry":{"description":"ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.","properties":{"apiVersion":{"description":"APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.","type":"string"},"fieldsType":{"description":"FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"","type":"string"},"fieldsV1":{"$ref":"#/definitions/v1VmFieldsV1"},"manager":{"description":"Manager is an identifier of the workflow managing these fields.","type":"string"},"operation":{"description":"Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.","type":"string"},"subresource":{"description":"Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.","type":"string"},"time":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1VmMemory":{"description":"Memory allows specifying the VirtualMachineInstance memory features.","properties":{"guest":{"$ref":"#/definitions/v1VmQuantity"},"hugepages":{"$ref":"#/definitions/v1VmHugepages"}},"type":"object"},"v1VmMemoryDumpVolumeSource":{"properties":{"claimName":{"description":"ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims","type":"string"},"hotpluggable":{"description":"Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.","type":"boolean"},"readOnly":{"description":"Will force the ReadOnly setting in VolumeMounts. Default false.","type":"boolean"}},"required":["claimName"],"type":"object"},"v1VmMultusNetwork":{"description":"Represents the multus cni network.","properties":{"default":{"description":"Select the default network and add it to the multus-cni.io/default-network annotation.","type":"boolean"},"networkName":{"description":"References to a NetworkAttachmentDefinition CRD object. Format: \u003cnetworkName\u003e, \u003cnamespace\u003e/\u003cnetworkName\u003e. If namespace is not specified, VMI namespace is assumed.","type":"string"}},"required":["networkName"],"type":"object"},"v1VmNUMA":{"properties":{"guestMappingPassthrough":{"$ref":"#/definitions/v1VmNUMAGuestMappingPassthrough"}},"type":"object"},"v1VmNUMAGuestMappingPassthrough":{"description":"NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.","type":"object"},"v1VmNetwork":{"description":"Network represents a network type and a resource that should be connected to the vm.","properties":{"multus":{"$ref":"#/definitions/v1VmMultusNetwork"},"name":{"description":"Network name. Must be a DNS_LABEL and unique within the vm. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"pod":{"$ref":"#/definitions/v1VmPodNetwork"}},"required":["name"],"type":"object"},"v1VmNodeAffinity":{"description":"Node affinity is a group of node affinity scheduling rules.","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"description":"The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.","items":{"$ref":"#/definitions/v1VmPreferredSchedulingTerm"},"type":"array"},"requiredDuringSchedulingIgnoredDuringExecution":{"$ref":"#/definitions/v1VmNodeSelector"}},"type":"object"},"v1VmNodeSelector":{"description":"A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.","properties":{"nodeSelectorTerms":{"description":"Required. A list of node selector terms. The terms are ORed.","items":{"$ref":"#/definitions/v1VmNodeSelectorTerm"},"type":"array"}},"required":["nodeSelectorTerms"],"type":"object"},"v1VmNodeSelectorRequirement":{"description":"A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.","properties":{"key":{"description":"The label key that the selector applies to.","type":"string"},"operator":{"description":"Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.","type":"string"},"values":{"description":"An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.","items":{"type":"string"},"type":"array"}},"required":["key","operator"],"type":"object"},"v1VmNodeSelectorTerm":{"description":"A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.","properties":{"matchExpressions":{"description":"A list of node selector requirements by node's labels.","items":{"$ref":"#/definitions/v1VmNodeSelectorRequirement"},"type":"array"},"matchFields":{"description":"A list of node selector requirements by node's fields.","items":{"$ref":"#/definitions/v1VmNodeSelectorRequirement"},"type":"array"}},"type":"object"},"v1VmObjectFieldSelector":{"description":"ObjectFieldSelector selects an APIVersioned field of an object.","properties":{"apiVersion":{"description":"Version of the schema the FieldPath is written in terms of, defaults to \"v1\".","type":"string"},"fieldPath":{"description":"Path of the field to select in the specified API version.","type":"string"}},"required":["fieldPath"],"type":"object"},"v1VmObjectMeta":{"description":"ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.","properties":{"annotations":{"additionalProperties":{"type":"string"},"description":"Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations","type":"object"},"clusterName":{"description":"The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.","type":"string"},"creationTimestamp":{"description":"CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","type":"string"},"deletionGracePeriodSeconds":{"description":"Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.","format":"int64","type":"integer"},"deletionTimestamp":{"description":"DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata","format":"date-time","type":"string","x-nullable":true},"finalizers":{"description":"Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.","items":{"type":"string"},"type":"array","x-kubernetes-patch-strategy":"merge"},"generateName":{"description":"GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.","type":"string"},"generation":{"description":"A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.","format":"int64","type":"integer"},"labels":{"additionalProperties":{"type":"string"},"description":"Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels","type":"object"},"managedFields":{"description":"ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.","items":{"$ref":"#/definitions/v1VmManagedFieldsEntry"},"type":"array"},"name":{"description":"Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"namespace":{"description":"Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.","type":"string"},"ownerReferences":{"description":"List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.","items":{"$ref":"#/definitions/v1VmOwnerReference"},"type":"array","x-kubernetes-patch-merge-key":"uid","x-kubernetes-patch-strategy":"merge"},"resourceVersion":{"description":"An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.","type":"string"},"selfLink":{"description":"SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.","type":"string"},"uid":{"description":"UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.","type":"string"}},"type":"object"},"v1VmOwnerReference":{"description":"OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.","properties":{"apiVersion":{"description":"API version of the referent.","type":"string"},"blockOwnerDeletion":{"description":"If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.","type":"boolean"},"controller":{"description":"If true, this reference points to the managing controller.","type":"boolean"},"kind":{"description":"Kind of the referent.","type":"string"},"name":{"description":"Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names","type":"string"},"uid":{"description":"UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids","type":"string"}},"required":["apiVersion","kind","name","uid"],"type":"object"},"v1VmPITTimer":{"properties":{"present":{"description":"Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.","type":"boolean"},"tickPolicy":{"description":"TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"discard\".","type":"string"}},"type":"object"},"v1VmPersistentVolumeClaimSpec":{"description":"PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes","properties":{"accessModes":{"description":"AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1","items":{"type":"string"},"type":"array"},"dataSource":{"$ref":"#/definitions/v1VmTypedLocalObjectReference"},"dataSourceRef":{"$ref":"#/definitions/v1VmTypedLocalObjectReference"},"resources":{"$ref":"#/definitions/v1VmCoreResourceRequirements"},"selector":{"$ref":"#/definitions/v1VmLabelSelector"},"storageClassName":{"description":"Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1","type":"string"},"volumeMode":{"description":"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.","type":"string"},"volumeName":{"description":"VolumeName is the binding reference to the PersistentVolume backing this claim.","type":"string"}},"type":"object"},"v1VmPersistentVolumeClaimVolumeSource":{"description":"PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims","properties":{"claimName":{"description":"ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims","type":"string"},"hotpluggable":{"description":"Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.","type":"boolean"},"readOnly":{"description":"Will force the ReadOnly setting in VolumeMounts. Default false.","type":"boolean"}},"required":["claimName"],"type":"object"},"v1VmPodAffinity":{"description":"Pod affinity is a group of inter pod affinity scheduling rules.","properties":{"preferredDuringSchedulingIgnoredDuringExecution":{"description":"The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.","items":{"$ref":"#/definitions/v1VmWeightedPodAffinityTerm"},"type":"array"},"requiredDuringSchedulingIgnoredDuringExecution":{"description":"If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.","items":{"$ref":"#/definitions/v1VmPodAffinityTerm"},"type":"array"}},"type":"object"},"v1VmPodAffinityTerm":{"description":"Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key \u003ctopologyKey\u003e matches that of any node on which a pod of the set of pods is running","properties":{"labelSelector":{"$ref":"#/definitions/v1VmLabelSelector"},"namespaceSelector":{"$ref":"#/definitions/v1VmLabelSelector"},"namespaces":{"description":"namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"","items":{"type":"string"},"type":"array"},"topologyKey":{"description":"This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.","type":"string"}},"required":["topologyKey"],"type":"object"},"v1VmPodDnsConfig":{"description":"PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.","properties":{"nameservers":{"description":"A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.","items":{"type":"string"},"type":"array"},"options":{"description":"A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.","items":{"$ref":"#/definitions/v1VmPodDnsConfigOption"},"type":"array"},"searches":{"description":"A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.","items":{"type":"string"},"type":"array"}},"type":"object"},"v1VmPodDnsConfigOption":{"description":"PodDNSConfigOption defines DNS resolver options of a pod.","properties":{"name":{"description":"Required.","type":"string"},"value":{"type":"string"}},"type":"object"},"v1VmPodNetwork":{"description":"Represents the stock pod network interface.","properties":{"vmIPv6NetworkCIDR":{"description":"IPv6 CIDR for the vm network. Defaults to fd10:0:2::/120 if not specified.","type":"string"},"vmNetworkCIDR":{"description":"CIDR for vm network. Default 10.0.2.0/24 if not specified.","type":"string"}},"type":"object"},"v1VmPort":{"description":"Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory","properties":{"name":{"description":"If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.","type":"string"},"port":{"description":"Number of port to expose for the virtual machine. This must be a valid port number, 0 \u003c x \u003c 65536.","format":"int32","type":"integer"},"protocol":{"description":"Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".","type":"string"}},"required":["port"],"type":"object"},"v1VmPreferenceMatcher":{"description":"PreferenceMatcher references a set of preference that is used to fill fields in the VMI template.","properties":{"inferFromVolume":{"description":"InferFromVolume lists the name of a volume that should be used to infer or discover the preference to be used through known annotations on the underlying resource. Once applied to the PreferenceMatcher this field is removed.","type":"string"},"kind":{"description":"Kind specifies which preference resource is referenced. Allowed values are: \"VirtualMachinePreference\" and \"VirtualMachineClusterPreference\". If not specified, \"VirtualMachineClusterPreference\" is used by default.","type":"string"},"name":{"description":"Name is the name of the VirtualMachinePreference or VirtualMachineClusterPreference","type":"string"},"revisionName":{"description":"RevisionName specifies a ControllerRevision containing a specific copy of the VirtualMachinePreference or VirtualMachineClusterPreference to be used. This is initially captured the first time the instancetype is applied to the VirtualMachineInstance.","type":"string"}},"type":"object"},"v1VmPreferredSchedulingTerm":{"description":"An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).","properties":{"preference":{"$ref":"#/definitions/v1VmNodeSelectorTerm"},"weight":{"description":"Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.","format":"int32","type":"integer"}},"required":["weight","preference"],"type":"object"},"v1VmProbe":{"description":"Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.","properties":{"exec":{"$ref":"#/definitions/v1VmExecAction"},"failureThreshold":{"description":"Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.","format":"int32","type":"integer"},"guestAgentPing":{"$ref":"#/definitions/v1VmGuestAgentPing"},"httpGet":{"$ref":"#/definitions/v1VmHttpGetAction"},"initialDelaySeconds":{"description":"Number of seconds after the VirtualMachineInstance has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes","format":"int32","type":"integer"},"periodSeconds":{"description":"How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.","format":"int32","type":"integer"},"successThreshold":{"description":"Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.","format":"int32","type":"integer"},"tcpSocket":{"$ref":"#/definitions/v1VmTcpSocketAction"},"timeoutSeconds":{"description":"Number of seconds after which the probe times out. For exec probes the timeout fails the probe but does not terminate the command running on the guest. This means a blocking command can result in an increasing load on the guest. A small buffer will be added to the resulting workload exec probe to compensate for delays caused by the qemu guest exec mechanism. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes","format":"int32","type":"integer"}},"type":"object"},"v1VmQemuGuestAgentSshPublicKeyAccessCredentialPropagation":{"properties":{"users":{"description":"Users represents a list of guest users that should have the ssh public keys added to their authorized_keys file.","items":{"type":"string"},"type":"array","x-kubernetes-list-type":"set"}},"required":["users"],"type":"object"},"v1VmQemuGuestAgentUserPasswordAccessCredentialPropagation":{"type":"object"},"v1VmQuantity":{"description":"Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n (Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9 \u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e \u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e \u003csign\u003e ::= \"+\" | \"-\" \u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e \u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e \u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.","type":"string"},"v1VmRTCTimer":{"properties":{"present":{"description":"Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.","type":"boolean"},"tickPolicy":{"description":"TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\".","type":"string"},"track":{"description":"Track the guest or the wall clock.","type":"string"}},"type":"object"},"v1VmRealtime":{"description":"Realtime holds the tuning knobs specific for realtime workloads.","properties":{"mask":{"description":"Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"","type":"string"}},"type":"object"},"v1VmRemoveVolumeOptions":{"description":"RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk","properties":{"dryRun":{"description":"When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed","items":{"type":"string"},"type":"array","x-kubernetes-list-type":"atomic"},"name":{"description":"Name represents the name that maps to both the disk and volume that should be removed","type":"string"}},"required":["name"],"type":"object"},"v1VmResourceFieldSelector":{"description":"ResourceFieldSelector represents container resources (cpu, memory) and their output format","properties":{"containerName":{"description":"Container name: required for volumes, optional for env vars","type":"string"},"divisor":{"$ref":"#/definitions/v1VmQuantity"},"resource":{"description":"Required: resource to select","type":"string"}},"required":["resource"],"type":"object"},"v1VmResourceRequirements":{"properties":{"limits":{"description":"Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".","type":"object"},"overcommitGuestOverhead":{"description":"Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.","type":"boolean"},"requests":{"description":"Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".","type":"object"}},"type":"object"},"v1VmRng":{"description":"Rng represents the random device passed from host","type":"object"},"v1VmSEV":{"type":"object"},"v1VmSecretVolumeSource":{"description":"SecretVolumeSource adapts a Secret into a volume.","properties":{"optional":{"description":"Specify whether the Secret or it's keys must be defined","type":"boolean"},"secretName":{"description":"Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret","type":"string"},"volumeLabel":{"description":"The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).","type":"string"}},"type":"object"},"v1VmServiceAccountVolumeSource":{"description":"ServiceAccountVolumeSource adapts a ServiceAccount into a volume.","properties":{"serviceAccountName":{"description":"Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/","type":"string"}},"type":"object"},"v1VmSnapshotVolumesLists":{"description":"SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot","properties":{"excludedVolumes":{"items":{"type":"string"},"type":"array","x-kubernetes-list-type":"set"},"includedVolumes":{"items":{"type":"string"},"type":"array","x-kubernetes-list-type":"set"}},"type":"object"},"v1VmSoundDevice":{"description":"Represents the user's configuration to emulate sound cards in the VMI.","properties":{"model":{"description":"We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9","type":"string"},"name":{"description":"User's defined name for this sound device","type":"string"}},"required":["name"],"type":"object"},"v1VmSshPublicKeyAccessCredential":{"description":"SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest","properties":{"propagationMethod":{"$ref":"#/definitions/v1VmSshPublicKeyAccessCredentialPropagationMethod"},"source":{"$ref":"#/definitions/v1VmSshPublicKeyAccessCredentialSource"}},"required":["source","propagationMethod"],"type":"object"},"v1VmSshPublicKeyAccessCredentialPropagationMethod":{"description":"SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.","properties":{"configDrive":{"$ref":"#/definitions/v1VmConfigDriveSshPublicKeyAccessCredentialPropagation"},"qemuGuestAgent":{"$ref":"#/definitions/v1VmQemuGuestAgentSshPublicKeyAccessCredentialPropagation"}},"type":"object"},"v1VmSshPublicKeyAccessCredentialSource":{"description":"SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.","properties":{"secret":{"$ref":"#/definitions/v1VmAccessCredentialSecretSource"}},"type":"object"},"v1VmStorageSpec":{"description":"StorageSpec defines the Storage type specification","properties":{"accessModes":{"description":"AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1","items":{"type":"string"},"type":"array"},"dataSource":{"$ref":"#/definitions/v1VmTypedLocalObjectReference"},"resources":{"$ref":"#/definitions/v1VmCoreResourceRequirements"},"selector":{"$ref":"#/definitions/v1VmLabelSelector"},"storageClassName":{"description":"Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1","type":"string"},"volumeMode":{"description":"volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.","type":"string"},"volumeName":{"description":"VolumeName is the binding reference to the PersistentVolume backing this claim.","type":"string"}},"type":"object"},"v1VmSyNICTimer":{"properties":{"direct":{"$ref":"#/definitions/v1VmFeatureState"},"enabled":{"type":"boolean"}},"type":"object"},"v1VmSysprepSource":{"description":"Represents a Sysprep volume source.","properties":{"configMap":{"$ref":"#/definitions/v1VmLocalObjectReference"},"secret":{"$ref":"#/definitions/v1VmLocalObjectReference"}},"type":"object"},"v1VmTPMDevice":{"type":"object"},"v1VmTcpSocketAction":{"description":"TCPSocketAction describes an action based on opening a socket","properties":{"host":{"description":"Optional: Host name to connect to, defaults to the pod IP.","type":"string"},"port":{"description":"Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.","type":["string","number"]}},"required":["port"],"type":"object"},"v1VmTimer":{"description":"Represents all available timers in a vmi.","properties":{"hpet":{"$ref":"#/definitions/v1VmHPETTimer"},"hyperv":{"$ref":"#/definitions/v1VmHypervTimer"},"kvm":{"$ref":"#/definitions/v1VmKVmTimer"},"pit":{"$ref":"#/definitions/v1VmPITTimer"},"rtc":{"$ref":"#/definitions/v1VmRTCTimer"}},"type":"object"},"v1VmToleration":{"description":"The pod this Toleration is attached to tolerates any taint that matches the triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.","properties":{"effect":{"description":"Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.","type":"string"},"key":{"description":"Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.","type":"string"},"operator":{"description":"Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.","type":"string"},"tolerationSeconds":{"description":"TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.","format":"int64","type":"integer"},"value":{"description":"Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.","type":"string"}},"type":"object"},"v1VmTopologySpreadConstraint":{"description":"TopologySpreadConstraint specifies how to spread matching pods among the given topology.","properties":{"labelSelector":{"$ref":"#/definitions/v1VmLabelSelector"},"maxSkew":{"description":"MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.","format":"int32","type":"integer"},"topologyKey":{"description":"TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.","type":"string"},"whenUnsatisfiable":{"description":"WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.","type":"string"}},"required":["maxSkew","topologyKey","whenUnsatisfiable"],"type":"object"},"v1VmTypedLocalObjectReference":{"description":"TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.","properties":{"apiGroup":{"description":"APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.","type":"string"},"kind":{"description":"Kind is the type of resource being referenced","type":"string"},"name":{"description":"Name is the name of resource being referenced","type":"string"}},"required":["kind","name"],"type":"object"},"v1VmUserPasswordAccessCredential":{"description":"UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.","properties":{"propagationMethod":{"$ref":"#/definitions/v1VmUserPasswordAccessCredentialPropagationMethod"},"source":{"$ref":"#/definitions/v1VmUserPasswordAccessCredentialSource"}},"required":["source","propagationMethod"],"type":"object"},"v1VmUserPasswordAccessCredentialPropagationMethod":{"description":"UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.","properties":{"qemuGuestAgent":{"$ref":"#/definitions/v1VmQemuGuestAgentUserPasswordAccessCredentialPropagation"}},"type":"object"},"v1VmUserPasswordAccessCredentialSource":{"description":"UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.","properties":{"secret":{"$ref":"#/definitions/v1VmAccessCredentialSecretSource"}},"type":"object"},"v1VmVGPUDisplayOptions":{"properties":{"enabled":{"description":"Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.","type":"boolean"},"ramFB":{"$ref":"#/definitions/v1VmFeatureState"}},"type":"object"},"v1VmVGPUOptions":{"properties":{"display":{"$ref":"#/definitions/v1VmVGPUDisplayOptions"}},"type":"object"},"v1VmVirtualMachineCondition":{"description":"VirtualMachineCondition represents the state of VirtualMachine","properties":{"lastProbeTime":{"type":"string"},"lastTransitionTime":{"type":"string"},"message":{"type":"string"},"reason":{"type":"string"},"status":{"type":"string"},"type":{"type":"string"}},"required":["type","status"],"type":"object"},"v1VmVirtualMachineInstanceSpec":{"description":"VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.","properties":{"accessCredentials":{"description":"Specifies a set of public keys to inject into the vm guest","items":{"$ref":"#/definitions/v1VmAccessCredential"},"type":"array","x-kubernetes-list-type":"atomic"},"affinity":{"$ref":"#/definitions/v1VmAffinity"},"dnsConfig":{"$ref":"#/definitions/v1VmPodDnsConfig"},"dnsPolicy":{"description":"Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.","type":"string"},"domain":{"$ref":"#/definitions/v1VmDomainSpec"},"evictionStrategy":{"description":"EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.","type":"string"},"hostname":{"description":"Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.","type":"string"},"livenessProbe":{"$ref":"#/definitions/v1VmProbe"},"networks":{"description":"List of networks that can be attached to a vm's virtual interface.","items":{"$ref":"#/definitions/v1VmNetwork"},"type":"array"},"nodeSelector":{"additionalProperties":{"type":"string"},"description":"NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node's labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/","type":"object"},"priorityClassName":{"description":"If specified, indicates the pod's priority. If not specified, the pod priority will be default or zero if there is no default.","type":"string"},"readinessProbe":{"$ref":"#/definitions/v1VmProbe"},"schedulerName":{"description":"If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.","type":"string"},"startStrategy":{"description":"StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.","type":"string"},"subdomain":{"description":"If specified, the fully qualified vmi hostname will be \"\u003chostname\u003e.\u003csubdomain\u003e.\u003cpod namespace\u003e.svc.\u003ccluster domain\u003e\". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.","type":"string"},"terminationGracePeriodSeconds":{"description":"Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.","format":"int64","type":"integer"},"tolerations":{"description":"If toleration is specified, obey all the toleration rules.","items":{"$ref":"#/definitions/v1VmToleration"},"type":"array"},"topologySpreadConstraints":{"description":"TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.","items":{"$ref":"#/definitions/v1VmTopologySpreadConstraint"},"type":"array","x-kubernetes-list-map-keys":["topologyKey","whenUnsatisfiable"],"x-kubernetes-list-type":"map","x-kubernetes-patch-merge-key":"topologyKey","x-kubernetes-patch-strategy":"merge"},"volumes":{"description":"List of volumes that can be mounted by disks belonging to the vmi.","items":{"$ref":"#/definitions/v1VmVolume"},"type":"array"}},"required":["domain"],"type":"object"},"v1VmVirtualMachineInstanceTemplateSpec":{"properties":{"metadata":{"$ref":"#/definitions/v1VmObjectMeta"},"spec":{"$ref":"#/definitions/v1VmVirtualMachineInstanceSpec"}},"type":"object"},"v1VmVirtualMachineMemoryDumpRequest":{"description":"VirtualMachineMemoryDumpRequest represent the memory dump request phase and info","properties":{"claimName":{"description":"ClaimName is the name of the pvc that will contain the memory dump","type":"string"},"endTimestamp":{"$ref":"#/definitions/v1Time"},"fileName":{"description":"FileName represents the name of the output file","type":"string"},"message":{"description":"Message is a detailed message about failure of the memory dump","type":"string"},"phase":{"description":"Phase represents the memory dump phase","type":"string"},"remove":{"description":"Remove represents request of dissociating the memory dump pvc","type":"boolean"},"startTimestamp":{"$ref":"#/definitions/v1Time"}},"required":["claimName","phase"],"type":"object"},"v1VmVirtualMachineStartFailure":{"description":"VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status","properties":{"consecutiveFailCount":{"format":"int32","type":"integer"},"lastFailedVMIUID":{"type":"string"},"retryAfterTimestamp":{"$ref":"#/definitions/v1Time"}},"type":"object"},"v1VmVirtualMachineStateChangeRequest":{"properties":{"action":{"description":"Indicates the type of action that is requested. e.g. Start or Stop","type":"string"},"data":{"additionalProperties":{"type":"string"},"description":"Provides additional data in order to perform the Action","type":"object"},"uid":{"description":"Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable","type":"string"}},"required":["action"],"type":"object"},"v1VmVirtualMachineVolumeRequest":{"properties":{"addVolumeOptions":{"$ref":"#/definitions/v1VmAddVolumeOptions"},"removeVolumeOptions":{"$ref":"#/definitions/v1VmRemoveVolumeOptions"}},"type":"object"},"v1VmVolume":{"description":"Volume represents a named volume in a vmi.","properties":{"cloudInitConfigDrive":{"$ref":"#/definitions/v1VmCloudInitConfigDriveSource"},"cloudInitNoCloud":{"$ref":"#/definitions/v1VmCloudInitNoCloudSource"},"configMap":{"$ref":"#/definitions/v1VmConfigMapVolumeSource"},"containerDisk":{"$ref":"#/definitions/v1VmContainerDiskSource"},"dataVolume":{"$ref":"#/definitions/v1VmCoreDataVolumeSource"},"downwardAPI":{"$ref":"#/definitions/v1VmDownwardApiVolumeSource"},"downwardMetrics":{"$ref":"#/definitions/v1VmDownwardMetricsVolumeSource"},"emptyDisk":{"$ref":"#/definitions/v1VmEmptyDiskSource"},"ephemeral":{"$ref":"#/definitions/v1VmEphemeralVolumeSource"},"hostDisk":{"$ref":"#/definitions/v1VmHostDisk"},"memoryDump":{"$ref":"#/definitions/v1VmMemoryDumpVolumeSource"},"name":{"description":"Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","type":"string"},"persistentVolumeClaim":{"$ref":"#/definitions/v1VmPersistentVolumeClaimVolumeSource"},"secret":{"$ref":"#/definitions/v1VmSecretVolumeSource"},"serviceAccount":{"$ref":"#/definitions/v1VmServiceAccountVolumeSource"},"sysprep":{"$ref":"#/definitions/v1VmSysprepSource"}},"required":["name"],"type":"object"},"v1VmVolumeSnapshotStatus":{"properties":{"enabled":{"description":"True if the volume supports snapshotting","type":"boolean"},"name":{"description":"Volume name","type":"string"},"reason":{"description":"Empty if snapshotting is enabled, contains reason otherwise","type":"string"}},"required":["name","enabled"],"type":"object"},"v1VmWatchdog":{"description":"Named watchdog device.","properties":{"i6300esb":{"$ref":"#/definitions/v1VmI6300ESBWatchdog"},"name":{"description":"Name of the watchdog.","type":"string"}},"required":["name"],"type":"object"},"v1VmWeightedPodAffinityTerm":{"description":"The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)","properties":{"podAffinityTerm":{"$ref":"#/definitions/v1VmPodAffinityTerm"},"weight":{"description":"weight associated with matching the corresponding podAffinityTerm, in the range 1-100.","format":"int32","type":"integer"}},"required":["weight","podAffinityTerm"],"type":"object"},"v1VsphereAccount":{"description":"VSphere account information","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the account.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1VsphereCloudAccount"},"status":{"$ref":"#/definitions/v1CloudAccountStatus"}},"type":"object"},"v1VsphereAccounts":{"properties":{"items":{"items":{"$ref":"#/definitions/v1VsphereAccount"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1VsphereCloudAccount":{"properties":{"insecure":{"description":"Insecure is a flag that controls whether or not to validate the vSphere server's certificate.","type":"boolean","x-omitempty":false},"password":{"type":"string"},"username":{"type":"string"},"vcenterServer":{"description":"VcenterServer is the address of the vSphere endpoint","type":"string"}},"required":["vcenterServer","username","password"],"type":"object"},"v1VsphereCloudClusterConfigEntity":{"description":"vSphere cloud cluster config entity","properties":{"clusterConfig":{"$ref":"#/definitions/v1VsphereClusterConfigEntity"}},"type":"object"},"v1VsphereCloudConfig":{"description":"VsphereCloudConfig is the Schema for the vspherecloudconfigs API","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Cloud type of the cloud config","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1VsphereCloudConfigSpec"},"status":{"$ref":"#/definitions/v1VsphereCloudConfigStatus"}},"type":"object"},"v1VsphereCloudConfigSpec":{"description":"VsphereCloudConfigSpec defines the desired state of VsphereCloudConfig","properties":{"cloudAccountRef":{"$ref":"#/definitions/v1ObjectReference","description":"cloudAccountRef should point to the secret which contains VsphereCloudAccount"},"clusterConfig":{"$ref":"#/definitions/v1VsphereClusterConfig"},"edgeHostRef":{"$ref":"#/definitions/v1ObjectReference","description":"Appliance (Edge Host) uid for Edge env"},"machinePoolConfig":{"items":{"$ref":"#/definitions/v1VsphereMachinePoolConfig"},"type":"array"}},"required":["clusterConfig","machinePoolConfig"],"type":"object"},"v1VsphereCloudConfigStatus":{"description":"VsphereCloudConfigStatus defines the observed state of VsphereCloudConfig","properties":{"ansibleDigest":{"type":"string"},"conditions":{"items":{"$ref":"#/definitions/v1ClusterCondition"},"type":"array"},"isAddonLayer":{"description":"addon layers present in spc","type":"boolean"},"lastOVACreated":{"type":"string"},"lastVMExported":{"type":"string"},"nodeImage":{"$ref":"#/definitions/v1VsphereImage"},"roleDigest":{"additionalProperties":{"type":"string"},"description":"this map will be for ansible roles present in eack pack","type":"object"},"sourceImageId":{"description":"sourceImageId, it can be from packref's annotations or from pack.json","type":"string"},"uploadOvaS3":{"description":"UploadOVAS3 will hold last image name which uploaded to S3","type":"string"},"useCapiImage":{"description":"If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add","type":"boolean"}},"type":"object"},"v1VsphereCloudDatacenter":{"description":"Vsphere datacenter","properties":{"computeClusters":{"items":{"$ref":"#/definitions/v1VsphereComputeCluster"},"type":"array"},"folders":{"items":{"type":"string"},"type":"array"},"name":{"type":"string"}},"type":"object"},"v1VsphereClusterConfig":{"properties":{"controlPlaneEndpoint":{"$ref":"#/definitions/v1ControlPlaneEndPoint","description":"The optional control plane endpoint, which can be an IP or FQDN"},"ntpServers":{"description":"NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.","items":{"type":"string"},"type":"array"},"placement":{"$ref":"#/definitions/v1VspherePlacementConfig","description":"Placement configuration Placement config in ClusterConfig serve as default values for each MachinePool"},"sshKeys":{"description":"SSHKeys specifies a list of ssh authorized keys for the 'spectro' user","items":{"type":"string"},"type":"array"},"staticIp":{"description":"whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name","type":"boolean"}},"required":["placement"],"type":"object"},"v1VsphereClusterConfigEntity":{"properties":{"controlPlaneEndpoint":{"$ref":"#/definitions/v1ControlPlaneEndPoint","description":"The optional control plane endpoint, which can be an IP or FQDN"},"ntpServers":{"description":"NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.","items":{"type":"string"},"type":"array"},"placement":{"$ref":"#/definitions/v1VspherePlacementConfigEntity","description":"Placement configuration Placement config in ClusterConfig serve as default values for each MachinePool"},"sshKeys":{"description":"SSHKeys specifies a list of ssh authorized keys for the 'spectro' user","items":{"type":"string"},"type":"array"},"staticIp":{"description":"whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name","type":"boolean"}},"required":["placement"],"type":"object"},"v1VsphereComputeCluster":{"description":"Vsphere compute cluster","properties":{"datastores":{"items":{"type":"string"},"type":"array","uniqueItems":true},"name":{"type":"string"},"networks":{"items":{"type":"string"},"type":"array","uniqueItems":true},"resourcePools":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1VsphereComputeClusterResources":{"description":"Datacenter and its resources like datastore, resoucepool, folders","properties":{"computecluster":{"$ref":"#/definitions/v1VsphereComputeCluster"},"datacenter":{"description":"Name of the datacenter","type":"string"}},"type":"object"},"v1VsphereDatacenter":{"description":"List of Datacenter with computeclusters","properties":{"computeclusters":{"description":"List of the VSphere compute clusters in datacenter","items":{"type":"string"},"type":"array","uniqueItems":true},"datacenter":{"description":"name of the datacenter of the VSphere","type":"string"},"folders":{"description":"List of the VSphere folders in datacenter","items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1VsphereDatacenters":{"description":"List of Datacenters with computeclusters","properties":{"items":{"description":"List of associated datacenters","items":{"$ref":"#/definitions/v1VsphereDatacenter"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1VsphereDnsMapping":{"description":"VSphere DNS Mapping","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1VsphereDnsMappingSpec"}},"type":"object"},"v1VsphereDnsMappingSpec":{"description":"VSphere DNS Mapping Spec","properties":{"datacenter":{"description":"VSphere datacenter name","type":"string"},"dnsName":{"description":"VSphere DNS name","type":"string"},"network":{"description":"VSphere network name","type":"string"},"networkUrl":{"description":"VSphere network URL","readOnly":true,"type":"string"},"privateGatewayUid":{"description":"VSphere private gateway uid","type":"string"}},"required":["privateGatewayUid","datacenter","network","dnsName"],"type":"object"},"v1VsphereDnsMappings":{"properties":{"items":{"description":"List of vSphere DNS mapping","items":{"$ref":"#/definitions/v1VsphereDnsMapping"},"type":"array","uniqueItems":true}},"required":["items"],"type":"object"},"v1VsphereEnv":{"description":"Vsphere environment entity","properties":{"version":{"description":"Version of vsphere environment","type":"string"}},"type":"object"},"v1VsphereImage":{"description":"A generated Image should always be a template which resides inside vsphere Will not generate a OVA file out of the image OVA can be used as a base input of the os pack, that's internal to the pack","properties":{"fullPath":{"description":"full path of the image template location it contains datacenter/folder/templatename etc eg: /mydc/vm/template/spectro/workerpool-1-centos","type":"string"},"state":{"type":"string"}},"type":"object"},"v1VsphereInstanceType":{"properties":{"diskGiB":{"description":"DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.","format":"int32","type":"integer"},"memoryMiB":{"description":"MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.","format":"int64","type":"integer"},"numCPUs":{"description":"NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.","format":"int32","type":"integer"}},"required":["numCPUs","memoryMiB","diskGiB"],"type":"object"},"v1VsphereMachine":{"description":"vSphere cloud VM definition","properties":{"apiVersion":{"description":"Deprecated. Not used for the resource info.","type":"string"},"kind":{"description":"Deprecated. Cloud type of the machine.","type":"string"},"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1VsphereMachineSpec"},"status":{"$ref":"#/definitions/v1CloudMachineStatus"}},"type":"object"},"v1VsphereMachinePoolCloudConfigEntity":{"properties":{"instanceType":{"$ref":"#/definitions/v1VsphereInstanceType"},"placements":{"description":"Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster","items":{"$ref":"#/definitions/v1VspherePlacementConfigEntity"},"type":"array"}}},"v1VsphereMachinePoolConfig":{"properties":{"additionalLabels":{"additionalProperties":{"type":"string"},"description":"additionalLabels","type":"object"},"additionalTags":{"additionalProperties":{"type":"string"},"description":"AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole","type":"object"},"instanceType":{"$ref":"#/definitions/v1VsphereInstanceType","description":"InstanceType defines the required CPU, Memory, Storage"},"isControlPlane":{"description":"whether this pool is for control plane","type":"boolean","x-omitempty":false},"labels":{"description":"labels for this pool, example: master/worker, gpu, windows","items":{"type":"string"},"type":"array"},"machinePoolProperties":{"$ref":"#/definitions/v1MachinePoolProperties"},"maxSize":{"description":"max size of the pool, for scaling","format":"int32","type":"integer"},"minSize":{"description":"min size of the pool, for scaling","format":"int32","type":"integer"},"name":{"type":"string"},"nodeRepaveInterval":{"description":"Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster","format":"int32","type":"integer"},"placements":{"description":"Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster","items":{"$ref":"#/definitions/v1VspherePlacementConfig"},"type":"array"},"size":{"description":"size of the pool, number of machines","format":"int32","type":"integer"},"taints":{"description":"master or worker taints","items":{"$ref":"#/definitions/v1Taint"},"type":"array","uniqueItems":true},"updateStrategy":{"$ref":"#/definitions/v1UpdateStrategy","description":"rolling update strategy for this machinepool if not specified, will use ScaleOut"},"useControlPlaneAsWorker":{"description":"if IsControlPlane==true \u0026\u0026 useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools","type":"boolean","x-omitempty":false}},"required":["isControlPlane","instanceType"],"type":"object"},"v1VsphereMachinePoolConfigEntity":{"properties":{"cloudConfig":{"$ref":"#/definitions/v1VsphereMachinePoolCloudConfigEntity"},"poolConfig":{"$ref":"#/definitions/v1MachinePoolConfigEntity"}},"required":["cloudConfig"],"type":"object"},"v1VsphereMachineSpec":{"description":"vSphere cloud VM definition spec","properties":{"images":{"items":{"$ref":"#/definitions/v1VsphereImage"},"type":"array"},"instanceType":{"$ref":"#/definitions/v1VsphereInstanceType"},"nics":{"items":{"$ref":"#/definitions/v1VsphereNic"},"type":"array"},"ntpServers":{"description":"NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.","items":{"type":"string"},"type":"array"},"placement":{"$ref":"#/definitions/v1VspherePlacementConfig","description":"Placement configuration"},"vcenterServer":{"description":"VcenterServer is the address of the vSphere endpoint","type":"string"}},"required":["vcenterServer","nics","placement"],"type":"object"},"v1VsphereMachines":{"description":"vSphere machine list","properties":{"items":{"items":{"$ref":"#/definitions/v1VsphereMachine"},"type":"array","uniqueItems":true},"listmeta":{"$ref":"#/definitions/v1ListMetaData"}},"required":["items"],"type":"object"},"v1VsphereNetworkConfig":{"properties":{"ipPool":{"$ref":"#/definitions/v1IPPool","description":"when staticIP=true, need to provide IPPool"},"networkName":{"description":"NetworkName is the name of the network in which VMs are created/located.","type":"string"},"parentPoolRef":{"$ref":"#/definitions/v1ObjectReference","description":"ParentPoolRef reference to the ParentPool which allocates IPs for this IPPool"},"staticIp":{"description":"support dhcp or static IP, if false, use DHCP","type":"boolean"}},"required":["networkName"],"type":"object"},"v1VsphereNetworkConfigEntity":{"properties":{"networkName":{"description":"NetworkName is the name of the network in which VMs are created/located.","type":"string"},"parentPoolUid":{"description":"ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool","type":"string"},"staticIp":{"description":"support dhcp or static IP, if false, use DHCP","type":"boolean"}},"required":["networkName"],"type":"object"},"v1VsphereNic":{"description":"vSphere network interface","properties":{"index":{"format":"int8","type":"integer"},"macAddress":{"type":"string"},"networkName":{"type":"string"},"privateIPs":{"items":{"type":"string"},"type":"array"}},"required":["networkName"],"type":"object"},"v1VsphereOverlordClusterConfigEntity":{"properties":{"controlPlaneEndpoint":{"$ref":"#/definitions/v1ControlPlaneEndPoint","description":"The optional control plane endpoint, which can be an IP or FQDN"},"ntpServers":{"description":"NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.","items":{"type":"string"},"type":"array"},"placements":{"description":"Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster","items":{"$ref":"#/definitions/v1VspherePlacementConfigEntity"},"type":"array"},"sshKeys":{"description":"SSHKeys specifies a list of ssh authorized keys for the 'spectro' user","items":{"type":"string"},"type":"array"},"staticIp":{"description":"whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name","type":"boolean"}},"type":"object"},"v1VspherePlacementConfig":{"description":"Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool","properties":{"cluster":{"description":"Cluster is the computecluster in vsphere","type":"string"},"datacenter":{"description":"Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.","type":"string"},"datastore":{"description":"Datastore is the datastore in which VMs are created/located.","type":"string"},"folder":{"description":"Folder is the folder in which VMs are created/located.","type":"string"},"imageTemplateFolder":{"description":"ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates","type":"string"},"network":{"$ref":"#/definitions/v1VsphereNetworkConfig","description":"network info"},"resourcePool":{"description":"ResourcePool is the resource pool within the above computecluster Cluster","type":"string"},"storagePolicyName":{"description":"StoragePolicyName of the storage policy to use with this Virtual Machine","type":"string"},"uid":{"description":"UID for this placement","type":"string"}},"type":"object"},"v1VspherePlacementConfigEntity":{"description":"Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool","properties":{"cluster":{"description":"Cluster is the computecluster in vsphere","type":"string"},"datacenter":{"description":"Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.","type":"string"},"datastore":{"description":"Datastore is the datastore in which VMs are created/located.","type":"string"},"folder":{"description":"Folder is the folder in which VMs are created/located.","type":"string"},"imageTemplateFolder":{"description":"ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates","type":"string"},"network":{"$ref":"#/definitions/v1VsphereNetworkConfigEntity","description":"network info"},"resourcePool":{"description":"ResourcePool is the resource pool within the above computecluster Cluster","type":"string"},"storagePolicyName":{"description":"StoragePolicyName of the storage policy to use with this Virtual Machine","type":"string"},"uid":{"description":"UID for this placement","type":"string"}},"type":"object"},"v1Workspace":{"description":"Workspace information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1WorkspaceSpec"},"status":{"$ref":"#/definitions/v1WorkspaceStatus"}}},"v1WorkspaceBackup":{"description":"Workspace backup","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1WorkspaceBackupSpec"},"status":{"$ref":"#/definitions/v1WorkspaceBackupStatus"}}},"v1WorkspaceBackupClusterRef":{"description":"Workspace backup cluster ref","properties":{"backupName":{"type":"string"},"clusterUid":{"type":"string"}}},"v1WorkspaceBackupConfig":{"description":"Workspace backup config","properties":{"backupConfig":{"$ref":"#/definitions/v1ClusterBackupConfig"},"clusterUids":{"items":{"type":"string"},"type":"array","uniqueItems":true},"includeAllClusters":{"type":"boolean"}}},"v1WorkspaceBackupConfigEntity":{"description":"Cluster backup config","properties":{"backupConfig":{"$ref":"#/definitions/v1ClusterBackupConfig"},"clusterUids":{"items":{"type":"string"},"type":"array","uniqueItems":true},"includeAllClusters":{"type":"boolean"}}},"v1WorkspaceBackupDeleteEntity":{"description":"Cluster backup delete config","properties":{"clusterConfigs":{"items":{"$ref":"#/definitions/v1WorkspaceBackupClusterRef"},"type":"array","uniqueItems":true},"requestUid":{"type":"string"}}},"v1WorkspaceBackupSpec":{"description":"Workspace backup spec","properties":{"config":{"$ref":"#/definitions/v1WorkspaceBackupConfig"},"workspaceUid":{"type":"string"}}},"v1WorkspaceBackupState":{"description":"Workspace backup state","properties":{"deleteState":{"type":"string"},"state":{"type":"string"}}},"v1WorkspaceBackupStatus":{"description":"Workspace backup status","properties":{"workspaceBackupStatuses":{"items":{"$ref":"#/definitions/v1WorkspaceBackupStatusMeta"},"type":"array"}}},"v1WorkspaceBackupStatusConfig":{"description":"Workspace backup status config","properties":{"backupName":{"type":"string"},"durationInHours":{"format":"int64","type":"number"},"includeAllDisks":{"type":"boolean"},"includeClusterResources":{"type":"boolean"},"namespaces":{"items":{"type":"string"},"type":"array","uniqueItems":true}}},"v1WorkspaceBackupStatusMeta":{"description":"Workspace backup status meta","properties":{"actor":{"$ref":"#/definitions/v1ClusterFeatureActor"},"requestUid":{"type":"string"},"workspaceBackupConfig":{"$ref":"#/definitions/v1WorkspaceClusterBackupConfig"}}},"v1WorkspaceClusterBackupConfig":{"description":"Workspace cluster backup config","properties":{"backupName":{"type":"string"},"backupState":{"$ref":"#/definitions/v1WorkspaceBackupState"},"backupTime":{"$ref":"#/definitions/v1Time"},"clusterBackupRefs":{"items":{"$ref":"#/definitions/v1WorkspaceClusterBackupResponse"},"type":"array"},"config":{"$ref":"#/definitions/v1WorkspaceBackupStatusConfig"},"requestTime":{"$ref":"#/definitions/v1Time"}}},"v1WorkspaceClusterBackupResponse":{"description":"Workspace cluster backup response","properties":{"backupStatusMeta":{"$ref":"#/definitions/v1BackupStatusMeta"},"backupUid":{"type":"string"},"clusterName":{"type":"string"},"clusterUid":{"type":"string"}}},"v1WorkspaceClusterNamespace":{"description":"Workspace cluster namespace","properties":{"image":{"$ref":"#/definitions/v1WorkspaceNamespaceImage"},"isRegex":{"type":"boolean","x-omitempty":false},"name":{"type":"string"},"namespaceResourceAllocation":{"$ref":"#/definitions/v1WorkspaceNamespaceResourceAllocation"}}},"v1WorkspaceClusterNamespacesEntity":{"description":"Workspace cluster namespaces update entity","properties":{"clusterNamespaces":{"items":{"$ref":"#/definitions/v1WorkspaceClusterNamespace"},"type":"array","uniqueItems":true},"clusterRefs":{"items":{"$ref":"#/definitions/v1WorkspaceClusterRef"},"type":"array","uniqueItems":true},"quota":{"$ref":"#/definitions/v1WorkspaceQuota"}}},"v1WorkspaceClusterRef":{"description":"Workspace cluster reference","properties":{"clusterName":{"type":"string"},"clusterUid":{"type":"string"}}},"v1WorkspaceClusterRestoreConfig":{"description":"Workspace cluster restore config","properties":{"backupName":{"type":"string"},"clusterRestoreRefs":{"items":{"$ref":"#/definitions/v1WorkspaceClusterRestoreResponse"},"type":"array"},"restoreState":{"$ref":"#/definitions/v1WorkspaceRestoreState"},"restoreTime":{"$ref":"#/definitions/v1Time"}}},"v1WorkspaceClusterRestoreResponse":{"description":"Workspace cluster restore response","properties":{"backupName":{"type":"string"},"clusterName":{"type":"string"},"clusterUid":{"type":"string"},"restoreStatusMeta":{"$ref":"#/definitions/v1WorkspaceClusterRestoreState"},"restoreUid":{"type":"string"}}},"v1WorkspaceClusterRestoreState":{"description":"Workspace cluster restore state","properties":{"msg":{"type":"string"},"restoreTime":{"$ref":"#/definitions/v1Time"},"state":{"type":"string"}}},"v1WorkspaceClusterWorkloadCronJobs":{"description":"Workspace cluster workload cronjobs summary","properties":{"cronjobs":{"items":{"$ref":"#/definitions/v1ClusterWorkloadCronJob"},"type":"array"},"metadata":{"$ref":"#/definitions/v1RelatedObject"}},"type":"object"},"v1WorkspaceClusterWorkloadDaemonSets":{"description":"Workspace cluster workload daemonsets summary","properties":{"daemonSets":{"items":{"$ref":"#/definitions/v1ClusterWorkloadDaemonSet"},"type":"array"},"metadata":{"$ref":"#/definitions/v1RelatedObject"}},"type":"object"},"v1WorkspaceClusterWorkloadDeployments":{"description":"Workspace cluster workload deployments summary","properties":{"deployments":{"items":{"$ref":"#/definitions/v1ClusterWorkloadDeployment"},"type":"array"},"metadata":{"$ref":"#/definitions/v1RelatedObject"}},"type":"object"},"v1WorkspaceClusterWorkloadJobs":{"description":"Workspace cluster workload jobs summary","properties":{"jobs":{"items":{"$ref":"#/definitions/v1ClusterWorkloadJob"},"type":"array"},"metadata":{"$ref":"#/definitions/v1RelatedObject"}},"type":"object"},"v1WorkspaceClusterWorkloadNamespaces":{"description":"Workspace cluster workload namespaces summary","properties":{"metadata":{"$ref":"#/definitions/v1RelatedObject"},"namespaces":{"items":{"$ref":"#/definitions/v1ClusterWorkloadNamespace"},"type":"array"}},"type":"object"},"v1WorkspaceClusterWorkloadPods":{"description":"Workspace cluster workload pods summary","properties":{"metadata":{"$ref":"#/definitions/v1RelatedObject"},"pods":{"items":{"$ref":"#/definitions/v1ClusterWorkloadPod"},"type":"array"}},"type":"object"},"v1WorkspaceClusterWorkloadRoleBindings":{"description":"Workspace cluster workload rbac bindings summary","properties":{"bindings":{"items":{"$ref":"#/definitions/v1ClusterWorkloadRoleBinding"},"type":"array"},"metadata":{"$ref":"#/definitions/v1RelatedObject"}},"type":"object"},"v1WorkspaceClusterWorkloadStatefulSets":{"description":"Workspace cluster workload statefulsets summary","properties":{"metadata":{"$ref":"#/definitions/v1RelatedObject"},"statefulSets":{"items":{"$ref":"#/definitions/v1ClusterWorkloadStatefulSet"},"type":"array"}},"type":"object"},"v1WorkspaceClustersWorkloadCronJobs":{"description":"Workspace clusters workload cronjobs summary","properties":{"clusters":{"items":{"$ref":"#/definitions/v1WorkspaceClusterWorkloadCronJobs"},"type":"array"},"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"}},"type":"object"},"v1WorkspaceClustersWorkloadDaemonSets":{"description":"Workspace clusters workload statefulsets summary","properties":{"clusters":{"items":{"$ref":"#/definitions/v1WorkspaceClusterWorkloadDaemonSets"},"type":"array"},"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"}},"type":"object"},"v1WorkspaceClustersWorkloadDeployments":{"description":"Workspace clusters workload deployments summary","properties":{"clusters":{"items":{"$ref":"#/definitions/v1WorkspaceClusterWorkloadDeployments"},"type":"array"},"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"}},"type":"object"},"v1WorkspaceClustersWorkloadJobs":{"description":"Workspace clusters workload jobs summary","properties":{"clusters":{"items":{"$ref":"#/definitions/v1WorkspaceClusterWorkloadJobs"},"type":"array"},"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"}},"type":"object"},"v1WorkspaceClustersWorkloadNamespaces":{"description":"Workspace clusters workload namespaces summary","properties":{"clusters":{"items":{"$ref":"#/definitions/v1WorkspaceClusterWorkloadNamespaces"},"type":"array"},"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"}},"type":"object"},"v1WorkspaceClustersWorkloadPods":{"description":"Workspace clusters workload pods summary","properties":{"clusters":{"items":{"$ref":"#/definitions/v1WorkspaceClusterWorkloadPods"},"type":"array"},"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"}},"type":"object"},"v1WorkspaceClustersWorkloadRoleBindings":{"description":"Workspace clusters workload rbac bindings summary","properties":{"clusters":{"items":{"$ref":"#/definitions/v1WorkspaceClusterWorkloadRoleBindings"},"type":"array"},"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"}},"type":"object"},"v1WorkspaceClustersWorkloadStatefulSets":{"description":"Workspace clusters workload statefulsets summary","properties":{"clusters":{"items":{"$ref":"#/definitions/v1WorkspaceClusterWorkloadStatefulSets"},"type":"array"},"metadata":{"$ref":"#/definitions/v1ObjectMetaInputEntity"}},"type":"object"},"v1WorkspaceEntity":{"description":"Workspace information","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1WorkspaceSpec"}}},"v1WorkspaceError":{"description":"Workspace error","properties":{"clusterUid":{"type":"string"},"msg":{"type":"string"},"name":{"type":"string"},"resourceType":{"type":"string"}}},"v1WorkspaceNamespaceImage":{"description":"Workspace namespace image information","properties":{"blackListedImages":{"items":{"type":"string"},"type":"array","uniqueItems":true}}},"v1WorkspaceNamespaceResourceAllocation":{"description":"Workspace namespace resource allocation","properties":{"clusterResourceAllocations":{"items":{"$ref":"#/definitions/v1ClusterResourceAllocation"},"type":"array","uniqueItems":true},"defaultResourceAllocation":{"$ref":"#/definitions/v1WorkspaceResourceAllocation"}}},"v1WorkspacePolicies":{"description":"Workspace policies","properties":{"backupPolicy":{"$ref":"#/definitions/v1WorkspaceBackupConfigEntity"}}},"v1WorkspaceQuota":{"description":"Workspace resource quota","properties":{"resourceAllocation":{"$ref":"#/definitions/v1WorkspaceResourceAllocation"}}},"v1WorkspaceResourceAllocation":{"description":"Workspace resource allocation","properties":{"cpuCores":{"minimum":-1,"type":"number","x-omitempty":false},"memoryMiB":{"minimum":-1,"type":"number","x-omitempty":false}}},"v1WorkspaceResourceAllocationsEntity":{"description":"Workspace resource allocation update entity","properties":{"clusterNamespaces":{"items":{"$ref":"#/definitions/v1WorkspaceClusterNamespace"},"type":"array","uniqueItems":true},"clusterRefs":{"items":{"$ref":"#/definitions/v1WorkspaceClusterRef"},"type":"array","uniqueItems":true},"quota":{"$ref":"#/definitions/v1WorkspaceQuota"}}},"v1WorkspaceRestore":{"description":"Workspace restore","properties":{"metadata":{"$ref":"#/definitions/v1ObjectMeta"},"spec":{"$ref":"#/definitions/v1WorkspaceRestoreSpec"},"status":{"$ref":"#/definitions/v1WorkspaceRestoreStatus"}}},"v1WorkspaceRestoreConfig":{"description":"Workspace cluster restore config","properties":{"backupName":{"type":"string"},"includeClusterResources":{"type":"boolean"},"includeNamespaces":{"items":{"type":"string"},"type":"array","uniqueItems":true},"preserveNodePorts":{"type":"boolean"},"restorePVs":{"type":"boolean"},"sourceClusterUid":{"type":"string"}},"required":["backupName","sourceClusterUid"]},"v1WorkspaceRestoreConfigEntity":{"description":"Cluster restore config","properties":{"backupRequestUid":{"type":"string"},"restoreConfigs":{"items":{"$ref":"#/definitions/v1WorkspaceRestoreConfig"},"type":"array","uniqueItems":true}},"required":["backupRequestUid"]},"v1WorkspaceRestoreSpec":{"description":"Workspace restore spec","properties":{"workspaceUid":{"type":"string"}}},"v1WorkspaceRestoreState":{"description":"Workspace restore state","properties":{"deleteState":{"type":"string"},"state":{"type":"string"}}},"v1WorkspaceRestoreStatus":{"description":"Workspace restore status","properties":{"workspaceRestoreStatuses":{"items":{"$ref":"#/definitions/v1WorkspaceRestoreStatusMeta"},"type":"array"}}},"v1WorkspaceRestoreStatusMeta":{"description":"Workspace restore status meta","properties":{"actor":{"$ref":"#/definitions/v1ClusterFeatureActor"},"requestUid":{"type":"string"},"workspaceRestoreConfig":{"$ref":"#/definitions/v1WorkspaceClusterRestoreConfig"}}},"v1WorkspaceRolesPatch":{"properties":{"roles":{"items":{"type":"string"},"type":"array"},"uid":{"type":"string"}},"type":"object"},"v1WorkspaceRolesUidSummary":{"properties":{"name":{"type":"string"},"uid":{"type":"string"}},"type":"object"},"v1WorkspaceScopeRoles":{"description":"List all workspaces with the roles assigned to the users","properties":{"projects":{"items":{"$ref":"#/definitions/v1ProjectsWorkspaces"},"type":"array","uniqueItems":true}}},"v1WorkspaceSpec":{"description":"Workspace specifications","properties":{"clusterNamespaces":{"items":{"$ref":"#/definitions/v1WorkspaceClusterNamespace"},"type":"array","uniqueItems":true},"clusterRbacs":{"items":{"$ref":"#/definitions/v1ClusterRbac"},"type":"array","uniqueItems":true},"clusterRefs":{"items":{"$ref":"#/definitions/v1WorkspaceClusterRef"},"type":"array","uniqueItems":true},"policies":{"$ref":"#/definitions/v1WorkspacePolicies"},"quota":{"$ref":"#/definitions/v1WorkspaceQuota"}}},"v1WorkspaceStatus":{"description":"Workspace status","properties":{"errors":{"items":{"$ref":"#/definitions/v1WorkspaceError"},"type":"array","uniqueItems":true}}},"v1WorkspaceWorkloadsFilter":{"description":"Workspace workloads filter","properties":{"clusters":{"items":{"type":"string"},"type":"array","uniqueItems":true},"namespaces":{"items":{"type":"string"},"type":"array","uniqueItems":true}},"type":"object"},"v1WorkspaceWorkloadsSpec":{"description":"Workspace workloads spec","properties":{"filter":{"$ref":"#/definitions/v1WorkspaceWorkloadsFilter"}},"type":"object"},"v1WorkspacesRoles":{"description":"Workspace users and their roles","properties":{"inheritedRoles":{"items":{"$ref":"#/definitions/v1WorkspaceRolesUidSummary"},"type":"array"},"name":{"type":"string"},"roles":{"items":{"$ref":"#/definitions/v1WorkspaceRolesUidSummary"},"type":"array"},"uid":{"type":"string"}}},"v1WorkspacesRolesPatch":{"properties":{"workspaces":{"items":{"$ref":"#/definitions/v1WorkspaceRolesPatch"},"type":"array"}},"type":"object"},"v1YearlyUsage":{"description":"Yearly usage object","properties":{"billingPeriod":{"$ref":"#/definitions/v1InvoiceBillingPeriod"},"monthlyUsages":{"description":"List of monthly usages","items":{"$ref":"#/definitions/v1MonthlyUsage"},"type":"array","uniqueItems":true},"productUsages":{"$ref":"#/definitions/v1ProductUsage"}}},"v1ZoneEntity":{"description":"Azure availability zone entity","properties":{"id":{"description":"Azure availability zone id","type":"string"}},"type":"object"}},"info":{"title":"Palette APIs - 4.3","version":"v1"},"paths":{"/cluster/{uid}/manifest":{"get":{"description":"Deprecated","operationId":"v1SpectroClustersUidInstallerManifest","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"download file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster's installer manifest file","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/apiKeys":{"get":{"operationId":"v1ApiKeysList","responses":{"200":{"description":"Retrieves a list of API keys","schema":{"$ref":"#/definitions/v1ApiKeys"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of API keys","tags":["v1"]},"post":{"operationId":"v1ApiKeysCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ApiKeyEntity"}}],"responses":{"201":{"description":"APIKey Created successfully","schema":{"$ref":"#/definitions/v1ApiKeyCreateResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create an API key","tags":["v1"]}},"/v1/apiKeys/{uid}":{"delete":{"operationId":"v1ApiKeysUidDelete","responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified API key","tags":["v1"]},"get":{"operationId":"v1ApiKeysUidGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1ApiKey"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified API key","tags":["v1"]},"parameters":[{"description":"Specify API key uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1ApiKeysUidActiveState","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ApiKeyActiveState"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Activate or de-active the specified API key","tags":["v1"]},"put":{"operationId":"v1ApiKeysUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ApiKeyUpdate"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the specified API key","tags":["v1"]}},"/v1/apiKeys/{uid}/state":{"parameters":[{"description":"Specify API key uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1ApiKeysUidState","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ApiKeyActiveState"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Revoke or re-activate the API key access","tags":["v1"]}},"/v1/appDeployments":{"post":{"operationId":"v1AppDeploymentsVirtualClusterCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AppDeploymentVirtualClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a application deployment in the virtual cluster","tags":["v1"]}},"/v1/appDeployments/clusterGroup":{"post":{"operationId":"v1AppDeploymentsClusterGroupCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AppDeploymentClusterGroupEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a application deployment in one of virtual clusters in the cluster group","tags":["v1"]}},"/v1/appDeployments/{uid}":{"delete":{"operationId":"v1AppDeploymentsUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified application deployment","tags":["v1"]},"get":{"operationId":"v1AppDeploymentsUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AppDeployment"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified application deployment","tags":["v1"]},"parameters":[{"description":"Application deployment uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/appDeployments/{uid}/profile":{"get":{"operationId":"v1AppDeploymentsUidProfileGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AppDeploymentProfileSpec"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns profile of the specified application deployment","tags":["v1"]},"parameters":[{"description":"Application deployment uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1AppDeploymentsUidProfileUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AppDeploymentProfileEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified application deployment profile","tags":["v1"]}},"/v1/appDeployments/{uid}/profile/apply":{"parameters":[{"description":"Application deployment uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Application deployment notification uid","in":"query","name":"notify","type":"string"}],"patch":{"operationId":"v1AppDeploymentsUidProfileApply","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Apply the application deployment profile updates","tags":["v1"]}},"/v1/appDeployments/{uid}/profile/tiers/{tierUid}":{"get":{"operationId":"v1AppDeploymentsProfileTiersUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AppTier"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified application deployment profile tier information","tags":["v1"]},"parameters":[{"description":"Application deployment uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Application deployment tier uid","in":"path","name":"tierUid","required":true,"type":"string"}],"put":{"operationId":"v1AppDeploymentsProfileTiersUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AppTierUpdateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified application deployment profile tier information","tags":["v1"]}},"/v1/appDeployments/{uid}/profile/tiers/{tierUid}/manifests":{"get":{"operationId":"v1AppDeploymentsProfileTiersUidManifestsGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AppTierManifests"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of manifests of the specified application deployment profile tier","tags":["v1"]},"parameters":[{"description":"Application deployment uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Application deployment tier uid","in":"path","name":"tierUid","required":true,"type":"string"}]},"/v1/appDeployments/{uid}/profile/tiers/{tierUid}/manifests/{manifestUid}":{"get":{"operationId":"v1AppDeploymentsProfileTiersManifestsUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Manifest"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified application deployment tier manifest information","tags":["v1"]},"parameters":[{"description":"Application deployment uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Application deployment tier uid","in":"path","name":"tierUid","required":true,"type":"string"},{"description":"Application deployment tier manifest uid","in":"path","name":"manifestUid","required":true,"type":"string"}],"put":{"operationId":"v1AppDeploymentsProfileTiersManifestsUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ManifestRefUpdateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified application deployment tier manifest information","tags":["v1"]}},"/v1/appDeployments/{uid}/profile/versions":{"get":{"operationId":"v1AppDeploymentsUidProfileVersionsGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AppDeploymentProfileVersions"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of profile versions of the specified application deployment","tags":["v1"]},"parameters":[{"description":"Application deployment uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/appProfiles":{"post":{"operationId":"v1AppProfilesCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AppProfileEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a application profile","tags":["v1"]}},"/v1/appProfiles/macros":{"get":{"operationId":"v1AppProfilesMacrosList","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Macros"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of application profile macros","tags":["v1"]}},"/v1/appProfiles/{uid}":{"delete":{"operationId":"v1AppProfilesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified application profile","tags":["v1"]},"get":{"operationId":"v1AppProfilesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AppProfile"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified application profile","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1AppProfilesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AppProfileEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified application profile","tags":["v1"]}},"/v1/appProfiles/{uid}/clone":{"parameters":[{"description":"Application profile uid","in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1AppProfilesUidClone","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AppProfileCloneEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Clones the specified application profile","tags":["v1"]}},"/v1/appProfiles/{uid}/clone/validate":{"parameters":[{"description":"Application profile uid","in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1AppProfilesUidCloneValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AppProfileCloneMetaInputEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates the specified application profile clone","tags":["v1"]}},"/v1/appProfiles/{uid}/metadata":{"parameters":[{"description":"Application profile uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1AppProfilesUidMetadataUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AppProfileMetaEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified application profile metadata","tags":["v1"]}},"/v1/appProfiles/{uid}/tiers":{"get":{"operationId":"v1AppProfilesUidTiersGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AppProfileTiers"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of tiers of the specified application profile","tags":["v1"]},"parameters":[{"description":"Application profile uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1AppProfilesUidTiersPatch","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AppTierPatchEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates app tier of the specified application profile","tags":["v1"]},"post":{"operationId":"v1AppProfilesUidTiersCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AppTierEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds tier to the specified application profile","tags":["v1"]}},"/v1/appProfiles/{uid}/tiers/{tierUid}":{"delete":{"operationId":"v1AppProfilesUidTiersUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified application profile tier","tags":["v1"]},"get":{"operationId":"v1AppProfilesUidTiersUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AppTier"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified application profile tier information","tags":["v1"]},"parameters":[{"description":"Application profile uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Application profile tier uid","in":"path","name":"tierUid","required":true,"type":"string"}],"put":{"operationId":"v1AppProfilesUidTiersUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AppTierUpdateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified application profile tier","tags":["v1"]}},"/v1/appProfiles/{uid}/tiers/{tierUid}/manifests":{"get":{"operationId":"v1AppProfilesUidTiersUidManifestsGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AppTierManifests"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of manifests of the specified application profile tier","tags":["v1"]},"parameters":[{"description":"Application profile uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Application profile tier uid","in":"path","name":"tierUid","required":true,"type":"string"}],"post":{"operationId":"v1AppProfilesUidTiersUidManifestsCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ManifestInputEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds manifest to the specified application profile tier","tags":["v1"]}},"/v1/appProfiles/{uid}/tiers/{tierUid}/manifests/{manifestUid}":{"delete":{"operationId":"v1AppProfilesUidTiersUidManifestsUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified application profile tier manifest","tags":["v1"]},"get":{"operationId":"v1AppProfilesUidTiersUidManifestsUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Manifest"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified application profile tier manifest information","tags":["v1"]},"parameters":[{"description":"Application profile uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Application profile tier uid","in":"path","name":"tierUid","required":true,"type":"string"},{"description":"Application profile tier manifest uid","in":"path","name":"manifestUid","required":true,"type":"string"}],"put":{"operationId":"v1AppProfilesUidTiersUidManifestsUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ManifestRefUpdateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified application profile tier manifest information","tags":["v1"]}},"/v1/appProfiles/{uid}/tiers/{tierUid}/resolvedValues":{"get":{"operationId":"v1AppProfilesUidTiersUidResolvedValuesGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AppTierResolvedValues"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified application profile tier resolved values","tags":["v1"]},"parameters":[{"description":"Application profile uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Application profile tier uid","in":"path","name":"tierUid","required":true,"type":"string"}]},"/v1/audits":{"get":{"operationId":"v1AuditsList","parameters":[{"description":"Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.","format":"date-time","in":"query","name":"startTime","type":"string"},{"description":"Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.","format":"date-time","in":"query","name":"endTime","type":"string"},{"description":"Specify the user uid, to retrieve the specific user audit logs","in":"query","name":"userUid","type":"string"},{"description":"Specify the project uid, to retrieve the specific project audit logs","in":"query","name":"projectUid","type":"string"},{"description":"Specify the tenant uid, to retrieve the specific tenant audit logs","in":"query","name":"tenantUid","type":"string"},{"description":"Specify the resource name, to retrieve the specific resource audit logs","in":"query","name":"resourceKind","type":"string"},{"description":"Specify the resource uid, to retrieve the specific resource audit logs","in":"query","name":"resourceUid","type":"string"},{"enum":["create","update","delete","publish","deploy"],"in":"query","name":"actionType","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1Audits"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves the list of audit logs","tags":["v1"]}},"/v1/audits/{uid}":{"get":{"operationId":"v1AuditsUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1Audit"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified audit log","tags":["v1"]},"parameters":[{"description":"Specify the audit uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/audits/{uid}/sysMsg":{"get":{"operationId":"v1AuditsUidGetSysMsg","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AuditSysMsg"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified system audit message","tags":["v1"]},"parameters":[{"description":"Specify the audit uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/audits/{uid}/userMsg":{"parameters":[{"description":"Specify the audit uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1AuditsUidMsgUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AuditMsgUpdate"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified user message for the specified audit","tags":["v1"]}},"/v1/auth/authenticate":{"post":{"description":"Creates a authentication request with the specified credentials","operationId":"v1Authenticate","parameters":[{"default":true,"description":"Describes a way to set cookie from backend.","in":"query","name":"setCookie","type":"boolean"},{"description":"Describes the credential details required for authentication","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1AuthLogin"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1UserToken"}}},"summary":"Authenticates the user for the specified crendentials","tags":["v1"]}},"/v1/auth/org":{"get":{"description":"Returns the allowed login method and information with the organization details","operationId":"v1AuthOrg","parameters":[{"in":"query","name":"orgName","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1LoginResponse"}}},"summary":"Returns the user organization details","tags":["v1"]}},"/v1/auth/org/{orgName}/switch":{"post":{"description":"Creates a request to switch to the same user's other organization. Only possible if user belongs to multiple organization","operationId":"V1AuthOrgSwitch","parameters":[{"default":true,"description":"Describes a way to set cookie from backend for switched organization","in":"query","name":"setCookie","type":"boolean"},{"description":"Organization name for which switch request has to be created","in":"path","name":"orgName","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1UserToken"}}},"summary":"Creates a request to switch organization","tags":["v1"]}},"/v1/auth/org/{org}/oidc/callback":{"get":{"description":"Returns the Authorization token for the palette. This is called by the IDP as a callback url after IDP authenticates the user with its server.","operationId":"V1OidcCallback","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1UserToken"}}},"summary":"Idp authorization code callback","tags":["v1"]},"parameters":[{"description":"Organization name","in":"path","name":"org","required":true,"type":"string"},{"description":"Describes temporary and very short lived code sent by IDP to validate the token","in":"query","name":"code","type":"string"},{"description":"Describes a state to validate and associate request and response","in":"query","name":"state","type":"string"},{"description":"Describes a error code in case the IDP is not able to validate and authenticates the user","in":"query","name":"error","type":"string"},{"description":"Describes a error in case the IDP is not able to validate and authenticates the user","in":"query","name":"error_description","type":"string"}]},"/v1/auth/org/{org}/oidc/logout":{"get":{"description":"Returns No Content. Works as a callback url after the IDP logout from their server.","operationId":"V1OidcLogout","responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"summary":"Identity provider logout url for the Oidc","tags":["v1"]},"parameters":[{"description":"Organization name","in":"path","name":"org","required":true,"type":"string"},{"description":"Describes a state to validate and associate request and response","in":"query","name":"state","type":"string"}]},"/v1/auth/org/{org}/saml/callback":{"parameters":[{"description":"Organization name","in":"path","name":"org","required":true,"type":"string"},{"description":"Deprecated.","in":"query","name":"authToken","type":"string"}],"post":{"consumes":["application/x-www-form-urlencoded"],"description":"Returns the Authorization token for the palette. This is called by the SAML based IDP as a callback url after IDP authenticates the user with its server.","operationId":"V1SamlCallback","parameters":[{"description":"Describe the SAML compliant response sent by IDP which will be validated by Palette","in":"formData","name":"SAMLResponse","type":"string"},{"description":"Describes a state to validate and associate request and response","in":"formData","name":"RelayState","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1UserToken"}}},"summary":"Identity provider callback url for the SMAL authentication","tags":["v1"]}},"/v1/auth/org/{org}/saml/logout":{"parameters":[{"description":"Organization name","in":"path","name":"org","required":true,"type":"string"},{"description":"Deprecated.","in":"query","name":"authToken","type":"string"}],"post":{"consumes":["application/x-www-form-urlencoded"],"description":"Returns No Content. Works as a callback url after the IDP logout from their server.","operationId":"V1SamlLogout","parameters":[{"description":"Describe the SAML compliant response sent by IDP which will be validated by Palette to perform logout.","in":"formData","name":"SAMLResponse","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"summary":"Identity provider logout url for the SMAL","tags":["v1"]}},"/v1/auth/orgs":{"get":{"description":"Returns a list of user's organizations details and login methods","operationId":"V1AuthOrgs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Organizations"}}},"summary":"Returns a list of user's organizations","tags":["v1"]}},"/v1/auth/password/{passwordToken}/activate":{"parameters":[{"description":"Describes the expirable password token for the user to be used for authentication of user","in":"path","name":"passwordToken","required":true,"type":"string"}],"patch":{"description":"Updates and Activates user password with the help of password token","operationId":"v1PasswordActivate","parameters":[{"in":"body","name":"body","required":true,"schema":{"properties":{"password":{"description":"Describes the new password for the user","format":"password","type":"string"}},"required":["password"],"type":"object"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"summary":"Updates and Activates the specified user password using the password token","tags":["v1"]}},"/v1/auth/password/{passwordToken}/reset":{"parameters":[{"description":"Describes the expirable password token for the user to be used for authentication of user","in":"path","name":"passwordToken","required":true,"type":"string"}],"patch":{"description":"Updates the new user password with the help of password token","operationId":"v1PasswordReset","parameters":[{"in":"body","name":"body","required":true,"schema":{"properties":{"password":{"description":"Describes the new password for the user","format":"password","type":"string"}},"required":["password"],"type":"object"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"summary":"Resets the user password using the password token","tags":["v1"]}},"/v1/auth/refresh/{token}":{"get":{"description":"Returns a new token within refresh timeout and same session id is maintained","operationId":"v1AuthRefresh","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1UserToken"}}},"summary":"Refreshes authentication token","tags":["v1"]},"parameters":[{"default":true,"description":"Describes a way to set cookie from backend.","in":"query","name":"setCookie","type":"boolean"},{"description":"Non expired Authorization token","in":"path","name":"token","required":true,"type":"string"}]},"/v1/auth/sso/idps":{"get":{"description":"Returns a list of predefined Identity Provider (IDP)","operationId":"V1SsoIdps","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1IdentityProviders"}}},"summary":"Returns a list of predefined Identity Provider (IDP)","tags":["v1"]}},"/v1/auth/sso/logins":{"get":{"description":"Returns a list of supported sso logins and their authentication mechanism","operationId":"V1SsoLogins","parameters":[{"in":"query","name":"org","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1SsoLogins"}}},"summary":"Returns a list of supported sso logins","tags":["v1"]}},"/v1/auth/sso/providers":{"get":{"description":"Returns a list of supported sso auth providers","operationId":"V1AuthSsoProviders","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1SsoLogins"}}},"summary":"Returns a list of supported sso auth providers","tags":["v1"]}},"/v1/auth/sso/{ssoApp}/callback":{"get":{"description":"Returns Authorization token. Works as a callback url for the system defined sso apps","operationId":"V1SsoCallback","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1UserToken"}}},"summary":"Returns Authorization token. Works as a callback url for the system defined sso apps","tags":["v1"]},"parameters":[{"description":"Describes the sso app use to login into the system","in":"path","name":"ssoApp","required":true,"type":"string"},{"description":"Describes temporary and very short lived code sent by IDP to validate the token","in":"query","name":"code","type":"string"},{"description":"Describes a state to validate and associate request and response","in":"query","name":"state","type":"string"},{"description":"Describes a error code in case the IDP is not able to validate and authenticates the user","in":"query","name":"error","type":"string"},{"description":"Describes a error in case the IDP is not able to validate and authenticates the user","in":"query","name":"error_description","type":"string"}]},"/v1/auth/user/org/forgot":{"get":{"description":"Returns No Content. Sends the user organization(s) information via email","operationId":"V1AuthUserOrgForgot","parameters":[{"description":"Describes user's email id for sending organzation(s) details via email.","in":"query","name":"emailId","required":true,"type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"summary":"Returns No Content. Sends the user organization information via email","tags":["v1"]}},"/v1/auth/user/password/reset":{"post":{"description":"Creates request to reset password via email. Password reset email will be sent to the user. Sends 204 No Content.","operationId":"v1PasswordResetRequest","parameters":[{"in":"body","name":"body","required":true,"schema":{"properties":{"emailId":{"description":"Describes email if for which password reset email has to be sent","type":"string"}},"required":["emailId"],"type":"object"}}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"summary":"Creates request to reset password via email","tags":["v1"]}},"/v1/cloudaccounts/aws":{"get":{"operationId":"v1CloudAccountsAwsList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cloud account items","schema":{"$ref":"#/definitions/v1AwsAccounts"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of AWS cloud accounts","tags":["v1"]},"post":{"operationId":"v1CloudAccountsAwsCreate","parameters":[{"description":"Request payload to validate AWS cloud account","in":"body","name":"body","schema":{"$ref":"#/definitions/v1AwsAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an AWS cloud account","tags":["v1"]}},"/v1/cloudaccounts/aws/{uid}":{"delete":{"operationId":"v1CloudAccountsAwsDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified AWS account","tags":["v1"]},"get":{"operationId":"v1CloudAccountsAwsGet","parameters":[{"default":false,"in":"query","name":"assumeCredentials","type":"boolean"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AwsAccount"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified AWS account","tags":["v1"]},"parameters":[{"description":"AWS cloud account uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1CloudAccountsAwsUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AwsAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified AWS account","tags":["v1"]}},"/v1/cloudaccounts/azure":{"get":{"operationId":"v1CloudAccountsAzureList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of azure cloud account items","schema":{"$ref":"#/definitions/v1AzureAccounts"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of azure cloud accounts","tags":["v1"]},"post":{"operationId":"v1CloudAccountsAzureCreate","parameters":[{"description":"Request payload to validate Azure cloud account","in":"body","name":"body","schema":{"$ref":"#/definitions/v1AzureAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create azure cloud account","tags":["v1"]}},"/v1/cloudaccounts/azure/{uid}":{"delete":{"operationId":"v1CloudAccountsAzureDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified azure account","tags":["v1"]},"get":{"operationId":"v1CloudAccountsAzureGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AzureAccount"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified azure cloud account","tags":["v1"]},"parameters":[{"description":"Azure cloud account uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1CloudAccountsAzureUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AzureAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified azure account","tags":["v1"]}},"/v1/cloudaccounts/cloudTypes/{cloudType}":{"get":{"operationId":"v1CloudAccountsCustomList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cloud account by specified cloud type items","schema":{"$ref":"#/definitions/v1CustomAccounts"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of cloud accounts by cloud type","tags":["v1"]},"parameters":[{"description":"Custom cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"post":{"operationId":"v1CloudAccountsCustomCreate","parameters":[{"description":"Request payload to validate Custom cloud account","in":"body","name":"body","schema":{"$ref":"#/definitions/v1CustomAccountEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an cloud account of specific cloud type","tags":["v1"]}},"/v1/cloudaccounts/cloudTypes/{cloudType}/{uid}":{"delete":{"operationId":"v1CloudAccountsCustomDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified account by cloud type","tags":["v1"]},"get":{"operationId":"v1CloudAccountsCustomGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1CustomAccount"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified account by cloud type","tags":["v1"]},"parameters":[{"description":"Custom cloud account uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Custom cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"put":{"operationId":"v1CloudAccountsCustomUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1CustomAccountEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified account by cloud type","tags":["v1"]}},"/v1/cloudaccounts/coxedge":{"get":{"operationId":"v1CloudAccountsCoxEdgeList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cloud account items","schema":{"$ref":"#/definitions/v1CoxEdgeAccounts"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of CoxEdge cloud accounts","tags":["v1"]},"post":{"operationId":"v1CloudAccountsCoxEdgeCreate","parameters":[{"description":"Request payload to validate CoxEdge cloud account","in":"body","name":"body","schema":{"$ref":"#/definitions/v1CoxEdgeAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an CoxEdge cloud account","tags":["v1"]}},"/v1/cloudaccounts/coxedge/{uid}":{"delete":{"operationId":"v1CloudAccountsCoxEdgeDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified CoxEdge account","tags":["v1"]},"get":{"operationId":"v1CloudAccountsCoxEdgeGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1CoxEdgeAccount"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified CoxEdge account","tags":["v1"]},"parameters":[{"description":"CoxEdge cloud account uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1CloudAccountsCoxEdgeUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1CoxEdgeAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified CoxEdge account","tags":["v1"]}},"/v1/cloudaccounts/gcp":{"get":{"operationId":"v1CloudAccountsGcpList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of gcp cloud account items","schema":{"$ref":"#/definitions/v1GcpAccounts"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of gcp cloud accounts","tags":["v1"]},"post":{"operationId":"v1CloudAccountsGcpCreate","parameters":[{"description":"Request payload to validate GCP cloud account","in":"body","name":"body","schema":{"$ref":"#/definitions/v1GcpAccountEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a GCP cloud account","tags":["v1"]}},"/v1/cloudaccounts/gcp/{uid}":{"delete":{"operationId":"v1CloudAccountsGcpDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified GCP account","tags":["v1"]},"get":{"operationId":"v1CloudAccountsGcpGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1GcpAccount"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified GCP cloud account","tags":["v1"]},"parameters":[{"description":"GCP cloud account uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1CloudAccountsGcpUpdate","parameters":[{"description":"Request payload to validate GCP cloud account","in":"body","name":"body","schema":{"$ref":"#/definitions/v1GcpAccountEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified GCP account","tags":["v1"]}},"/v1/cloudaccounts/maas":{"get":{"operationId":"v1CloudAccountsMaasList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cloud account items","schema":{"$ref":"#/definitions/v1MaasAccounts"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Maas cloud accounts","tags":["v1"]},"post":{"operationId":"v1CloudAccountsMaasCreate","parameters":[{"description":"Request payload to validate Maas cloud account","in":"body","name":"body","schema":{"$ref":"#/definitions/v1MaasAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an Maas cloud account","tags":["v1"]}},"/v1/cloudaccounts/maas/{uid}":{"delete":{"operationId":"v1CloudAccountsMaasDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified Maas account","tags":["v1"]},"get":{"operationId":"v1CloudAccountsMaasGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1MaasAccount"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Maas account","tags":["v1"]},"parameters":[{"description":"Maas cloud account uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1CloudAccountsMaasPatch","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1CloudAccountsPatch"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Patches the specified CloudAccount Maas","tags":["v1"]},"put":{"operationId":"v1CloudAccountsMaasUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1MaasAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified Maas account","tags":["v1"]}},"/v1/cloudaccounts/maas/{uid}/properties/azs":{"get":{"operationId":"v1MaasAccountsUidAzs","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1MaasZones"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the maas azs for a given account","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/cloudaccounts/maas/{uid}/properties/domains":{"get":{"operationId":"v1MaasAccountsUidDomains","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1MaasDomains"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the maas domains for a given account","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/cloudaccounts/maas/{uid}/properties/resourcePools":{"get":{"operationId":"v1MaasAccountsUidPools","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1MaasPools"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the maas pools for a given account","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/cloudaccounts/maas/{uid}/properties/subnets":{"get":{"operationId":"v1MaasAccountsUidSubnets","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1MaasSubnets"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the maas subnets for a given account","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/cloudaccounts/maas/{uid}/properties/tags":{"get":{"operationId":"v1MaasAccountsUidTags","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1MaasTags"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the maas tags for a given account","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/cloudaccounts/openstack":{"get":{"operationId":"v1CloudAccountsOpenStackList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cloud account items","schema":{"$ref":"#/definitions/v1OpenStackAccounts"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of OpenStack cloud accounts","tags":["v1"]},"post":{"operationId":"v1CloudAccountsOpenStackCreate","parameters":[{"description":"Request payload to validate OpenStack cloud account","in":"body","name":"body","schema":{"$ref":"#/definitions/v1OpenStackAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a OpenStack cloud account","tags":["v1"]}},"/v1/cloudaccounts/openstack/{uid}":{"delete":{"operationId":"v1CloudAccountsOpenStackDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified OpenStack account","tags":["v1"]},"get":{"operationId":"v1CloudAccountsOpenStackGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1OpenStackAccount"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified OpenStack account","tags":["v1"]},"parameters":[{"description":"OpenStack cloud account uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1CloudAccountsOpenStackUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OpenStackAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified OpenStack account","tags":["v1"]}},"/v1/cloudaccounts/openstack/{uid}/properties/azs":{"get":{"operationId":"v1OpenstackAccountsUidAzs","parameters":[{"in":"query","name":"region","type":"string"},{"in":"query","name":"project","type":"string"},{"in":"query","name":"domain","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OpenStackAzs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the openstack azs for a given account and region","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/cloudaccounts/openstack/{uid}/properties/flavors":{"get":{"operationId":"v1OpenstackAccountsUidFlavors","parameters":[{"in":"query","name":"project","type":"string"},{"in":"query","name":"region","type":"string"},{"in":"query","name":"domain","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OpenStackFlavors"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the openstack keypairs for a given account and scope","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/cloudaccounts/openstack/{uid}/properties/keypairs":{"get":{"operationId":"v1OpenstackAccountsUidKeypairs","parameters":[{"in":"query","name":"project","type":"string"},{"in":"query","name":"region","type":"string"},{"in":"query","name":"domain","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OpenStackKeypairs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the openstack keypairs for a given account and scope","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/cloudaccounts/openstack/{uid}/properties/networks":{"get":{"operationId":"v1OpenstackAccountsUidNetworks","parameters":[{"in":"query","name":"project","type":"string"},{"in":"query","name":"region","type":"string"},{"in":"query","name":"domain","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OpenStackNetworks"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the openstack networks for a given account and scope","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/cloudaccounts/openstack/{uid}/properties/projects":{"get":{"operationId":"v1OpenstackAccountsUidProjects","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OpenStackProjects"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the openstack projects for a given account","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/cloudaccounts/openstack/{uid}/properties/regions":{"get":{"operationId":"v1OpenstackAccountsUidRegions","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OpenStackRegions"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the openstack regions for a given account","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/cloudaccounts/summary":{"get":{"operationId":"v1CloudAccountsListSummary","parameters":[{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cloud account summary items","schema":{"$ref":"#/definitions/v1CloudAccountsSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of cloud accounts summary","tags":["v1"]}},"/v1/cloudaccounts/tencent":{"get":{"operationId":"v1CloudAccountsTencentList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cloud account items","schema":{"$ref":"#/definitions/v1TencentAccounts"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Tencent cloud accounts","tags":["v1"]},"post":{"operationId":"v1CloudAccountsTencentCreate","parameters":[{"description":"Request payload to validate Tencent cloud account","in":"body","name":"body","schema":{"$ref":"#/definitions/v1TencentAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an Tencent cloud account","tags":["v1"]}},"/v1/cloudaccounts/tencent/{uid}":{"delete":{"operationId":"v1CloudAccountsTencentDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified Tencent account","tags":["v1"]},"get":{"operationId":"v1CloudAccountsTencentGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1TencentAccount"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Tencent account","tags":["v1"]},"parameters":[{"description":"Tencent cloud account uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1CloudAccountsTencentUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TencentAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified Tencent account","tags":["v1"]}},"/v1/cloudaccounts/vsphere":{"get":{"operationId":"v1CloudAccountsVsphereList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cloud account items","schema":{"$ref":"#/definitions/v1VsphereAccounts"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of vSphere cloud accounts","tags":["v1"]},"post":{"operationId":"v1CloudAccountsVsphereCreate","parameters":[{"description":"Request payload to validate VSphere cloud account","in":"body","name":"body","schema":{"$ref":"#/definitions/v1VsphereAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a vSphere cloud account","tags":["v1"]}},"/v1/cloudaccounts/vsphere/{uid}":{"delete":{"operationId":"v1CloudAccountsVsphereDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified vSphere account","tags":["v1"]},"get":{"operationId":"v1CloudAccountsVsphereGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1VsphereAccount"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified vSphere account","tags":["v1"]},"parameters":[{"description":"VSphere cloud account uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1CloudAccountsVsphereUpdate","parameters":[{"description":"Request payload to validate VSphere cloud account","in":"body","name":"body","schema":{"$ref":"#/definitions/v1VsphereAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified VSphere account","tags":["v1"]}},"/v1/cloudaccounts/vsphere/{uid}/properties/computecluster/resources":{"get":{"operationId":"v1VsphereAccountsUidClusterRes","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1VsphereComputeClusterResources"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the vSphere computecluster resources for the given overlord account","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"query","name":"datacenter","required":true,"type":"string"},{"in":"query","name":"computecluster","required":true,"type":"string"},{"in":"query","name":"useQualifiedNetworkName","type":"boolean"}]},"/v1/cloudaccounts/vsphere/{uid}/properties/datacenters":{"get":{"operationId":"v1VsphereAccountsUidDatacenters","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1VsphereDatacenters"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the vSphere datacenters \u0026 datacluster for the given overlord account","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/cloudaccounts/{uid}/geoLocation":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1AccountsGeolocationPatch","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1GeolocationLatlong"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the geolocation annotation","tags":["v1"]}},"/v1/cloudconfigs/aks/{configUid}":{"get":{"operationId":"v1CloudConfigsAksGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AzureCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified AKS cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/aks/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsAksUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AzureCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/aks/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsAksMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AzureMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an AKS cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsAksMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsAksMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AzureMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified AKS cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsAksPoolMachinesList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of AKS machine items","schema":{"$ref":"#/definitions/v1AzureMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of AKS machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsAksPoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AzureMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsAksPoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified Azure machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsAksPoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AzureMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified AKS machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsAksPoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AzureMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to the cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/aws/{configUid}":{"get":{"operationId":"v1CloudConfigsAwsGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AwsCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified AWS cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/aws/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsAwsUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AwsCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/aws/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsAwsMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AwsMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an AWS cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsAwsMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsAwsMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AwsMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified AWS cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsAwsPoolMachinesList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of AWS machine items","schema":{"$ref":"#/definitions/v1AwsMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of AWS machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsAwsPoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AwsMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsAwsPoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified AWS machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsAwsPoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AwsMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified AWS machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsAwsPoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AwsMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to the cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/azure/{configUid}":{"get":{"operationId":"v1CloudConfigsAzureGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AzureCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Azure cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/azure/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsAzureUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AzureCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/azure/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsAzureMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AzureMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an Azure cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsAzureMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsAzureMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AzureMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified Azure cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"description":"Returns all the Azure machines restricted to the user role and filters.","operationId":"v1CloudConfigsAzurePoolMachinesList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of AWS machine items","schema":{"$ref":"#/definitions/v1AzureMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Azure machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsAzurePoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AzureMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsAzurePoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified Azure machine","tags":["v1"]},"get":{"description":"Returns a Azure machine for the specified uid.","operationId":"v1CloudConfigsAzurePoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AzureMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Azure machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsAzurePoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AzureMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}":{"get":{"operationId":"v1CloudConfigsCustomGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1CustomCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Custom cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud type","in":"path","name":"cloudType","required":true,"type":"string"},{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud type","in":"path","name":"cloudType","required":true,"type":"string"},{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsCustomUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1CustomCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud type","in":"path","name":"cloudType","required":true,"type":"string"},{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsCustomMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1CustomMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an Custom cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsCustomMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud type","in":"path","name":"cloudType","required":true,"type":"string"},{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsCustomMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1CustomMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified Custom cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsCustomPoolMachinesList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of Custom machine items","schema":{"$ref":"#/definitions/v1CustomMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Custom machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud type","in":"path","name":"cloudType","required":true,"type":"string"},{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsCustomPoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1CustomMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsCustomPoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified Custom machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsCustomPoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1CustomMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Custom machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud type","in":"path","name":"cloudType","required":true,"type":"string"},{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsCustomPoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1CustomMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to the cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/coxedge/{configUid}":{"get":{"operationId":"v1CloudConfigsCoxEdgeGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1CoxEdgeCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified CoxEdge cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/coxedge/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsCoxEdgeUidClusterConfigUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1CoxEdgeCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/coxedge/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsCoxEdgeMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1CoxEdgeMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a CoxEdge cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/coxedge/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsCoxEdgeMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsCoxEdgeMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1CoxEdgeMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified CoxEdge cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/coxedge/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsCoxEdgePoolMachinesList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of CoxEdge machine items","schema":{"$ref":"#/definitions/v1CoxEdgeMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of CoxEdge machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsCoxEdgePoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1CoxEdgeMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/coxedge/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsCoxEdgePoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified CoxEdge machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsCoxEdgePoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1CoxEdgeMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified CoxEdge machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsCoxEdgePoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1CoxEdgeMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to the cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/edge-native/{configUid}":{"get":{"operationId":"v1CloudConfigsEdgeNativeGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1EdgeNativeCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified edge-native cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/edge-native/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsEdgeNativeUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeNativeCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/edge-native/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsEdgeNativeMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeNativeMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a edge-native cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsEdgeNativeMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsEdgeNativeMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeNativeMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified edge-native cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsEdgeNativePoolMachinesList","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of edge-native machine items","schema":{"$ref":"#/definitions/v1EdgeNativeMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of edge-native machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsEdgeNativePoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeNativeMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the edge-native machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsEdgeNativePoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified edge-native machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsEdgeNativePoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1EdgeNativeMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified edge-native machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsEdgeNativePoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeNativeMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/edge/{configUid}":{"get":{"operationId":"v1CloudConfigsEdgeGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1EdgeCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified edge cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/edge/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsEdgeUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/edge/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsEdgeMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a edge cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/edge/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsEdgeMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsEdgeMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified Edge cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/edge/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsEdgePoolMachinesList","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of Edge machine items","schema":{"$ref":"#/definitions/v1EdgeMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Edge machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsEdgePoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the Edge machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/edge/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsEdgePoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified Edge machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsEdgePoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1EdgeMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Edge machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsEdgePoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/eks/{configUid}":{"get":{"operationId":"v1CloudConfigsEksGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1EksCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified EKS cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/eks/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsEksUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EksCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/eks/{configUid}/fargateProfiles":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsEksUidFargateProfilesUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EksFargateProfiles"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates EKS cloud config's fargate profiles","tags":["v1"]}},"/v1/cloudconfigs/eks/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsEksMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EksMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an EKS cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsEksMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsEksMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EksMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified EKS cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsEksPoolMachinesList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of EKS machine items","schema":{"$ref":"#/definitions/v1AwsMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of EKS machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsEksPoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AwsMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsEksPoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified EKS machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsEksPoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AwsMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified EKS machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsEksPoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AwsMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to the cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/gcp/{configUid}":{"get":{"operationId":"v1CloudConfigsGcpGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1GcpCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified GCP cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/gcp/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsGcpUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GcpCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/gcp/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsGcpMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GcpMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a Gcp cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsGcpMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsGcpMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GcpMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified GCP cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsGcpPoolMachinesList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of GCP machine items","schema":{"$ref":"#/definitions/v1GcpMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of GCP machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsGcpPoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GcpMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsGcpPoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified GCP machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsGcpPoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1GcpMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified GCP machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsGcpPoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GcpMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to the cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/generic/{configUid}":{"get":{"operationId":"v1CloudConfigsGenericGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1GenericCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Generic cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/generic/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsGenericUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GenericCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/generic/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsGenericMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GenericMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a generic cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsGenericMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsGenericMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GenericMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified generic cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsGenericPoolMachinesList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of Generic machine items","schema":{"$ref":"#/definitions/v1GenericMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Generic machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsGenericPoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GenericMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsGenericPoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsGenericPoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1GenericMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified generic machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsGenericPoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GenericMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to the cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/gke/{configUid}":{"get":{"operationId":"v1CloudConfigsGkeGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1GcpCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified GKE cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/gke/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsGkeUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GcpCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/gke/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsGkeMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GcpMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an GKE cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsGkeMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsGkeMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GcpMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified GKE cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsGkePoolMachinesList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of GKE machine items","schema":{"$ref":"#/definitions/v1GcpMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of GKE machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsGkePoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GcpMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsGkePoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified Gcp machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsGkePoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1GcpMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified GKE machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsGkePoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1GcpMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to the cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/libvirt/{configUid}":{"get":{"operationId":"v1CloudConfigsLibvirtGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1LibvirtCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified libvirt cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/libvirt/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsLibvirtUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1LibvirtCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/libvirt/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsLibvirtMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1LibvirtMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a libvirt cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/libvirt/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsLibvirtMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsLibvirtMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1LibvirtMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified Libvirt cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/libvirt/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsLibvirtPoolMachinesList","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of Libvirt machine items","schema":{"$ref":"#/definitions/v1LibvirtMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Libvirt machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsLibvirtPoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1LibvirtMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the Libvirt machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/libvirt/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsLibvirtPoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified Libvirt machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsLibvirtPoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1LibvirtMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Libvirt machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsLibvirtPoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1LibvirtMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/maas/{configUid}":{"get":{"operationId":"v1CloudConfigsMaasGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1MaasCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Maas cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/maas/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsMaasUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1MaasCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/maas/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsMaasMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1MaasMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an Maas cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsMaasMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsMaasMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1MaasMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified Maas cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsMaasPoolMachinesList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of Maas machine items","schema":{"$ref":"#/definitions/v1MaasMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Maas machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsMaasPoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1MaasMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsMaasPoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified Maas machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsMaasPoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1MaasMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Maas machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsMaasPoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1MaasMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to the cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/openstack/{configUid}":{"get":{"operationId":"v1CloudConfigsOpenStackGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1OpenStackCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified OpenStack cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/openstack/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsOpenStackUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OpenStackCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/openstack/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsOpenStackMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OpenStackMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a OpenStack cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsOpenStackMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsOpenStackMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OpenStackMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified OpenStack cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsOpenStackPoolMachinesList","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of OpenStack machine items","schema":{"$ref":"#/definitions/v1OpenStackMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of OpenStack machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsOpenStackPoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OpenStackMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the OpenStack machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsOpenStackPoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified OpenStack machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsOpenStackPoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1OpenStackMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified OpenStack machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsOpenStackPoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OpenStackMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/tke/{configUid}":{"get":{"operationId":"v1CloudConfigsTkeGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1TencentCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified TKE cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/tke/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsTkeUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TencentCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/tke/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsTkeMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TencentMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an TKE cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsTkeMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsTkeMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TencentMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified TKE cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsTkePoolMachinesList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of TKE machine items","schema":{"$ref":"#/definitions/v1TencentMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of TKE machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsTkePoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TencentMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsTkePoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified Tencent machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsTkePoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1TencentMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Tke machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsTkePoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TencentMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to the cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/virtual/{configUid}":{"get":{"operationId":"v1CloudConfigsVirtualGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1VirtualCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Virtual cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/virtual/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsVirtualUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VirtualCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/virtual/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsVirtualMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VirtualMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a virtual cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsVirtualMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsVirtualMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VirtualMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified virtual cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsVirtualPoolMachinesList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of virtual machine items","schema":{"$ref":"#/definitions/v1VirtualMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of virtual machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsVirtualPoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VirtualMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsVirtualPoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified virtual machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsVirtualPoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1VirtualMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified virtual machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsVirtualPoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VirtualMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to the cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/virtual/{configUid}/resize":{"parameters":[{"description":"Specify virtual cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsVirtualUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VirtualClusterResize"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates and resizes the virtual cluster","tags":["v1"]}},"/v1/cloudconfigs/vsphere/{configUid}":{"get":{"operationId":"v1CloudConfigsVsphereGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1VsphereCloudConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified vSphere cloud config","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/cloudconfigs/vsphere/{configUid}/clusterConfig":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsVsphereUidClusterConfig","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VsphereCloudClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster configuration information","tags":["v1"]}},"/v1/cloudconfigs/vsphere/{configUid}/machinePools":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsVsphereMachinePoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VsphereMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a vSphere cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}":{"delete":{"operationId":"v1CloudConfigsVsphereMachinePoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified machine pool","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsVsphereMachinePoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VsphereMachinePoolConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified vSphere cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}/machines":{"get":{"operationId":"v1CloudConfigsVspherePoolMachinesList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of vSphere machine items","schema":{"$ref":"#/definitions/v1VsphereMachines"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of vSphere machines","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"}],"post":{"operationId":"v1CloudConfigsVspherePoolMachinesAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VsphereMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds the vSphere machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}":{"delete":{"operationId":"v1CloudConfigsVspherePoolMachinesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified vSphere machine","tags":["v1"]},"get":{"operationId":"v1CloudConfigsVspherePoolMachinesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1VsphereMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified vSphere machine","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsVspherePoolMachinesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VsphereMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine to cloud config's machine pool","tags":["v1"]}},"/v1/cloudconfigs/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}/maintenance":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"},{"description":"Cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsMachinePoolsMachineUidMaintenanceUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1MachineMaintenance"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine maintenance","tags":["v1"]}},"/v1/cloudconfigs/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}/maintenance/status":{"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"},{"description":"Machine pool name","in":"path","name":"machinePoolName","required":true,"type":"string"},{"description":"Machine uid","in":"path","name":"machineUid","required":true,"type":"string"},{"description":"Cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"put":{"operationId":"v1CloudConfigsMachinePoolsMachineUidMaintenanceStatusUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1MachineMaintenanceStatus"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified machine maintenance","tags":["v1"]}},"/v1/cloudconfigs/{configUid}/machinePools/machineUids":{"get":{"operationId":"v1CloudConfigsMachinePoolsMachineUidsGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1MachinePoolsMachineUids"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cloud config's machine pools and machine uid","tags":["v1"]},"parameters":[{"description":"Cluster's cloud config uid","in":"path","name":"configUid","required":true,"type":"string"}]},"/v1/clouds/aws/account/sts":{"get":{"operationId":"V1AwsAccountStsGet","parameters":[{"default":"aws","description":"AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values","enum":["aws","aws-us-gov"],"in":"query","name":"partition","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/V1AwsAccountSts"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves AWS external id and account id","tags":["v1"]}},"/v1/clouds/aws/account/validate":{"post":{"operationId":"V1AwsAccountValidate","parameters":[{"description":"Request payload to validate AWS cloud account","in":"body","name":"awsCloudAccount","required":true,"schema":{"$ref":"#/definitions/v1AwsCloudAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate the specified AWS account credentials","tags":["v1"]}},"/v1/clouds/aws/cloudwatch/validate":{"post":{"description":"Validates aws cloud watch credentials","operationId":"V1CloudsAwsCloudWatchValidate","parameters":[{"description":"Request payload for cloud watch config","in":"body","name":"cloudWatchConfig","required":true,"schema":{"$ref":"#/definitions/v1.CloudWatchConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"validates aws cloud watch credentials","tags":["v1"]}},"/v1/clouds/aws/cost":{"post":{"operationId":"v1AwsCloudCost","parameters":[{"description":"Request payload for AWS cloud cost","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1AwsCloudCostSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AwsCloudCostSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves AWS cloud account usage cost from cost explorer.","tags":["v1"]}},"/v1/clouds/aws/imageIds/{imageId}/volumeSize":{"get":{"description":"Get AWS Volume Size","operationId":"V1AwsVolumeSizeGet","parameters":[{"description":"Specific AWS Region","in":"query","name":"region","required":true,"type":"string"},{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"AWS image id","in":"path","name":"imageId","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AwsVolumeSize"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get AWS Volume Size","tags":["v1"]}},"/v1/clouds/aws/policies":{"post":{"operationId":"V1AwsIamPolicies","parameters":[{"description":"Request payload for AWS Cloud Account","in":"body","name":"account","required":true,"schema":{"$ref":"#/definitions/v1AwsCloudAccount"}},{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AwsPolicies"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of AWS policies for the specified account","tags":["v1"]}},"/v1/clouds/aws/policyArns/validate":{"post":{"operationId":"V1AwsPolicyArnsValidate","parameters":[{"description":"Request payload to validate AWS policy ARN","in":"body","name":"spec","required":true,"schema":{"$ref":"#/definitions/v1AwsPolicyArnsSpec"}},{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate the aws policy arns validate","tags":["v1"]}},"/v1/clouds/aws/properties/validate":{"post":{"operationId":"V1AwsPropertiesValidate","parameters":[{"description":"Request payload for AWS properties validate spec","in":"body","name":"properties","required":true,"schema":{"$ref":"#/definitions/V1AwsPropertiesValidateSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate AWS properties","tags":["v1"]}},"/v1/clouds/aws/regions":{"get":{"operationId":"V1AwsRegions","parameters":[{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AwsRegions"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of AWS regions for the specified account","tags":["v1"]}},"/v1/clouds/aws/regions/{region}/availabilityzones":{"get":{"operationId":"V1AwsZones","parameters":[{"description":"Region for which zones are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AwsAvailabilityZones"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of AWS availability zones for the specified region","tags":["v1"]}},"/v1/clouds/aws/regions/{region}/copydefaultimages":{"post":{"operationId":"V1AwsCopyImageFromDefaultRegion","parameters":[{"description":"Region to copy AWS image from","in":"path","name":"region","required":true,"type":"string"},{"description":"Request payload to copy the AWS image","in":"body","name":"spectroClusterAwsImageTag","schema":{"$ref":"#/definitions/v1AwsFindImageRequest"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AsyncOperationIdEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Copies the specified image from one region to another region","tags":["v1"]}},"/v1/clouds/aws/regions/{region}/eksClusters/name/validate":{"get":{"description":"Returns no contents if aws cluster name is valid else error.","operationId":"V1AwsClusterNameValidate","parameters":[{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"cluster name to be validated","in":"query","name":"name","required":true,"type":"string"},{"description":"Region for which cluster name is validated","in":"path","name":"region","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Check if Aws cluster name is valid","tags":["v1"]}},"/v1/clouds/aws/regions/{region}/images":{"post":{"operationId":"V1AwsFindImage","parameters":[{"description":"Region to find AWS image","in":"path","name":"region","required":true,"type":"string"},{"description":"Request payload to find the AWS image","in":"body","name":"awsImageRequest","schema":{"$ref":"#/definitions/v1AwsFindImageRequest"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AwsImage"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns AWS image for the specified AMI name","tags":["v1"]}},"/v1/clouds/aws/regions/{region}/instancetypes":{"get":{"operationId":"V1AwsInstanceTypes","parameters":[{"description":"Region for which AWS instances are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Filter for instances having cpu greater than or equal","format":"double","in":"query","name":"cpuGtEq","type":"number"},{"description":"Filter for instances having memory greater than or equal","format":"double","in":"query","name":"memoryGtEq","type":"number"},{"description":"Filter for instances having gpu greater than or equal","format":"double","in":"query","name":"gpuGtEq","type":"number"},{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AwsInstanceTypes"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of AWS instance types","tags":["v1"]}},"/v1/clouds/aws/regions/{region}/keypairs":{"get":{"operationId":"V1AwsKeyPairs","parameters":[{"description":"Region for which AWS key pairs are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AwsKeyPairs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of AWS keypairs","tags":["v1"]}},"/v1/clouds/aws/regions/{region}/keypairs/{keypair}/validate":{"post":{"operationId":"V1AwsKeyPairValidate","parameters":[{"description":"Region for which AWS key pairs is validated","in":"path","name":"region","required":true,"type":"string"},{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"AWS Key pair which is to be validated","in":"path","name":"keypair","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate the specified AWS keypair","tags":["v1"]}},"/v1/clouds/aws/regions/{region}/kms/{keyId}":{"get":{"operationId":"V1AwsKmsKeyGet","parameters":[{"description":"Region for which AWS KMS key belongs","in":"path","name":"region","required":true,"type":"string"},{"description":"The globally unique identifier for the KMS key","in":"path","name":"keyId","required":true,"type":"string"},{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AwsKmsKeyEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get AWS KMS key by Id","tags":["v1"]}},"/v1/clouds/aws/regions/{region}/kmskeys":{"get":{"operationId":"V1AwsKmsKeys","parameters":[{"description":"Region for which AWS KMS key are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AwsKmsKeys"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of AWS KMS keys for the specified account","tags":["v1"]}},"/v1/clouds/aws/regions/{region}/kmskeys/validate":{"get":{"operationId":"V1AwsKmsKeyValidate","parameters":[{"description":"Region for which AWS KMS key is validated","in":"path","name":"region","required":true,"type":"string"},{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"AWS KEY ARN for validation","in":"query","name":"keyArn","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate an Aws KMS key for the specified account","tags":["v1"]}},"/v1/clouds/aws/regions/{region}/storagetypes":{"get":{"operationId":"V1AwsStorageTypes","parameters":[{"description":"Region for which AWS storage types are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AwsStorageTypes"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of AWS storage types","tags":["v1"]}},"/v1/clouds/aws/regions/{region}/vpcs":{"get":{"operationId":"V1AwsVpcs","parameters":[{"description":"Region for which VPCs are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AwsVpcs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of VPCs for the specified account","tags":["v1"]}},"/v1/clouds/aws/s3/validate":{"post":{"operationId":"V1AwsS3Validate","parameters":[{"description":"AWS S3 bucket credentials","in":"body","name":"awsS3Credential","required":true,"schema":{"$ref":"#/definitions/v1AwsS3BucketCredentials"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate the AWS S3 bucket","tags":["v1"]}},"/v1/clouds/aws/securitygroups":{"get":{"operationId":"V1AwsSecurityGroups","parameters":[{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"Region for which security groups are requested","in":"query","name":"region","required":true,"type":"string"},{"description":"Vpc Id for which security groups are requested","in":"query","name":"vpcId","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AwsSecurityGroups"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of AWS security groups for the specified account","tags":["v1"]}},"/v1/clouds/aws/volumeTypes":{"get":{"description":"List all AWS Volume Types","operationId":"V1AwsVolumeTypesGet","parameters":[{"description":"Specific AWS Region","in":"query","name":"region","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AWSVolumeTypes"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get all AWS Volume Types","tags":["v1"]}},"/v1/clouds/azure/account/validate":{"post":{"description":"Returns no contents if account is valid else error.","operationId":"V1AzureAccountValidate","parameters":[{"description":"Request payload for Azure cloud account","in":"body","name":"azureCloudAccount","required":true,"schema":{"$ref":"#/definitions/v1AzureCloudAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Check if Azure account is valid","tags":["v1"]}},"/v1/clouds/azure/groups":{"get":{"operationId":"V1AzureGroups","parameters":[{"description":"Uid for the specific Azure cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AzureGroups"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Azure groups","tags":["v1"]}},"/v1/clouds/azure/regions":{"get":{"operationId":"V1AzureRegions","parameters":[{"description":"Uid for the specific Azure cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"SubscriptionId for which resources is requested","in":"query","name":"subscriptionId","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AzureRegions"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Azure regions","tags":["v1"]}},"/v1/clouds/azure/regions/{region}/instancetypes":{"get":{"operationId":"V1AzureInstanceTypes","parameters":[{"description":"Region for which Azure instance types are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Filter for instances having cpu greater than or equal","format":"double","in":"query","name":"cpuGtEq","type":"number"},{"description":"Filter for instances having memory greater than or equal","format":"double","in":"query","name":"memoryGtEq","type":"number"},{"description":"Filter for instances having gpu greater than or equal","format":"double","in":"query","name":"gpuGtEq","type":"number"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AzureInstanceTypes"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Azure instance types","tags":["v1"]}},"/v1/clouds/azure/regions/{region}/storagetypes":{"get":{"operationId":"V1AzureStorageTypes","parameters":[{"description":"Region for which Azure storage types are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AzureStorageTypes"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Azure storage types","tags":["v1"]}},"/v1/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/aksClusters/name/validate":{"get":{"description":"Returns no contents if Azure cluster name is valid else error.","operationId":"V1AzureClusterNameValidate","parameters":[{"description":"Uid for the specific Azure cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"cluster name to be validated","in":"query","name":"name","required":true,"type":"string"},{"description":"region in which cluster name is to be validated","in":"path","name":"region","required":true,"type":"string"},{"description":"subscriptionId in which cluster name is to be validated","in":"path","name":"subscriptionId","required":true,"type":"string"},{"description":"resourceGroup in which cluster name is to be validated","in":"query","name":"resourceGroup","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Check if Azure cluster name is valid","tags":["v1"]}},"/v1/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/networks":{"get":{"operationId":"V1AzureVirtualNetworkList","parameters":[{"description":"Uid for the specific Azure cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Region for which Azure virtual networks are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Uid for which Azure virtual networks are requested","in":"path","name":"subscriptionId","required":true,"type":"string"},{"description":"Resource group for which Azure virtual networks are requested","in":"query","name":"resourceGroup","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AzureVirtualNetworkList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Azure virtual network list for the sepcified account","tags":["v1"]}},"/v1/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/resourceGroups":{"get":{"operationId":"V1AzureResourceGroupList","parameters":[{"description":"Uid for the specific Azure cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Region for which Azure resource group are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Uid for which Azure resource group are requested","in":"path","name":"subscriptionId","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AzureResourceGroupList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Azure resource group for the specified account","tags":["v1"]}},"/v1/clouds/azure/regions/{region}/zones":{"get":{"operationId":"V1AzureZones","parameters":[{"description":"Region for which Azure zones are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Uid for the specific Azure cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"subscriptionId of azure account","in":"query","name":"subscriptionId","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AzureZoneEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Azure zones for the specified region","tags":["v1"]}},"/v1/clouds/azure/resourceGroups/{resourceGroup}/privateDnsZones":{"get":{"description":"Returns Azure private DNS zones","operationId":"V1AzurePrivateDnsZones","parameters":[{"description":"resourceGroup for which Azure private dns zones are requested","in":"path","name":"resourceGroup","required":true,"type":"string"},{"description":"Uid for the specific Azure cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"subscriptionId for which Azure private dns zones are requested","in":"query","name":"subscriptionId","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AzurePrivateDnsZones"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get Azure private DNS zones for the given resource group","tags":["v1"]}},"/v1/clouds/azure/resourceGroups/{resourceGroup}/storageAccounts":{"get":{"description":"Returns Azure storage accounts.","operationId":"V1AzureStorageAccounts","parameters":[{"description":"resourceGroup for which Azure storage accounts are requested","in":"path","name":"resourceGroup","required":true,"type":"string"},{"description":"Uid for the specific Azure cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"subscriptionId for which Azure storage accounts are requested","in":"query","name":"subscriptionId","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AzureStorageAccounts"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get Azure storage accounts","tags":["v1"]}},"/v1/clouds/azure/resourceGroups/{resourceGroup}/storageAccounts/{storageAccountName}/containers":{"get":{"description":"Returns Azure storage containers for the given account.","operationId":"V1AzureStorageContainers","parameters":[{"description":"resourceGroup for which Azure storage accounts are requested","in":"path","name":"resourceGroup","required":true,"type":"string"},{"description":"Uid for the specific Azure cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"subscriptionId for which Azure storage accounts are requested","in":"query","name":"subscriptionId","required":true,"type":"string"},{"description":"resourceGroup for which Azure storage accounts are requested","in":"path","name":"storageAccountName","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AzureStorageContainers"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get Azure storage containers","tags":["v1"]}},"/v1/clouds/azure/storageaccounttypes":{"get":{"description":"Returns Azure storage account types.","operationId":"V1AzureStorageAccountTypes","parameters":[{"description":"Region for which Azure storage account types are requested","in":"query","name":"region","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AzureStorageAccountEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get Azure storage account types","tags":["v1"]}},"/v1/clouds/azure/subscriptions":{"get":{"description":"Returns list of Azure subscription list.","operationId":"V1AzureSubscriptionList","parameters":[{"description":"Uid for the specific Azure cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AzureSubscriptionList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Azure subscription list for the specified account","tags":["v1"]}},"/v1/clouds/azure/vhds/{vhd}/url":{"get":{"operationId":"V1AzureVhdUrl","parameters":[{"description":"vhd location for which Azure vhd url is requested","in":"path","name":"vhd","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1AzureVhdUrlEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the Azure vhd url for the specified vhd location","tags":["v1"]}},"/v1/clouds/cloudTypes":{"get":{"operationId":"V1CustomCloudTypesGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CustomCloudTypes"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the custom cloud types","tags":["v1"]}},"/v1/clouds/cloudTypes/register":{"post":{"operationId":"V1CustomCloudTypeRegister","parameters":[{"description":"Request payload to register custom cloud type","in":"body","name":"body","schema":{"$ref":"#/definitions/v1CustomCloudRequestEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Registers the custom cloud type","tags":["v1"]}},"/v1/clouds/cloudTypes/{cloudType}":{"delete":{"operationId":"V1CustomCloudTypesDelete","parameters":[{"description":"Unique cloud type","in":"path","name":"cloudType","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the custom cloud type","tags":["v1"]}},"/v1/clouds/cloudTypes/{cloudType}/cloudAccountKeys":{"get":{"operationId":"V1CustomCloudTypeCloudAccountKeysGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CustomCloudTypeCloudAccountKeys"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns valid keys for the cloud account used for custom cloud type","tags":["v1"]},"parameters":[{"description":"Unique cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"put":{"operationId":"V1CustomCloudTypeCloudAccountKeysUpdate","parameters":[{"description":"Request payload for custom cloud meta entity","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1CustomCloudTypeCloudAccountKeys"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the custom cloud type cloud account keys","tags":["v1"]}},"/v1/clouds/cloudTypes/{cloudType}/content/bootstrap":{"delete":{"operationId":"V1CustomCloudTypeBootstrapDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete the custom cloud type bootstrap","tags":["v1"]},"get":{"operationId":"V1CustomCloudTypeBootstrapGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CustomCloudTypeContentResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the custom cloud type bootstrap","tags":["v1"]},"parameters":[{"description":"Unique cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"put":{"consumes":["multipart/form-data"],"operationId":"V1CustomCloudTypeBootstrapUpdate","parameters":[{"in":"formData","name":"fileName","type":"file"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the custom cloud type bootstrap","tags":["v1"]}},"/v1/clouds/cloudTypes/{cloudType}/content/cloudProvider":{"delete":{"operationId":"V1CustomCloudTypeCloudProviderDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete the custom cloud type cloud provider","tags":["v1"]},"get":{"operationId":"V1CustomCloudTypeCloudProviderGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CustomCloudTypeContentResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the custom cloud type cloud provider","tags":["v1"]},"parameters":[{"description":"Unique cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"put":{"consumes":["multipart/form-data"],"operationId":"V1CustomCloudTypeCloudProviderUpdate","parameters":[{"in":"formData","name":"fileName","type":"file"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the custom cloud type cloud provider","tags":["v1"]}},"/v1/clouds/cloudTypes/{cloudType}/content/controlPlane":{"delete":{"operationId":"V1CustomCloudTypeControlPlaneDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete the custom cloud type control plane","tags":["v1"]},"get":{"operationId":"V1CustomCloudTypeControlPlaneGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CustomCloudTypeContentResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the custom cloud type control plane","tags":["v1"]},"parameters":[{"description":"Unique cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"put":{"consumes":["multipart/form-data"],"operationId":"V1CustomCloudTypeControlPlaneUpdate","parameters":[{"in":"formData","name":"fileName","type":"file"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the custom cloud type control plane","tags":["v1"]}},"/v1/clouds/cloudTypes/{cloudType}/content/templates/clusterTemplate":{"delete":{"operationId":"V1CustomCloudTypeClusterTemplateDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete the custom cloud type cluster template","tags":["v1"]},"get":{"operationId":"V1CustomCloudTypeClusterTemplateGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CustomCloudTypeContentResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the custom cloud type cluster template","tags":["v1"]},"parameters":[{"description":"Unique cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"put":{"consumes":["multipart/form-data"],"operationId":"V1CustomCloudTypeClusterTemplateUpdate","parameters":[{"in":"formData","name":"fileName","type":"file"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the custom cloud type cluster template","tags":["v1"]}},"/v1/clouds/cloudTypes/{cloudType}/content/templates/controlPlanePoolTemplate":{"delete":{"operationId":"V1CustomCloudTypeControlPlanePoolTemplateDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete the custom cloud type controlPlane pool template","tags":["v1"]},"get":{"operationId":"V1CustomCloudTypeControlPlanePoolTemplateGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CustomCloudTypeContentResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the custom cloud type controlPlane pool template","tags":["v1"]},"parameters":[{"description":"Unique cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"put":{"consumes":["multipart/form-data"],"operationId":"V1CustomCloudTypeControlPlanePoolTemplateUpdate","parameters":[{"in":"formData","name":"fileName","type":"file"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the custom cloud type controlPlane pool template","tags":["v1"]}},"/v1/clouds/cloudTypes/{cloudType}/content/templates/workerPoolTemplate":{"delete":{"operationId":"V1CustomCloudTypeWorkerPoolTemplateDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete the custom cloud type worker pool template","tags":["v1"]},"get":{"operationId":"V1CustomCloudTypeWorkerPoolTemplateGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CustomCloudTypeContentResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the custom cloud type worker pool template","tags":["v1"]},"parameters":[{"description":"Unique cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"put":{"consumes":["multipart/form-data"],"operationId":"V1CustomCloudTypeWorkerPoolTemplateUpdate","parameters":[{"in":"formData","name":"fileName","type":"file"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the custom cloud type worker pool template","tags":["v1"]}},"/v1/clouds/cloudTypes/{cloudType}/logo":{"get":{"operationId":"V1CustomCloudTypeLogoGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"Download the logo","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the custom cloud type logo","tags":["v1"]},"parameters":[{"description":"Unique cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"put":{"consumes":["multipart/form-data"],"operationId":"V1CustomCloudTypeLogoUpdate","parameters":[{"in":"formData","name":"fileName","type":"file"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the custom cloud type logo","tags":["v1"]}},"/v1/clouds/cloudTypes/{cloudType}/meta":{"get":{"operationId":"V1CustomCloudTypeMetaGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CustomCloudMetaEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the custom cloud type meta","tags":["v1"]},"parameters":[{"description":"Unique cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"put":{"operationId":"V1CustomCloudTypeMetaUpdate","parameters":[{"description":"Request payload for custom cloud meta entity","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1CustomCloudRequestEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the custom cloud type meta","tags":["v1"]}},"/v1/clouds/coxedge/account/validate":{"post":{"operationId":"V1CoxEdgeAccountValidate","parameters":[{"description":"Request payload to validate CoxEdge cloud account","in":"body","name":"account","required":true,"schema":{"$ref":"#/definitions/v1CoxEdgeCloudAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate the specified CoxEdge account credentials","tags":["v1"]}},"/v1/clouds/coxedge/default/baseurls":{"get":{"operationId":"V1CoxEdgeBaseUrls","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CoxEdgeBaseUrls"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of default base urls","tags":["v1"]}},"/v1/clouds/coxedge/environments":{"get":{"operationId":"V1CoxEdgeEnvironmentsGet","parameters":[{"description":"Uid for the specific CoxEdge cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"OrganizationId for the specific CoxEdge account","in":"query","name":"organizationId","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"List of CoxEdge environments","schema":{"$ref":"#/definitions/v1CoxEdgeEnvironments"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of environments for the specified account","tags":["v1"]},"post":{"operationId":"V1CoxEdgeEnvironments","parameters":[{"description":"Request payload to get CoxEdge environments","in":"body","name":"spec","required":true,"schema":{"$ref":"#/definitions/v1CoxEdgeEnvironmentsRequest"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"List of CoxEdge environments","schema":{"$ref":"#/definitions/v1CoxEdgeEnvironments"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of environments for baseUrl and apiKey","tags":["v1"]}},"/v1/clouds/coxedge/organizations":{"get":{"operationId":"V1CoxEdgeOrganizationsGet","parameters":[{"description":"Uid for the specific CoxEdge cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"List of CoxEdge organizations","schema":{"$ref":"#/definitions/v1CoxEdgeOrganizations"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of organizations for the specified account","tags":["v1"]},"post":{"operationId":"V1CoxEdgeOrganizations","parameters":[{"description":"Request payload to get CoxEdge organizations","in":"body","name":"spec","required":true,"schema":{"$ref":"#/definitions/v1CoxEdgeCredentials"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"List of CoxEdge organizations","schema":{"$ref":"#/definitions/v1CoxEdgeOrganizations"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of organizations for baseUrl and apiKey","tags":["v1"]}},"/v1/clouds/coxedge/regions":{"get":{"operationId":"V1CoxEdgeRegions","parameters":[{"description":"Uid for the specific AWS cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"CoxEdge organization id","in":"query","name":"organizationId","type":"string"},{"description":"CoxEdge service name","in":"query","name":"service","type":"string"},{"description":"CoxEdge environment name","in":"query","name":"environment","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CoxEdgeRegions"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of CoxEdge regions for the specified account","tags":["v1"]}},"/v1/clouds/coxedge/regions/{region}/instancetypes":{"get":{"operationId":"V1CoxEdgeInstanceTypes","parameters":[{"description":"Region for which CoxEdge instances are listed","in":"path","name":"region","required":true,"type":"string"},{"description":"Filter for instances having cpu greater than or equal","format":"double","in":"query","name":"cpuGtEq","type":"number"},{"description":"Filter for instances having memory greater than or equal","format":"double","in":"query","name":"memoryGtEq","type":"number"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CoxEdgeInstanceTypes"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of CoxEdge instance types","tags":["v1"]}},"/v1/clouds/coxedge/services":{"get":{"operationId":"V1CoxEdgeServicesGet","parameters":[{"description":"Uid for the specific CoxEdge cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"OrganizationId for the specific CoxEdge account","in":"query","name":"organizationId","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"List of CoxEdge services","schema":{"$ref":"#/definitions/v1CoxEdgeServices"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of services for the specified account","tags":["v1"]},"post":{"operationId":"V1CoxEdgeServices","parameters":[{"description":"Request payload to get CoxEdge services","in":"body","name":"spec","required":true,"schema":{"$ref":"#/definitions/v1CoxEdgeCredentials"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CoxEdgeServices"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of services for baseUrl and apiKey","tags":["v1"]}},"/v1/clouds/eks/properties/validate":{"post":{"operationId":"V1EksPropertiesValidate","parameters":[{"description":"Request payload for EKS properties validate spec","in":"body","name":"properties","required":true,"schema":{"$ref":"#/definitions/V1EksPropertiesValidateSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate EKS properties","tags":["v1"]}},"/v1/clouds/gcp/account/validate":{"post":{"operationId":"V1GcpAccountValidate","parameters":[{"description":"Uid for the specific GCP cloud account","in":"body","name":"gcpCloudAccount","required":true,"schema":{"$ref":"#/definitions/v1GcpCloudAccountValidateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate the specified GCP account credentials","tags":["v1"]}},"/v1/clouds/gcp/azs/validate":{"post":{"operationId":"V1GcpAzValidate","parameters":[{"description":"Uid for the specific GCP cloud account","in":"body","name":"entity","required":true,"schema":{"$ref":"#/definitions/v1AzValidateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate the specified GCP az","tags":["v1"]}},"/v1/clouds/gcp/bucketname/validate":{"post":{"operationId":"V1GcpBucketNameValidate","parameters":[{"description":"Request payload for GCP account name validate","in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1GcpAccountNameValidateSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate the specified GCP bucket name credentials","tags":["v1"]}},"/v1/clouds/gcp/image/container/validate":{"get":{"operationId":"V1GcpContainerImageValidate","parameters":[{"description":"image path in the container","in":"query","name":"imagePath","required":true,"type":"string"},{"description":"tag in the GCP container","in":"query","name":"tag","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates the image with tag","tags":["v1"]}},"/v1/clouds/gcp/images/{imageName}/url":{"get":{"operationId":"V1GcpImageUrl","parameters":[{"description":"imageName for which GCP image url is requested","in":"path","name":"imageName","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1GcpImageUrlEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the Gcp image url for the specified image location","tags":["v1"]}},"/v1/clouds/gcp/projects":{"get":{"operationId":"V1GcpProjects","parameters":[{"description":"Uid for the specific GCP cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1GcpProjects"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of GCP projects for the specified account","tags":["v1"]}},"/v1/clouds/gcp/projects/{project}/regions":{"get":{"operationId":"V1GcpRegions","parameters":[{"description":"Uid for the specific GCP cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Project Name for which GCP zones are requested","in":"path","name":"project","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1GcpRegions"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of GCP regions","tags":["v1"]}},"/v1/clouds/gcp/projects/{project}/regions/{region}/networks":{"get":{"operationId":"V1GcpNetworks","parameters":[{"description":"Uid for the specific GCP cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Region for which GCP networks are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Project Name for which GCP networks are requested","in":"path","name":"project","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1GcpNetworks"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of GCP networks for the specified account","tags":["v1"]}},"/v1/clouds/gcp/projects/{project}/regions/{region}/zones":{"get":{"operationId":"V1GcpZones","parameters":[{"description":"Uid for the specific GCP cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Region for which GCP zones are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Project Name for which GCP zones are requested","in":"path","name":"project","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1GcpZones"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of GCP zones for the specified account and region","tags":["v1"]}},"/v1/clouds/gcp/projects/{project}/validate":{"post":{"operationId":"V1GcpProjectValidate","parameters":[{"description":"GCP project uid","in":"path","name":"project","required":true,"type":"string"},{"description":"Uid for the specific GCP cloud account","in":"body","name":"cloudAccountUid","required":true,"schema":{"$ref":"#/definitions/v1CloudAccountUidEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate the specified GCP project","tags":["v1"]}},"/v1/clouds/gcp/projects/{project}/zones":{"get":{"operationId":"V1GcpAvailabilityZones","parameters":[{"description":"Uid for the specific GCP cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Project Name for which GCP zones are requested","in":"path","name":"project","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1GcpZones"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of GCP zones for the specified account","tags":["v1"]}},"/v1/clouds/gcp/properties/validate":{"post":{"operationId":"V1GcpPropertiesValidate","parameters":[{"description":"Request payload for GCP properties validate spec","in":"body","name":"properties","required":true,"schema":{"$ref":"#/definitions/V1GcpPropertiesValidateSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate GCP properties","tags":["v1"]}},"/v1/clouds/gcp/regions/{region}/instancetypes":{"get":{"operationId":"V1GcpInstanceTypes","parameters":[{"description":"Region for which GCP instance types are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Filter for instances having cpu greater than or equal","format":"double","in":"query","name":"cpuGtEq","type":"number"},{"description":"Filter for instances having memory greater than or equal","format":"double","in":"query","name":"memoryGtEq","type":"number"},{"description":"Filter for instances having gpu greater than or equal","format":"double","in":"query","name":"gpuGtEq","type":"number"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1GcpInstanceTypes"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of GCP instance types","tags":["v1"]}},"/v1/clouds/gcp/regions/{region}/storagetypes":{"get":{"operationId":"V1GcpStorageTypes","parameters":[{"description":"Region for which GCP storage types are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1GcpStorageTypes"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Gcp storage types","tags":["v1"]}},"/v1/clouds/maas/account/validate":{"post":{"description":"Returns no contents if account is valid else error.","operationId":"V1MaasAccountValidate","parameters":[{"description":"Request payload for Maas cloud account","in":"body","name":"account","required":true,"schema":{"$ref":"#/definitions/v1MaasCloudAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Check if Maas account is valid","tags":["v1"]}},"/v1/clouds/maas/azs":{"get":{"operationId":"V1MaasZonesGet","parameters":[{"description":"Uid for the specific Maas cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1MaasZones"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Maas zones for a particular account uid","tags":["v1"]}},"/v1/clouds/maas/domains":{"get":{"operationId":"V1MaasDomainsGet","parameters":[{"description":"Uid for the specific Maas cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1MaasDomains"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Maas domains","tags":["v1"]}},"/v1/clouds/maas/resourcePools":{"get":{"operationId":"V1MaasPoolsGet","parameters":[{"description":"Uid for the specific Maas cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1MaasPools"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Maas pools for a particular account uid","tags":["v1"]}},"/v1/clouds/maas/subnets":{"get":{"operationId":"V1MaasSubnetsGet","parameters":[{"description":"Uid for the specific Maas cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1MaasSubnets"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Maas subnets for a particular account uid","tags":["v1"]}},"/v1/clouds/maas/tags":{"get":{"operationId":"V1MaasTagsGet","parameters":[{"description":"Uid for the specific Maas cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1MaasTags"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Maas tags for a particular account uid","tags":["v1"]}},"/v1/clouds/openstack/account/validate":{"post":{"description":"Returns no contents if account is valid else error.","operationId":"V1OpenStackAccountValidate","parameters":[{"description":"Request payload for OpenStack cloud account","in":"body","name":"openstackCloudAccount","required":true,"schema":{"$ref":"#/definitions/v1OpenStackCloudAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Check if OpenStack account is valid","tags":["v1"]}},"/v1/clouds/openstack/azs":{"get":{"operationId":"V1OpenStackAzsGet","parameters":[{"description":"Uid for the specific OpenStack cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"project for which OpenStack azs are requested","in":"query","name":"project","type":"string"},{"description":"region for which OpenStack azs are requested","in":"query","name":"region","type":"string"},{"description":"domain for which OpenStack azs are requested","in":"query","name":"domain","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OpenStackAzs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of OpenStack azs for a particular account uid","tags":["v1"]}},"/v1/clouds/openstack/flavors":{"get":{"operationId":"V1OpenStackFlavorsGet","parameters":[{"description":"Uid for the specific OpenStack cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"project for which OpenStack flavors are requested","in":"query","name":"project","type":"string"},{"description":"region for which OpenStack flavors are requested","in":"query","name":"region","type":"string"},{"description":"domain for which OpenStack flavors are requested","in":"query","name":"domain","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OpenStackFlavors"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the OpenStack flavors","tags":["v1"]}},"/v1/clouds/openstack/keypairs":{"get":{"operationId":"V1OpenStackKeypairsGet","parameters":[{"description":"Uid for the specific OpenStack cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"project for which OpenStack keypairs are requested","in":"query","name":"project","type":"string"},{"description":"region for which OpenStack keypairs are requested","in":"query","name":"region","type":"string"},{"description":"domain for which OpenStack keypairs are requested","in":"query","name":"domain","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OpenStackKeypairs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the OpenStack keypair","tags":["v1"]}},"/v1/clouds/openstack/networks":{"get":{"operationId":"V1OpenStackNetworksGet","parameters":[{"description":"Uid for the specific OpenStack cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"project for which OpenStack networks are requested","in":"query","name":"project","type":"string"},{"description":"region for which OpenStack networks are requested","in":"query","name":"region","type":"string"},{"description":"domain for which OpenStack networks are requested","in":"query","name":"domain","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OpenStackNetworks"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the OpenStack networks","tags":["v1"]}},"/v1/clouds/openstack/projects":{"get":{"operationId":"V1OpenStackProjectsGet","parameters":[{"description":"Uid for the specific OpenStack cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OpenStackProjects"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the OpenStack projects","tags":["v1"]}},"/v1/clouds/openstack/regions":{"get":{"operationId":"V1OpenStackRegionsGet","parameters":[{"description":"Uid for the specific OpenStack cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OpenStackRegions"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the OpenStack regions","tags":["v1"]}},"/v1/clouds/tencent/account/validate":{"post":{"operationId":"V1TencentAccountValidate","parameters":[{"description":"Request payload to validate tencent cloud account","in":"body","name":"account","required":true,"schema":{"$ref":"#/definitions/v1TencentCloudAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate the specified Tencent account credentials","tags":["v1"]}},"/v1/clouds/tencent/regions":{"get":{"operationId":"V1TencentRegions","parameters":[{"description":"Uid for the specific Tencent cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1TencentRegions"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Tencent regions for the specified account","tags":["v1"]}},"/v1/clouds/tencent/regions/{region}/instancetypes":{"get":{"operationId":"V1TencentInstanceTypes","parameters":[{"description":"Region for which tencent instances are listed","in":"path","name":"region","required":true,"type":"string"},{"description":"Filter for instances having cpu greater than or equal","format":"double","in":"query","name":"cpuGtEq","type":"number"},{"description":"Filter for instances having memory greater than or equal","format":"double","in":"query","name":"memoryGtEq","type":"number"},{"description":"Filter for instances having gpu greater than or equal","format":"double","in":"query","name":"gpuGtEq","type":"number"},{"description":"Uid for the specific tencent cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1TencentInstanceTypes"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Tencent instance types","tags":["v1"]}},"/v1/clouds/tencent/regions/{region}/keypairs":{"get":{"operationId":"V1TencentKeypairs","parameters":[{"description":"Region for which keypairs are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Uid for the specific Tencent cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1TencentKeypairs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of keypairs for the specified account","tags":["v1"]}},"/v1/clouds/tencent/regions/{region}/securitygroups":{"get":{"operationId":"V1TencentSecurityGroups","parameters":[{"description":"Region for which security groups are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Uid for the specific Tencent cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1TencentSecurityGroups"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of secutity groups for the specified account","tags":["v1"]}},"/v1/clouds/tencent/regions/{region}/storagetypes":{"get":{"operationId":"V1TencentStorageTypes","parameters":[{"description":"Region for which tencent storages are listed","in":"path","name":"region","required":true,"type":"string"},{"description":"Uid for the specific tencent cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Zone for which tencent storages are listed","in":"query","name":"zone","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1TencentStorageTypes"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Tencent storage types","tags":["v1"]}},"/v1/clouds/tencent/regions/{region}/vpcs":{"get":{"operationId":"V1TencentVpcs","parameters":[{"description":"Region for which VPCs are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Uid for the specific Tencent cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1TencentVpcs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of VPCs for the specified account","tags":["v1"]}},"/v1/clouds/tencent/regions/{region}/zones":{"get":{"operationId":"V1TencentZones","parameters":[{"description":"Region for which zones are requested","in":"path","name":"region","required":true,"type":"string"},{"description":"Uid for the specific Tencent cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1TencentAvailabilityZones"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Tencent availability zones for the specified region","tags":["v1"]}},"/v1/clouds/vsphere/account/validate":{"post":{"description":"Returns no contents if account is valid else error.","operationId":"V1VsphereAccountValidate","parameters":[{"description":"Request payload for VSphere cloud account","in":"body","name":"vsphereCloudAccount","required":true,"schema":{"$ref":"#/definitions/v1VsphereCloudAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Check if Vsphere account is valid","tags":["v1"]}},"/v1/clouds/vsphere/datacenters":{"get":{"operationId":"V1VsphereDatacenters","parameters":[{"description":"Uid for the specific OpenStack cloud account","in":"query","name":"cloudAccountUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1VsphereDatacenters"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the vsphere data centers","tags":["v1"]}},"/v1/clouds/vsphere/datacenters/{uid}/computeclusters/{computecluster}":{"get":{"operationId":"V1VsphereComputeClusterResources","parameters":[{"description":"Uid for the specific VSphere cloud account","in":"query","name":"cloudAccountUid","required":true,"type":"string"},{"description":"computecluster for which resources is requested","in":"path","name":"computecluster","required":true,"type":"string"},{"description":"VSphere datacenter uid for which resources is requested","in":"path","name":"uid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1VsphereComputeClusterResources"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the resources for vsphere compute cluster","tags":["v1"]}},"/v1/clouds/vsphere/env":{"get":{"operationId":"V1VsphereEnv","parameters":[{"description":"Request payload for VSphere cloud account","in":"body","name":"vsphereCloudAccount","required":true,"schema":{"$ref":"#/definitions/v1VsphereCloudAccount"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1VsphereEnv"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves vsphere env","tags":["v1"]}},"/v1/clouds/{cloudType}/instance/spotprice":{"get":{"operationId":"V1CloudInstanceSpotPriceGet","parameters":[{"description":"Cloud type [aws/azure/gcp/tencent]","in":"path","name":"cloudType","required":true,"type":"string"},{"description":"Instance type for a specific cloud type","in":"query","name":"instanceType","required":true,"type":"string"},{"description":"Availability zone for a specific cloud type","in":"query","name":"zone","required":true,"type":"string"},{"description":"Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.","format":"date-time","in":"query","name":"timestamp","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CloudSpotPrice"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves the cloud instance spot price based on zone and timestamp for a specific cloud","tags":["v1"]}},"/v1/clouds/{cloud}/compute/{type}/rate":{"get":{"operationId":"V1CloudComputeRate","parameters":[{"description":"cloud for which compute rate is requested","in":"path","name":"cloud","required":true,"type":"string"},{"description":"instance type for which compute rate is requested","in":"path","name":"type","required":true,"type":"string"},{"description":"region for which compute rate is requested","in":"query","name":"region","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CloudCost"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the cloud compute rate","tags":["v1"]}},"/v1/clouds/{cloud}/storage/{type}/rate":{"get":{"operationId":"V1CloudStorageRate","parameters":[{"description":"cloud for which compute rate is requested","in":"path","name":"cloud","required":true,"type":"string"},{"description":"storage type for which compute rate is requested","in":"path","name":"type","required":true,"type":"string"},{"description":"region for which compute rate is requested","in":"query","name":"region","required":true,"type":"string"},{"description":"maxDiskType for which compute rate is requested","in":"query","name":"maxDiskType","type":"integer"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1CloudCost"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the cloud storage rate","tags":["v1"]}},"/v1/clustergroups":{"post":{"operationId":"v1ClusterGroupsCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterGroupEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create cluster groups","tags":["v1"]}},"/v1/clustergroups/developerCredit/usage/{scope}":{"get":{"operationId":"v1ClusterGroupsDeveloperCreditUsageGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Cluster group developer credit usage","schema":{"$ref":"#/definitions/v1ClusterGroupsDeveloperCreditUsage"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get cluster group developer credit usage by scope","tags":["v1"]},"parameters":[{"in":"path","name":"scope","required":true,"type":"string"}]},"/v1/clustergroups/hostCluster":{"get":{"operationId":"v1ClusterGroupsHostClusterSummary","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster groups of host cluster type summary","schema":{"$ref":"#/definitions/v1ClusterGroupsHostClusterSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of cluster groups host cluster summary","tags":["v1"]}},"/v1/clustergroups/hostCluster/metadata":{"get":{"operationId":"v1ClusterGroupsHostClusterMetadata","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster groups host cluster metadata items","schema":{"$ref":"#/definitions/v1ClusterGroupsHostClusterMetadata"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of cluster groups host cluster metadata","tags":["v1"]}},"/v1/clustergroups/validate/name":{"get":{"operationId":"v1ClusterGroupsValidateName","parameters":[{"in":"query","name":"name","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates the cluster groups name","tags":["v1"]}},"/v1/clustergroups/{uid}":{"delete":{"operationId":"v1ClusterGroupsUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified cluster group","tags":["v1"]},"get":{"operationId":"v1ClusterGroupsUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterGroup"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster groups","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/clustergroups/{uid}/hostCluster":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1ClusterGroupsUidHostClusterUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterGroupHostClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates cluster reference and host cluster config","tags":["v1"]}},"/v1/clustergroups/{uid}/meta":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1ClusterGroupsUidMetaUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ObjectMeta"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster groups meta","tags":["v1"]}},"/v1/clustergroups/{uid}/packs/resolvedValues":{"get":{"operationId":"v1ClusterGroupsUidPacksResolvedValuesGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1SpectroClusterProfilesResolvedValues"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified clustergroup's profile packs resolved values","tags":["v1"]},"parameters":[{"description":"Cluster group uid","in":"path","name":"uid","required":true,"type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterProfilesParamReferenceEntity"}}]},"/v1/clustergroups/{uid}/profiles":{"get":{"operationId":"v1ClusterGroupsUidProfilesGet","parameters":[{"description":"includes pack meta such as schema, presets","in":"query","name":"includePackMeta","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1SpectroClusterProfileList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the associated profiles of a specified cluster group","tags":["v1"]},"parameters":[{"description":"ClusterGroup uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1ClusterGroupsUidProfilesUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterProfiles"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster groups profiles","tags":["v1"]}},"/v1/clusterprofiles":{"post":{"operationId":"v1ClusterProfilesCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterProfileEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a cluster profile","tags":["v1"]}},"/v1/clusterprofiles/bulk":{"delete":{"operationId":"v1ClusterProfilesBulkDelete","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1BulkDeleteRequest"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1BulkDeleteResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes list of cluster profiles","tags":["v1"]}},"/v1/clusterprofiles/import":{"post":{"operationId":"v1ClusterProfilesImport","parameters":[{"description":"If true then cluster profile will be published post successful import","in":"query","name":"publish","type":"boolean"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterProfileImportEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Imports a cluster profile","tags":["v1"]}},"/v1/clusterprofiles/import/file":{"post":{"consumes":["multipart/form-data"],"operationId":"v1ClusterProfilesImportFile","parameters":[{"description":"If true then cluster profile will be published post successful import","in":"query","name":"publish","type":"boolean"},{"description":"Cluster profile import file","in":"formData","name":"importFile","type":"file"},{"default":"json","description":"Cluster profile import file format [\"yaml\", \"json\"]","enum":["yaml","json"],"in":"query","name":"format","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Imports a cluster profile via file","tags":["v1"]}},"/v1/clusterprofiles/import/validate":{"post":{"operationId":"v1ClusterProfilesImportValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterProfileImportEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Cluster profile import validated response","schema":{"$ref":"#/definitions/v1ClusterProfileImportEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates cluster profile import","tags":["v1"]}},"/v1/clusterprofiles/macros":{"get":{"operationId":"v1MacrosList","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Macros"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of macros","tags":["v1"]}},"/v1/clusterprofiles/validate/name":{"get":{"description":"Validates the cluster profile name and version","operationId":"v1ClusterProfilesValidateNameVersion","parameters":[{"description":"Cluster profile name","in":"query","name":"name","type":"string"},{"description":"Cluster profile version","in":"query","name":"version","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates the cluster profile metadata","tags":["v1"]}},"/v1/clusterprofiles/validate/packs":{"post":{"operationId":"v1ClusterProfilesValidatePacks","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterProfileTemplateDraft"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Cluster profile packs validation response","schema":{"$ref":"#/definitions/v1ClusterProfileValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates cluster profile packs","tags":["v1"]}},"/v1/clusterprofiles/{uid}":{"delete":{"operationId":"v1ClusterProfilesDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified cluster profile","tags":["v1"]},"get":{"operationId":"v1ClusterProfilesGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterProfile"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns a specified cluster profile","tags":["v1"]},"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Comma seperated pack meta such as schema, presets","in":"query","name":"includePackMeta","type":"string"}],"put":{"operationId":"v1ClusterProfilesUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterProfileUpdateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster profile","tags":["v1"]}},"/v1/clusterprofiles/{uid}/clone":{"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1ClusterProfilesUidClone","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterProfileCloneEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a clone of the specified cluster profile","tags":["v1"]}},"/v1/clusterprofiles/{uid}/clone/validate":{"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"}],"post":{"description":"Validates the cloned cluster profile name, version and target project uid","operationId":"v1ClusterProfilesUidCloneValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterProfileCloneMetaInputEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates the cluster profile clone","tags":["v1"]}},"/v1/clusterprofiles/{uid}/export":{"get":{"operationId":"V1ClusterProfilesUidExport","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"Exports cluster profile as a file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Export the specified cluster profile","tags":["v1"]},"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"},{"default":"json","description":"Cluster profile export file format [ \"yaml\", \"json\" ]","enum":["yaml","json"],"in":"query","name":"format","type":"string"}]},"/v1/clusterprofiles/{uid}/export/terraform":{"get":{"operationId":"V1ClusterProfilesUidExportTerraform","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"Downloads cluster profile export file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Downloads the specified cluster profile","tags":["v1"]},"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"},{"default":"yaml","description":"Cluster profile export file format [ \"yaml\", \"json\" ]","enum":["yaml","json"],"in":"query","name":"format","type":"string"}]},"/v1/clusterprofiles/{uid}/metadata":{"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1ClusterProfilesUidMetadataUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ProfileMetaEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster profile metadata","tags":["v1"]}},"/v1/clusterprofiles/{uid}/packRefs":{"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Cluster profile notification uid","in":"query","name":"notify","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterProfileNotificationUpdateEntity"}}],"patch":{"operationId":"v1ClusterProfilesPacksRefUpdate","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates cluster profile packs ref","tags":["v1"]}},"/v1/clusterprofiles/{uid}/packs":{"get":{"operationId":"v1ClusterProfilesUidPacksGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterProfilePacksEntities"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster profile packs","tags":["v1"]},"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Comma seperated pack meta such as schema, presets","in":"query","name":"includePackMeta","type":"string"}],"post":{"operationId":"v1ClusterProfilesUidPacksAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1PackInputEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds a new pack to the specified cluster profile and returns the created pack uid","tags":["v1"]}},"/v1/clusterprofiles/{uid}/packs/manifests":{"get":{"operationId":"v1ClusterProfilesUidPacksManifestsGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterProfilePacksManifests"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster profile pack manifests","tags":["v1"]},"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Comma seperated pack meta such as schema, presets","in":"query","name":"includePackMeta","type":"string"}]},"/v1/clusterprofiles/{uid}/packs/resolvedValues":{"get":{"operationId":"v1ClusterProfilesUidPacksResolvedValuesGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1PackResolvedValues"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster profile packs resolved values","tags":["v1"]},"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1PackParamsEntity"}}]},"/v1/clusterprofiles/{uid}/packs/{packName}":{"delete":{"operationId":"v1ClusterProfilesUidPacksNameDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified pack information in the cluster profile","tags":["v1"]},"get":{"operationId":"V1ClusterProfilesUidPacksNameGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1PackRefSummaryResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster profile pack","tags":["v1"]},"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Cluster profile pack name","in":"path","name":"packName","required":true,"type":"string"}],"put":{"operationId":"v1ClusterProfilesUidPacksNameUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1PackUpdateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified pack information in the cluster profile","tags":["v1"]}},"/v1/clusterprofiles/{uid}/packs/{packName}/config":{"get":{"operationId":"v1ClusterProfilesUidPacksConfigGet","parameters":[{"description":"cluster profile uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Cluster profile pack name","in":"path","name":"packName","required":true,"type":"string"},{"description":"Cluster profile pack uid","in":"query","name":"packUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster profile pack configurations","schema":{"$ref":"#/definitions/v1ClusterProfilePackConfigList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster profile pack configuration","tags":["v1"]}},"/v1/clusterprofiles/{uid}/packs/{packName}/manifests":{"get":{"operationId":"v1ClusterProfilesUidPacksUidManifests","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ManifestEntities"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the associated manifests for the specified profile's pack","tags":["v1"]},"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Cluster profile pack name","in":"path","name":"packName","required":true,"type":"string"}],"post":{"operationId":"v1ClusterProfilesUidPacksNameManifestsAdd","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ManifestInputEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Adds manifest to the profiles packs and returns the added manifests uid","tags":["v1"]}},"/v1/clusterprofiles/{uid}/packs/{packName}/manifests/{manifestUid}":{"delete":{"operationId":"v1ClusterProfilesUidPacksNameManifestsUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified cluster profile pack manifest","tags":["v1"]},"get":{"operationId":"v1ClusterProfilesUidPacksNameManifestsUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ManifestEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster profile pack manifest","tags":["v1"]},"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Cluster profile pack name","in":"path","name":"packName","required":true,"type":"string"},{"description":"Cluster profile pack manifest uid","in":"path","name":"manifestUid","required":true,"type":"string"}],"put":{"operationId":"v1ClusterProfilesUidPacksNameManifestsUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ManifestInputEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified manifest of the profile's pack","tags":["v1"]}},"/v1/clusterprofiles/{uid}/publish":{"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"description":"Publish the draft cluster profile with next revision, the current draft cluster profile will be marked to published\nand the draft cluster profile will be set to null in the cluster profile template.\n","operationId":"v1ClusterProfilesPublish","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Cluster profile published successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Publishes the specified cluster profile","tags":["v1"]}},"/v1/clusterprofiles/{uid}/spc/download":{"get":{"operationId":"v1ClusterProfilesUidSpcDownload","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"Download cluster profile archive file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Downloads the specified cluster profile","tags":["v1"]},"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/clusterprofiles/{uid}/validate/packs":{"post":{"operationId":"v1ClusterProfilesUidValidatePacks","parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterProfileTemplateDraft"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Cluster profile packs validation response","schema":{"$ref":"#/definitions/v1ClusterProfileValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates specified cluster profile packs","tags":["v1"]}},"/v1/clusterprofiles/{uid}/variables":{"delete":{"operationId":"V1ClusterProfilesUidVariablesDelete","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VariableNames"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified cluster profile variables","tags":["v1"]},"get":{"operationId":"V1ClusterProfilesUidVariablesGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Variables"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieve a list of variables defined for the cluster profile","tags":["v1"]},"parameters":[{"description":"Cluster profile uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"V1ClusterProfilesUidVariablesPatch","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Variables"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update specific variables defined for a cluster profile","tags":["v1"]},"put":{"operationId":"V1ClusterProfilesUidVariablesPut","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Variables"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the variables defined for a cluster profile","tags":["v1"]}},"/v1/dashboard/appDeployments":{"post":{"operationId":"v1DashboardAppDeployments","parameters":[{"description":"limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","maximum":20,"name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AppDeploymentsFilterSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of application deployment summary items","schema":{"$ref":"#/definitions/v1AppDeploymentsSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of application deployments filter summary Supported filter fields - [\"appDeploymentName\", \"clusterUid\", \"tags\"] Supported sort fields - [\"appDeploymentName\", \"creationTimestamp\", \"lastModifiedTimestamp\"]","tags":["v1"]}},"/v1/dashboard/appProfiles":{"post":{"operationId":"v1DashboardAppProfiles","parameters":[{"description":"limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","maximum":20,"name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AppProfilesFilterSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of application profiles summary items","schema":{"$ref":"#/definitions/v1AppProfilesSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of application profiles filter summary Supported filter fields - [\"profileName\", \"tags\"] Supported sort fields - [\"profileName\", \"creationTimestamp\", \"lastModifiedTimestamp\"]","tags":["v1"]}},"/v1/dashboard/appProfiles/metadata":{"get":{"operationId":"v1DashboardAppProfilesMetadata","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of application profile summary items","schema":{"$ref":"#/definitions/v1AppProfilesMetadata"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of application profile metadata","tags":["v1"]}},"/v1/dashboard/appliances/metadata":{"post":{"operationId":"v1EdgeHostsMetadata","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeHostsMetadataFilter"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of edgehost summary items","schema":{"$ref":"#/definitions/v1EdgeHostsMetadataSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of edgehosts summary","tags":["v1"]}},"/v1/dashboard/cloudaccounts/metadata":{"get":{"operationId":"v1DashboardCloudAccountsMetadata","parameters":[{"in":"query","name":"environment","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cloud accounts summary items","schema":{"$ref":"#/definitions/v1CloudAccountsMetadata"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of cloud accounts metadata","tags":["v1"]}},"/v1/dashboard/clustergroups/{uid}/hostClusters":{"post":{"operationId":"v1ClusterGroupUidHostClustersSummary","parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SearchFilterSummarySpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster summary items","schema":{"$ref":"#/definitions/v1SpectroClustersSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of cluster summary for a given cluster group","tags":["v1"]}},"/v1/dashboard/clustergroups/{uid}/virtualClusters":{"post":{"operationId":"v1ClusterGroupUidVirtualClustersSummary","parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SearchFilterSummarySpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster summary items","schema":{"$ref":"#/definitions/v1SpectroClustersSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of cluster summary for a given cluster group","tags":["v1"]}},"/v1/dashboard/clusterprofiles":{"post":{"operationId":"v1ClusterProfilesFilterSummary","parameters":[{"description":"limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","maximum":20,"name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterProfilesFilterSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster profiles summary items","schema":{"$ref":"#/definitions/v1ClusterProfilesSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of cluster profiles filter summary Supported filter fields - [\"profileName\", \"tags\", \"profileType\", \"environment\"] Supported sort fields - [\"profileName\", \"environment\", \"profileType\", \"creationTimestamp\", \"lastModifiedTimestamp\"]","tags":["v1"]}},"/v1/dashboard/clusterprofiles/metadata":{"get":{"operationId":"v1ClusterProfilesMetadata","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster summary items","schema":{"$ref":"#/definitions/v1ClusterProfilesMetadata"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of cluster profiles metadata","tags":["v1"]}},"/v1/dashboard/clusterprofiles/{uid}":{"get":{"operationId":"v1ClusterProfilesUidSummary","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Cluster profile summary response","schema":{"$ref":"#/definitions/v1ClusterProfileSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a specified cluster profile summary","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/dashboard/edgehosts/search":{"post":{"operationId":"v1DashboardEdgehostsSearch","parameters":[{"description":"limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","maximum":20,"name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SearchFilterSummarySpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of edgehost summary items","schema":{"$ref":"#/definitions/v1EdgeHostsSearchSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Edgehosts summary with provided search filter. Supported fields as per schema /v1/dashboard/edgehosts/search/schema","tags":["v1"]}},"/v1/dashboard/edgehosts/search/schema":{"get":{"operationId":"v1DashboardEdgehostsSearchSchemaGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of schema items","schema":{"$ref":"#/definitions/v1SearchFilterSchemaSpec"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a schema for the Edgehost search filter","tags":["v1"]}},"/v1/dashboard/pcgs/search":{"post":{"operationId":"v1DashboardPcgsSearchSummary","parameters":[{"description":"limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","maximum":20,"name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SearchFilterSummarySpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster summary items","schema":{"$ref":"#/definitions/v1PcgsSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of PCG summary with provided search filter. Supported fields as per schema /v1/dashboard/pcgs/search/schema","tags":["v1"]}},"/v1/dashboard/pcgs/search/schema":{"get":{"operationId":"v1DashboardPcgSearchSchemaGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of schema items","schema":{"$ref":"#/definitions/v1SearchFilterSchemaSpec"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a schema for the PCG search filter","tags":["v1"]}},"/v1/dashboard/projects":{"post":{"operationId":"v1ProjectsFilterSummary","parameters":[{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ProjectsFilterSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of project filter summary items","schema":{"$ref":"#/definitions/v1ProjectsSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"tags":["v1"]}},"/v1/dashboard/projects/metadata":{"get":{"operationId":"v1ProjectsMetadata","parameters":[{"description":"Name of the project","in":"query","name":"name","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of project metadata items","schema":{"$ref":"#/definitions/v1ProjectsMetadata"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of projects metadata","tags":["v1"]}},"/v1/dashboard/spectroclusters/cost":{"post":{"operationId":"v1DashboardSpectroClustersCostSummary","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterCloudCostSummarySpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of resources cloud cost summary items","schema":{"$ref":"#/definitions/v1ResourcesCloudCostSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves spectro clusters cloud cost summary information","tags":["v1"]}},"/v1/dashboard/spectroclusters/filters/workspace":{"get":{"operationId":"v1SpectroClustersFiltersWorkspace","parameters":[{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster summary items","schema":{"$ref":"#/definitions/v1SpectroClustersSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of running, non rbac configured clusters in a workspace","tags":["v1"]}},"/v1/dashboard/spectroclusters/metadata":{"get":{"operationId":"v1SpectroClustersMetadataGet","parameters":[{"enum":["hostclusters","strictHostclusters"],"in":"query","name":"quickFilter","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster summary items","schema":{"$ref":"#/definitions/v1SpectroClustersMetadata"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of cluster summary metadata","tags":["v1"]},"post":{"operationId":"v1SpectroClustersMetadata","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterMetadataSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster summary items","schema":{"$ref":"#/definitions/v1SpectroClustersMetadata"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of cluster summary","tags":["v1"]}},"/v1/dashboard/spectroclusters/metadata/search":{"post":{"operationId":"v1SpectroClustersMetadataSearch","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SearchFilterSummarySpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster summary meta items","schema":{"$ref":"#/definitions/v1SpectroClustersMetadataSearch"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of cluster metadata with provided search filter spec Supported sort fields - [\"environment\", \"clusterName\", \"clusterState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]","tags":["v1"]}},"/v1/dashboard/spectroclusters/metadata/search/schema":{"get":{"operationId":"v1SpectroClustersMetadataSearchSchema","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster meta schema items","schema":{"$ref":"#/definitions/v1SearchFilterSchemaSpec"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a schema for the cluster metadata search filter","tags":["v1"]}},"/v1/dashboard/spectroclusters/repaveStatus":{"get":{"operationId":"v1DashboardSpectroClustersRepaveList","parameters":[{"description":"limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","maximum":20,"name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"default":"Pending","enum":["Pending","Approved","Reverted"],"in":"query","name":"repaveState","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster summary items","schema":{"$ref":"#/definitions/v1SpectroClustersSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of clusters with the desired repave state","tags":["v1"]}},"/v1/dashboard/spectroclusters/resources/consumption":{"post":{"operationId":"v1SpectroClustersResourcesConsumption","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ResourceConsumptionSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of resource consumption data items","schema":{"$ref":"#/definitions/v1ResourcesConsumption"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves spectro clusters resource consumption","tags":["v1"]}},"/v1/dashboard/spectroclusters/resources/cost":{"post":{"operationId":"v1SpectroClustersResourcesCostSummary","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ResourceCostSummarySpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of resources cost summary items","schema":{"$ref":"#/definitions/v1ResourcesCostSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves spectro clusters resources cost summary information","tags":["v1"]}},"/v1/dashboard/spectroclusters/resources/usage":{"post":{"operationId":"v1SpectroClustersResourcesUsageSummary","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ResourceUsageSummarySpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of resources usage summary items","schema":{"$ref":"#/definitions/v1ResourcesUsageSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves spectro clusters resources usage summary information","tags":["v1"]}},"/v1/dashboard/spectroclusters/search":{"post":{"operationId":"v1SpectroClustersSearchFilterSummary","parameters":[{"description":"limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","maximum":20,"name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SearchFilterSummarySpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster summary items","schema":{"$ref":"#/definitions/v1SpectroClustersSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of cluster summary with provided search filter spec Supported sort fields - [\"environment\", \"clusterName\", \"memoryUsage\", \"healthState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]","tags":["v1"]}},"/v1/dashboard/spectroclusters/search/export":{"get":{"operationId":"v1DashboardClustersSearchSummaryExportGet","parameters":[{"in":"query","name":"encodedFilter","type":"string"},{"default":"csv","enum":["csv"],"in":"query","name":"format","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"OK","headers":{"Content-Disposition":{"type":"string"},"Content-Type":{"type":"string"}},"schema":{"type":"file"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Export and download the list of cluster summary with matching search filter and download as a file(csv)","tags":["v1"]},"post":{"operationId":"v1DashboardClustersSearchSummaryExport","parameters":[{"default":"csv","enum":["csv"],"in":"query","name":"format","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SearchFilterSummarySpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"download file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Export the list of cluster summary with matching search filter and download as a file(csv) Supported sort fields - [\"environment\", \"clusterName\", \"healthState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]","tags":["v1"]}},"/v1/dashboard/spectroclusters/search/input":{"get":{"operationId":"v1DashboardSpectroClustersSearchInput","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster search filter input items","schema":{"$ref":"#/definitions/v1ClusterSearchInputSpec"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a supported input values for the cluster search filter","tags":["v1"]}},"/v1/dashboard/spectroclusters/search/schema":{"get":{"operationId":"v1SpectroClustersSearchSchema","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster filter schema items","schema":{"$ref":"#/definitions/v1SearchFilterSchemaSpec"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a schema for the cluster search filter","tags":["v1"]}},"/v1/dashboard/spectroclusters/vms":{"get":{"operationId":"V1DashboardVMEnabledClustersList","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of schema items","schema":{"$ref":"#/definitions/v1VMClusters"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Virtual machine enabled clusters","tags":["v1"]}},"/v1/dashboard/spectroclusters/{uid}":{"get":{"operationId":"v1SpectroClustersSummaryUid","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An spectro cluster summary","schema":{"$ref":"#/definitions/v1SpectroClusterUidSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster summary","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/dashboard/spectroclusters/{uid}/cost":{"get":{"operationId":"v1SpectroClustersUidCostSummary","parameters":[{"description":"Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.","format":"date-time","in":"query","name":"startTime","type":"string"},{"description":"Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.","format":"date-time","in":"query","name":"endTime","type":"string"},{"description":"period in minutes, group the data point by the specified period","format":"int32","in":"query","minimum":60,"name":"period","type":"integer"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An spectro cluster cost summary","schema":{"$ref":"#/definitions/v1SpectroClusterCostSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves the specified cluster cost summary","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/dashboard/spectroclusters/{uid}/overview":{"get":{"operationId":"v1SpectroClustersSummaryUidOverview","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An spectro cluster summary overview","schema":{"$ref":"#/definitions/v1SpectroClusterUidSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster summary overview","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/dashboard/spectroclusters/{uid}/resources/consumption":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1SpectroClustersUidResourcesConsumption","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ResourceConsumptionSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of resource consumption data items","schema":{"$ref":"#/definitions/v1ResourcesConsumption"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified spectro cluster resource consumption","tags":["v1"]}},"/v1/dashboard/spectroclusters/{uid}/workloads":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardSpectroClustersUidWorkloads","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster workloads","schema":{"$ref":"#/definitions/v1ClusterWorkload"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified cluster workloads","tags":["v1"]}},"/v1/dashboard/spectroclusters/{uid}/workloads/clusterrolebinding":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardSpectroClustersUidWorkloadsClusterRoleBinding","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster workload clusterrolebindings","schema":{"$ref":"#/definitions/v1ClusterWorkloadRoleBindings"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified cluster workload clusterrolebindings","tags":["v1"]}},"/v1/dashboard/spectroclusters/{uid}/workloads/cronjob":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardSpectroClustersUidWorkloadsCronJob","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster workload cronjobs","schema":{"$ref":"#/definitions/v1ClusterWorkloadCronJobs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified cluster workload cronjobs","tags":["v1"]}},"/v1/dashboard/spectroclusters/{uid}/workloads/daemonset":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardSpectroClustersUidWorkloadsDaemonSet","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster workload daemonsets","schema":{"$ref":"#/definitions/v1ClusterWorkloadDaemonSets"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified cluster workload daemonsets","tags":["v1"]}},"/v1/dashboard/spectroclusters/{uid}/workloads/deployment":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardSpectroClustersUidWorkloadsDeployment","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster workload deployments","schema":{"$ref":"#/definitions/v1ClusterWorkloadDeployments"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified cluster workload deployments","tags":["v1"]}},"/v1/dashboard/spectroclusters/{uid}/workloads/job":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardSpectroClustersUidWorkloadsJob","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster workload jobs","schema":{"$ref":"#/definitions/v1ClusterWorkloadJobs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified cluster workload jobs","tags":["v1"]}},"/v1/dashboard/spectroclusters/{uid}/workloads/namespace":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardSpectroClustersUidWorkloadsNamespace","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster workload namespaces","schema":{"$ref":"#/definitions/v1ClusterWorkloadNamespaces"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified cluster workload namespaces","tags":["v1"]}},"/v1/dashboard/spectroclusters/{uid}/workloads/pod":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardSpectroClustersUidWorkloadsPod","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster workload pods","schema":{"$ref":"#/definitions/v1ClusterWorkloadPods"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified cluster workload pods","tags":["v1"]}},"/v1/dashboard/spectroclusters/{uid}/workloads/rolebinding":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardSpectroClustersUidWorkloadsRoleBinding","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster workload rolebindings","schema":{"$ref":"#/definitions/v1ClusterWorkloadRoleBindings"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified cluster workload rolebindings","tags":["v1"]}},"/v1/dashboard/spectroclusters/{uid}/workloads/statefulset":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardSpectroClustersUidWorkloadsStatefulSet","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster workload statefulsets","schema":{"$ref":"#/definitions/v1ClusterWorkloadStatefulSets"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified cluster workload statefulsets","tags":["v1"]}},"/v1/dashboard/workspaces":{"get":{"operationId":"v1DashboardWorkspacesList","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of workspace","schema":{"$ref":"#/definitions/v1DashboardWorkspaces"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of workspace","tags":["v1"]}},"/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/clusterrolebinding":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardWorkspacesUidSpectroClustersWorkloadsClusterRoleBinding","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of clusters workload clusterrolebindings","schema":{"$ref":"#/definitions/v1WorkspaceClustersWorkloadRoleBindings"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified workspace clusters workload clusterrolebindings","tags":["v1"]}},"/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/cronjob":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardWorkspacesUidSpectroClustersWorkloadsCronJob","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of clusters workload cronjobs","schema":{"$ref":"#/definitions/v1WorkspaceClustersWorkloadCronJobs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified workspace clusters workload cronjobs","tags":["v1"]}},"/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/daemonset":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardWorkspacesUidSpectroClustersWorkloadsDaemonSet","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of clusters workload daemonsets","schema":{"$ref":"#/definitions/v1WorkspaceClustersWorkloadDaemonSets"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified workspace clusters workload daemonsets","tags":["v1"]}},"/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/deployment":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardWorkspacesUidSpectroClustersWorkloadsDeployment","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of clusters workload deployments","schema":{"$ref":"#/definitions/v1WorkspaceClustersWorkloadDeployments"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified workspace clusters workload deployments","tags":["v1"]}},"/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/job":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardWorkspacesUidSpectroClustersWorkloadsJob","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of clusters workload jobs","schema":{"$ref":"#/definitions/v1WorkspaceClustersWorkloadJobs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified workspace clusters workload jobs","tags":["v1"]}},"/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/namespace":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardWorkspacesUidSpectroClustersWorkloadsNamespace","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of clusters workload namespaces","schema":{"$ref":"#/definitions/v1WorkspaceClustersWorkloadNamespaces"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified workspace clusters workload namespaces","tags":["v1"]}},"/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/pod":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardWorkspacesUidSpectroClustersWorkloadsPod","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of clusters workload pods","schema":{"$ref":"#/definitions/v1WorkspaceClustersWorkloadPods"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified workspace clusters workload pods","tags":["v1"]}},"/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/rolebinding":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardWorkspacesUidSpectroClustersWorkloadsRoleBinding","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of clusters workload rolebindings","schema":{"$ref":"#/definitions/v1WorkspaceClustersWorkloadRoleBindings"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified workspace clusters workload rolebindings","tags":["v1"]}},"/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/statefulset":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1DashboardWorkspacesUidSpectroClustersWorkloadsStatefulSet","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceWorkloadsSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of clusters workload statefulsets","schema":{"$ref":"#/definitions/v1WorkspaceClustersWorkloadStatefulSets"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves specified workspace clusters workload statefulsets","tags":["v1"]}},"/v1/datasinks/cloudwatch":{"post":{"description":"Sync data to cloud watch","operationId":"V1DataSinksCloudWatchSink","parameters":[{"description":"Request payload for cloud watch config","in":"body","name":"dataSinkCloudWatchConfig","required":true,"schema":{"$ref":"#/definitions/v1.DataSinkCloudWatchConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"sync data to cloud watch","tags":["v1"]}},"/v1/edgehosts":{"post":{"operationId":"v1EdgeHostDevicesCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeHostDeviceEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create the edge host device","tags":["v1"]}},"/v1/edgehosts/metadata":{"get":{"operationId":"v1EdgeHostsMetadataQuickFilterGet","parameters":[{"enum":["libvirt","edge-native","vsphere"],"in":"query","name":"type","type":"string"},{"enum":["unusedEdgeHosts"],"in":"query","name":"quickFilter","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of edge host metadata","schema":{"$ref":"#/definitions/v1EdgeHostsMeta"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of edge hosts metadata matching the filter condition","tags":["v1"]}},"/v1/edgehosts/register":{"post":{"operationId":"v1EdgeHostDevicesRegister","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeHostDevice"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1EdgeHostDevice"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Registers the edge host device","tags":["v1"]}},"/v1/edgehosts/tokens":{"get":{"operationId":"v1EdgeTokensList","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of edge tokens","schema":{"$ref":"#/definitions/v1EdgeTokens"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of edge tokens","tags":["v1"]},"post":{"operationId":"v1EdgeTokensCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeTokenEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create the edge token","tags":["v1"]}},"/v1/edgehosts/tokens/{uid}":{"delete":{"operationId":"v1EdgeTokensUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified edge token","tags":["v1"]},"get":{"operationId":"v1EdgeTokensUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1EdgeToken"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified edge token","tags":["v1"]},"parameters":[{"description":"Edge token uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1EdgeTokensUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeTokenUpdate"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified edge token","tags":["v1"]}},"/v1/edgehosts/tokens/{uid}/state":{"parameters":[{"description":"Edge token uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1EdgeTokensUidState","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeTokenActiveState"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Revoke or re-activate the edge token access","tags":["v1"]}},"/v1/edgehosts/{uid}":{"delete":{"operationId":"v1EdgeHostDevicesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified edge host device","tags":["v1"]},"get":{"operationId":"v1EdgeHostDevicesUidGet","parameters":[{"default":false,"description":"resolve pack values if set to true","in":"query","name":"resolvePackValues","type":"boolean"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1EdgeHostDevice"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified edge host device","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1EdgeHostDevicesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeHostDevice"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified edge host device","tags":["v1"]}},"/v1/edgehosts/{uid}/cluster/associate":{"delete":{"operationId":"v1EdgeHostDevicesUidClusterDeassociate","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deassociate the clusters to the edge host","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1EdgeHostDevicesUidClusterAssociate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeHostClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Associate the clusters to the edge host","tags":["v1"]}},"/v1/edgehosts/{uid}/health":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1EdgeHostDevicesHealthUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeHostHealth"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the edge host health","tags":["v1"]}},"/v1/edgehosts/{uid}/hostCheckSum":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1EdgeHostDeviceHostCheckSumUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeHostDeviceHostCheckSum"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the specified edge host device host check sum","tags":["v1"]}},"/v1/edgehosts/{uid}/hostPairingKey":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1EdgeHostDeviceHostPairingKeyUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeHostDeviceHostPairingKey"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the specified edge host device host pairing key","tags":["v1"]}},"/v1/edgehosts/{uid}/meta":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1EdgeHostDevicesUidMetaUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeHostDeviceMetaUpdateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified edge host device meta","tags":["v1"]}},"/v1/edgehosts/{uid}/pack/manifests/{manifestUid}":{"get":{"operationId":"v1EdgeHostDevicesUidPackManifestsUidGet","parameters":[{"description":"edge host uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"manifest uid which is part of the pack ref","in":"path","name":"manifestUid","required":true,"type":"string"},{"default":false,"description":"resolve pack manifest values if set to true","in":"query","name":"resolveManifestValues","type":"boolean"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Pack manifest content","schema":{"$ref":"#/definitions/v1Manifest"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified edge host's manifest","tags":["v1"]}},"/v1/edgehosts/{uid}/packs/status":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1EdgeHostDevicesUidPacksStatusPatch","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterPacksStatusEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Patch update specified edge host's packs status","tags":["v1"]}},"/v1/edgehosts/{uid}/profiles":{"get":{"operationId":"v1EdgeHostDevicesUidProfilesGet","parameters":[{"description":"includes pack meta such as schema, presets","in":"query","name":"includePackMeta","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1SpectroClusterProfileList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the associated profiles of a specified edge host device","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1EdgeHostDevicesUidProfilesUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterProfiles"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Associate cluster profiles to the specified edge host device","tags":["v1"]}},"/v1/edgehosts/{uid}/reset":{"parameters":[{"description":"Edge host uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"V1EdgeHostsUidReset","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Reset the cluster through edge host","tags":["v1"]}},"/v1/edgehosts/{uid}/spc/download":{"get":{"operationId":"v1EdgeHostDevicesUidSpcDownload","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"download spc archive file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Download the specified edge host device spc","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/edgehosts/{uid}/vsphere/properties":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1EdgeHostDevicesUidVspherePropertiesUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EdgeHostVsphereCloudProperties"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified edge host device vsphere properties","tags":["v1"]}},"/v1/events/components":{"get":{"description":"Returns a paginated list of component events based on request parameters","operationId":"v1EventsComponentsList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of component events items","schema":{"$ref":"#/definitions/v1Events"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns a paginated list of component events based on request parameters","tags":["v1"]},"post":{"description":"Creates a component event","operationId":"v1EventsComponentsCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Event"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a component event","tags":["v1"]}},"/v1/events/components/bulk":{"post":{"description":"Creates the component events in bulk","operationId":"v1EventsComponentsCreateBulk","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1BulkEvents"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","schema":{"$ref":"#/definitions/v1Uids"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates the component events in bulk","tags":["v1"]}},"/v1/events/components/{objectKind}/{objectUid}":{"delete":{"operationId":"v1EventsComponentsObjTypeUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete all the components events for the specified related object","tags":["v1"]},"get":{"description":"Returns a list of components events for the specified related object","operationId":"v1EventsComponentsObjTypeUidList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of component event items","schema":{"$ref":"#/definitions/v1Events"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns a list of components events for the specified related object","tags":["v1"]},"parameters":[{"description":"Describes the related object uid for which events has to be fetched","enum":["spectrocluster","edgehost"],"in":"path","name":"objectKind","required":true,"type":"string"},{"description":"Describes the related object kind for which events has to be fetched","in":"path","name":"objectUid","required":true,"type":"string"}]},"/v1/filters":{"get":{"operationId":"v1FiltersList","parameters":[{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of filters","schema":{"$ref":"#/definitions/v1FiltersSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns a list of Filters","tags":["v1"]}},"/v1/filters/metadata":{"get":{"operationId":"v1FiltersMetadata","parameters":[{"description":"filterType can be - [tag, meta, resource]","in":"query","name":"filterType","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of filters","schema":{"$ref":"#/definitions/v1FiltersMetadata"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns a list of Filters metadata","tags":["v1"]}},"/v1/filters/tag":{"post":{"operationId":"v1TagFiltersCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TagFilter"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a Tag filter","tags":["v1"]}},"/v1/filters/tag/{uid}":{"delete":{"operationId":"v1TagFilterUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete the specified Filter object","tags":["v1"]},"get":{"operationId":"v1TagFilterUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"A Filter object","schema":{"$ref":"#/definitions/v1TagFilterSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Filter object","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1TagFilterUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TagFilter"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates a Tag filter","tags":["v1"]}},"/v1/metrics/{resourceKind}/values":{"get":{"description":"Returns all the metrics for a given resource kind","operationId":"v1MetricsList","parameters":[{"enum":["pod","namespace","spectrocluster","machine","project"],"in":"path","name":"resourceKind","required":true,"type":"string"},{"default":"all","in":"query","name":"metricKind","type":"string"},{"description":"Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.","format":"date-time","in":"query","name":"startTime","type":"string"},{"description":"Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.","format":"date-time","in":"query","name":"endTime","type":"string"},{"default":1,"format":"int32","in":"query","name":"period","type":"integer"},{"default":false,"description":"includeMasterMachines in boolean, group the data point by including master nodes if set to true","in":"query","name":"includeMasterMachines","type":"boolean"},{"default":false,"description":"if true then api returns only aggregation values, else api returns all data points by default","in":"query","name":"discrete","type":"boolean"},{"in":"query","name":"spectroClusterUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of metric items","schema":{"$ref":"#/definitions/v1MetricTimeSeriesList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves the list of metrics for a specified resource kind","tags":["v1"]}},"/v1/metrics/{resourceKind}/{resourceUid}/values":{"delete":{"operationId":"v1MetricsUidDelete","parameters":[{"enum":["pod","namespace","spectrocluster","machine","project"],"in":"path","name":"resourceKind","required":true,"type":"string"},{"in":"path","name":"resourceUid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the metrics of the specified resource","tags":["v1"]},"get":{"operationId":"v1MetricsUidList","parameters":[{"enum":["pod","namespace","spectrocluster","machine","project"],"in":"path","name":"resourceKind","required":true,"type":"string"},{"in":"path","name":"resourceUid","required":true,"type":"string"},{"default":"all","description":"multiple metric kinds can be provided with comma separated","in":"query","name":"metricKind","type":"string"},{"description":"Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.","format":"date-time","in":"query","name":"startTime","type":"string"},{"description":"Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.","format":"date-time","in":"query","name":"endTime","type":"string"},{"default":1,"description":"period in minutes, group the data point by the specified period","format":"int32","in":"query","name":"period","type":"integer"},{"default":false,"description":"includeMasterMachines in boolean, group the data point by including master nodes if set to true","in":"query","name":"includeMasterMachines","type":"boolean"},{"default":false,"description":"if true then api returns only aggregation values, else api returns all data points by default","in":"query","name":"discrete","type":"boolean"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of metric items","schema":{"$ref":"#/definitions/v1MetricTimeSeries"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the metrics for a specified resource uid","tags":["v1"]}},"/v1/notifications/":{"get":{"description":"Returns a paginated list of notifications based on request parameters","operationId":"v1NotificationsList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"}],"responses":{"200":{"description":"An array of notification items","schema":{"$ref":"#/definitions/v1Notifications"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns a paginated list of notifications based on request parameters","tags":["v1"]}},"/v1/notifications/events":{"post":{"description":"Creates a notification event","operationId":"v1NotificationsEventCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1NotificationEvent"}}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a notification event","tags":["v1"]}},"/v1/notifications/{objectKind}/{objectUid}":{"get":{"description":"Returns a list of notifications for the specified related object","operationId":"v1NotificationsObjTypeUidList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"}],"responses":{"200":{"description":"An array of component event items","schema":{"$ref":"#/definitions/v1Notifications"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns a list of notifications for the specified related object","tags":["v1"]},"parameters":[{"description":"Describes the related object kind for which notifications have to be fetched","enum":["spectrocluster","clusterprofile","appdeployment"],"in":"path","name":"objectKind","required":true,"type":"string"},{"description":"Describes the related object uid for which notifications have to be fetched","in":"path","name":"objectUid","required":true,"type":"string"},{"description":"Describes a way to fetch \"done\" notifications","in":"query","name":"isDone","type":"string"}]},"/v1/notifications/{uid}/ack":{"parameters":[{"description":"Describes acknowledging notification uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"description":"Updates the specified notification for the acknowledgment","operationId":"v1NotificationsUidAck","responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified notification for the acknowledgment","tags":["v1"]}},"/v1/notifications/{uid}/done":{"parameters":[{"description":"Describes notification uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"description":"Updates the specified notification action as done","operationId":"v1NotificationsUidDone","responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified notification action as done","tags":["v1"]}},"/v1/overlords":{"get":{"operationId":"v1OverlordsList","parameters":[{"in":"query","name":"name","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1Overlords"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of overlords owned by the tenant","tags":["v1"]}},"/v1/overlords/maas/manifest":{"get":{"operationId":"V1OverlordsMaasManifest","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OverlordManifest"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the manifests required for the private gateway installation","tags":["v1"]},"parameters":[{"in":"query","name":"pairingCode","required":true,"type":"string"}]},"/v1/overlords/maas/{uid}/account":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1OverlordsUidMaasAccountCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OverlordMaasAccountCreate"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"create the maas cloudaccount for the private gateway","tags":["v1"]},"put":{"operationId":"v1OverlordsUidMaasAccountUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OverlordMaasAccountEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"update the maas cloudaccount for the private gateway","tags":["v1"]}},"/v1/overlords/maas/{uid}/account/validate":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1OverlordsUidMaasAccountValidate","parameters":[{"in":"body","name":"body","schema":{"properties":{"account":{"$ref":"#/definitions/v1MaasCloudAccount"}}}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"validate the maas cloudaccount for the private gateway","tags":["v1"]}},"/v1/overlords/maas/{uid}/cloudconfig":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"V1OverlordsUidMaasCloudConfigCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OverlordMaasCloudConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"create the maas cloud config for the private gateway","tags":["v1"]},"put":{"operationId":"V1OverlordsUidMaasCloudConfigUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OverlordMaasCloudConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"update the maas cloud config for the private gateway","tags":["v1"]}},"/v1/overlords/maas/{uid}/clusterprofile":{"get":{"operationId":"v1OverlordsUidMaasClusterProfile","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterProfile"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified maas private gateway cluster profile","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/overlords/migrate":{"post":{"operationId":"V1OverlordsMigrate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OverlordMigrateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"migrate all the clusters from source overlord to target overlord","tags":["v1"]}},"/v1/overlords/openstack/manifest":{"get":{"operationId":"v1OverlordsOpenStackManifest","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OverlordManifest"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the manifests required for the private gateway installation","tags":["v1"]},"parameters":[{"in":"query","name":"pairingCode","required":true,"type":"string"}]},"/v1/overlords/openstack/{uid}/account":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1OverlordsUidOpenStackAccountCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OverlordOpenStackAccountCreate"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"create the OpenStack cloudaccount for the private gateway","tags":["v1"]},"put":{"operationId":"v1OverlordsUidOpenStackAccountUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OverlordOpenStackAccountEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"update the OpenStack cloudaccount for the private gateway","tags":["v1"]}},"/v1/overlords/openstack/{uid}/account/validate":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1OverlordsUidOpenStackAccountValidate","parameters":[{"in":"body","name":"body","schema":{"properties":{"account":{"$ref":"#/definitions/v1OpenStackCloudAccount"}}}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"validate the OpenStack cloudaccount for the private gateway","tags":["v1"]}},"/v1/overlords/openstack/{uid}/cloudconfig":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1OverlordsUidOpenStackCloudConfigCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OverlordOpenStackCloudConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"create the OpenStack cloud config for the private gateway","tags":["v1"]},"put":{"operationId":"v1OverlordsUidOpenStackCloudConfigUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OverlordOpenStackCloudConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"update the OpenStack cloud config for the private gateway","tags":["v1"]}},"/v1/overlords/openstack/{uid}/clusterprofile":{"get":{"operationId":"v1OverlordsUidOpenStackClusterProfile","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterProfile"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified OpenStack private gateway cluster profile","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/overlords/pairing/code":{"get":{"operationId":"v1OverlordsPairingCode","parameters":[{"enum":["vsphere","openstack","maas"],"in":"query","name":"cloudType","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1PairingCode"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the pairing code for the private gateway","tags":["v1"]}},"/v1/overlords/vsphere/manifest":{"get":{"operationId":"v1OverlordsVsphereManifest","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OverlordManifest"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the manifests required for the private gateway installation","tags":["v1"]},"parameters":[{"in":"query","name":"pairingCode","required":true,"type":"string"}]},"/v1/overlords/vsphere/ova":{"get":{"operationId":"v1OverlordsVsphereOvaGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OverloadVsphereOva"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns overlord's ova information","tags":["v1"]}},"/v1/overlords/vsphere/{uid}/account":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1OverlordsUidVsphereAccountCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OverlordVsphereAccountCreate"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"create the vSphere cloudaccount for the private gateway","tags":["v1"]},"put":{"operationId":"v1OverlordsUidVsphereAccountUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OverlordVsphereAccountEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"update the vSphere cloudaccount for the private gateway","tags":["v1"]}},"/v1/overlords/vsphere/{uid}/account/validate":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1OverlordsUidVsphereAccountValidate","parameters":[{"in":"body","name":"body","schema":{"properties":{"account":{"$ref":"#/definitions/v1VsphereCloudAccount"}}}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"validate the vSphere cloudaccount for the private gateway","tags":["v1"]}},"/v1/overlords/vsphere/{uid}/cloudconfig":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1OverlordsUidVsphereCloudConfigCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OverlordVsphereCloudConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"create the vSphere cloud config for the private gateway","tags":["v1"]},"put":{"operationId":"v1OverlordsUidVsphereCloudConfigUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OverlordVsphereCloudConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"update the vSphere cloud config for the private gateway","tags":["v1"]}},"/v1/overlords/vsphere/{uid}/clusterprofile":{"get":{"operationId":"v1OverlordsUidVsphereClusterProfile","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterProfile"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified vsphere private gateway cluster profile","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/overlords/vsphere/{uid}/pools":{"get":{"operationId":"v1OverlordsUidPoolsList","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1IpPools"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of IP Pools for the specified private gateway","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1OverlordsUidPoolCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1IpPoolInputEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an IP pool defintion for the sepcified private gateway","tags":["v1"]}},"/v1/overlords/vsphere/{uid}/pools/{poolUid}":{"delete":{"operationId":"v1OverlordsUidPoolDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the private gateways's specified IP Pool data","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"path","name":"poolUid","required":true,"type":"string"}],"put":{"operationId":"v1OverlordsUidPoolUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1IpPoolInputEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the private gateways's specified IP Pool data","tags":["v1"]}},"/v1/overlords/vsphere/{uid}/properties/computecluster/resources":{"get":{"operationId":"v1OverlordsUidVsphereComputeclusterRes","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1VsphereComputeClusterResources"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves the vSphere computecluster resources for the specified private gateway's account","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"query","name":"datacenter","required":true,"type":"string"},{"in":"query","name":"computecluster","required":true,"type":"string"}]},"/v1/overlords/vsphere/{uid}/properties/datacenters":{"get":{"operationId":"v1OverlordsUidVsphereDatacenters","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1VsphereDatacenters"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves the vSphere datacenters \u0026 datacluster for the specified private gateway's account","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/overlords/{uid}":{"delete":{"operationId":"v1OverlordsUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1DeletedMsg"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"delete the private gateway","tags":["v1"]},"get":{"operationId":"v1OverlordsUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1Overlord"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified private gateway's for the given uid","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/overlords/{uid}/metadata":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1OverlordsUidMetadataUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ObjectMetaInputEntitySchema"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"update the private gateway's metadata","tags":["v1"]}},"/v1/overlords/{uid}/reset":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1OverlordsUidReset","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1UpdatedMsg"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"reset the private gateway by disaaociating the private gateway's resources","tags":["v1"]}},"/v1/packs":{"delete":{"operationId":"v1PacksSummaryDelete","parameters":[{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1DeleteMeta"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the packs","tags":["v1"]},"get":{"operationId":"v1PacksSummaryList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of pack summary items","schema":{"$ref":"#/definitions/v1PackSummaries"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of packs","tags":["v1"]}},"/v1/packs/search":{"post":{"operationId":"v1PacksSearch","parameters":[{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1PacksFilterSpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of pack summary items","schema":{"$ref":"#/definitions/v1PackMetadataList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of packs based on filter","tags":["v1"]}},"/v1/packs/{packName}/registries/{registryUid}":{"get":{"operationId":"v1PacksNameRegistryUidList","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1PackTagEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of packs","tags":["v1"]},"parameters":[{"description":"Pack registry uid","in":"path","name":"registryUid","required":true,"type":"string"},{"description":"Pack name","in":"path","name":"packName","required":true,"type":"string"},{"default":"all","description":"Pack cloud type","in":"query","name":"cloudType","type":"string"},{"description":"Pack layer","in":"query","name":"layer","type":"string"},{"description":"Comma seperated pack states. Example values are \"deprecated\" \"deprecated,disabled\". If states is not specified or empty then by default API will return all packs except \"disabled\" packs","in":"query","name":"states","type":"string"}]},"/v1/packs/{packUid}/logo":{"get":{"operationId":"v1PacksPackUidLogo","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["image/png","image/gif","image/jpeg"],"responses":{"200":{"description":"OK","headers":{"Cache-Control":{"description":"Cache control directive for the response","type":"string"},"Expires":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the logo for a specified pack","tags":["v1"]},"parameters":[{"description":"Pack uid","in":"path","name":"packUid","required":true,"type":"string"}]},"/v1/packs/{uid}":{"get":{"operationId":"v1PacksUid","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"A pack for the specified uid","schema":{"$ref":"#/definitions/v1PackTagEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified pack","tags":["v1"]},"parameters":[{"description":"Pack uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/packs/{uid}/readme":{"get":{"operationId":"v1PacksUidReadme","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Readme describes the documentation of the specified pack","schema":{"$ref":"#/definitions/v1PackReadme"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the readme of a specified pack","tags":["v1"]},"parameters":[{"description":"Pack uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/pcg/selfHosted":{"post":{"operationId":"v1PcgSelfHosted","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1PcgSelfHostedParams"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1PcgServiceKubectlCommands"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the private gateway manifest link","tags":["v1"]}},"/v1/pcg/{uid}/register":{"post":{"operationId":"v1PcgUidRegister","parameters":[{"in":"body","name":"pairingCode","schema":{"$ref":"#/definitions/v1PairingCode"}},{"in":"path","name":"uid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Registers the pcg","tags":["v1"]}},"/v1/pcg/{uid}/services/ally/manifest":{"get":{"operationId":"v1PcgUidAllyManifestGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"download file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the pcg ally manifest","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/pcg/{uid}/services/jet/manifest":{"get":{"operationId":"v1PcgUidJetManifestGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"download file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the pcg jet manifest","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/permissions":{"get":{"operationId":"v1PermissionsList","parameters":[{"enum":["system","tenant","project","resource"],"in":"query","name":"scope","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of permissions","schema":{"$ref":"#/definitions/v1Permissions"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of permissions","tags":["v1"]}},"/v1/projects":{"get":{"description":"Deprecated: Use POST /v1/dashboard/projects","operationId":"v1ProjectsList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of projects","schema":{"$ref":"#/definitions/v1Projects"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of projects","tags":["v1"]},"post":{"operationId":"v1ProjectsCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ProjectEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a project","tags":["v1"]}},"/v1/projects/alerts":{"get":{"operationId":"v1ProjectsAlerts","responses":{"200":{"description":"An array of alert components","schema":{"$ref":"#/definitions/v1ProjectAlertComponents"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of supported alerts for a project","tags":["v1"]}},"/v1/projects/{uid}":{"delete":{"operationId":"v1ProjectsUidDelete","parameters":[{"in":"query","name":"cleanupProjectResources","type":"boolean"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ProjectCleanup"}}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified project","tags":["v1"]},"get":{"operationId":"v1ProjectsUidGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Project"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified project","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1ProjectsUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ProjectEntity"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified project","tags":["v1"]}},"/v1/projects/{uid}/alerts/{component}":{"delete":{"operationId":"v1ProjectsUidAlertDelete","responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified alert to the specified project","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"path","name":"component","required":true,"type":"string"}],"post":{"operationId":"v1ProjectsUidAlertCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Channel"}}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create the specified alert to the specified project","tags":["v1"]},"put":{"operationId":"v1ProjectsUidAlertUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AlertEntity"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Upsert the specified alert to the specified project","tags":["v1"]}},"/v1/projects/{uid}/alerts/{component}/{alertUid}":{"delete":{"operationId":"v1ProjectsUidAlertsUidDelete","responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified alert of the specified project","tags":["v1"]},"get":{"operationId":"v1ProjectsUidAlertsUidGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Channel"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the specified alert of the specified project","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"path","name":"component","required":true,"type":"string"},{"in":"path","name":"alertUid","required":true,"type":"string"}],"put":{"operationId":"v1ProjectsUidAlertsUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Channel"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the specified alert of the specified project","tags":["v1"]}},"/v1/projects/{uid}/macros":{"delete":{"operationId":"v1ProjectsUidMacrosDeleteByMacroName","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Macros"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete the macros for the specified project by macro name","tags":["v1"]},"get":{"operationId":"v1ProjectsUidMacrosList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Macros"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"List the macros of the specified project","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1ProjectsUidMacrosUpdateByMacroName","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Macros"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the macros for the specified project by macro name","tags":["v1"]},"post":{"operationId":"v1ProjectsUidMacrosCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Macros"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create or add new macros for the specified project","tags":["v1"]},"put":{"operationId":"v1ProjectsUidMacrosUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Macros"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the macros of the specified project","tags":["v1"]}},"/v1/projects/{uid}/meta":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1ProjectsUidMetaUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ObjectMeta"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the metadata of the specified project","tags":["v1"]}},"/v1/projects/{uid}/preferences/clusterSettings":{"get":{"operationId":"v1ProjectClusterSettingsGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1ProjectClusterSettings"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get project cluster settings","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/projects/{uid}/preferences/clusterSettings/nodesAutoRemediationSetting":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1ProjectClustersNodesAutoRemediationSettingUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1NodesAutoRemediationSettings"}}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update project clusters nodes auto remediation setting","tags":["v1"]}},"/v1/projects/{uid}/teams":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1ProjectsUidTeamsUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ProjectTeamsEntity"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the teams association to the specified project","tags":["v1"]}},"/v1/projects/{uid}/users":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1ProjectsUidUsersUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ProjectUsersEntity"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the users association to the specified project","tags":["v1"]}},"/v1/projects/{uid}/validate":{"delete":{"operationId":"v1ProjectsUidValidate","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1ProjectActiveResources"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validate and returns active resource of project before delete","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/registries/helm":{"get":{"operationId":"v1RegistriesHelmList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of registry items","schema":{"$ref":"#/definitions/v1HelmRegistries"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Helm registries","tags":["v1"]},"parameters":[{"default":"all","enum":["system","tenant","all"],"in":"query","name":"scope","type":"string"}],"post":{"operationId":"v1RegistriesHelmCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1HelmRegistryEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a helm registry","tags":["v1"]}},"/v1/registries/helm/summary":{"get":{"operationId":"v1RegistriesHelmSummaryList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of registry items","schema":{"$ref":"#/definitions/v1HelmRegistriesSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of helm registries as summary","tags":["v1"]},"parameters":[{"default":"all","enum":["system","tenant","all"],"in":"query","name":"scope","type":"string"}]},"/v1/registries/helm/validate":{"post":{"description":"Returns no contents if helm registry is valid else error.","operationId":"V1RegistriesHelmValidate","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1HelmRegistrySpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Check if helm registry is valid","tags":["v1"]}},"/v1/registries/helm/{uid}":{"delete":{"operationId":"v1RegistriesHelmUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified helm registry","tags":["v1"]},"get":{"operationId":"v1RegistriesHelmUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1HelmRegistry"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Helm registry","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1RegistriesHelmUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1HelmRegistry"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified helm registry","tags":["v1"]}},"/v1/registries/helm/{uid}/sync":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"default":false,"in":"query","name":"forceSync","type":"boolean"}],"post":{"description":"Sync all the helm charts from the registry","operationId":"v1RegistriesHelmUidSync","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"202":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Sync Helm registry","tags":["v1"]}},"/v1/registries/helm/{uid}/sync/status":{"get":{"description":"Get the sync status for the specified helm registry","operationId":"v1RegistriesHelmUidSyncStatus","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Helm registry sync status","schema":{"$ref":"#/definitions/v1RegistrySyncStatus"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get helm registry sync status","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/registries/metadata":{"get":{"operationId":"v1RegistriesMetadata","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of registry metadata items","schema":{"$ref":"#/definitions/v1RegistriesMetadata"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of registries metadata","tags":["v1"]},"parameters":[{"default":"all","enum":["system","tenant","all"],"in":"query","name":"scope","type":"string"}]},"/v1/registries/oci/basic":{"post":{"operationId":"v1BasicOciRegistriesCreate","parameters":[{"default":false,"in":"query","name":"skipPackSync","type":"boolean"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1BasicOciRegistry"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a basic oci registry","tags":["v1"]}},"/v1/registries/oci/basic/validate":{"post":{"description":"Returns no contents if oci registry is valid else error.","operationId":"v1BasicOciRegistriesValidate","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1BasicOciRegistrySpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Check if oci registry is valid","tags":["v1"]}},"/v1/registries/oci/ecr":{"post":{"operationId":"v1EcrRegistriesCreate","parameters":[{"default":false,"in":"query","name":"skipPackSync","type":"boolean"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EcrRegistry"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a ecr registry","tags":["v1"]}},"/v1/registries/oci/ecr/validate":{"post":{"description":"Returns no contents if ecr registry is valid else error.","operationId":"v1EcrRegistriesValidate","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1EcrRegistrySpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Check if ecr registry is valid","tags":["v1"]}},"/v1/registries/oci/image":{"get":{"operationId":"v1OciImageRegistryGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1OciImageRegistry"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a image registry","tags":["v1"]}},"/v1/registries/oci/summary":{"get":{"operationId":"v1OciRegistriesSummary","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of oci registry items","schema":{"$ref":"#/definitions/v1OciRegistries"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a oci registries summary","tags":["v1"]}},"/v1/registries/oci/{uid}":{"get":{"operationId":"v1OciRegistriesGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1OciRegistryEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the information of specified oci registry","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"query","name":"clusterUid","type":"string"}]},"/v1/registries/oci/{uid}/basic":{"delete":{"operationId":"v1BasicOciRegistriesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified basic oci registry","tags":["v1"]},"get":{"operationId":"v1BasicOciRegistriesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1BasicOciRegistry"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the basic oci registry","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1BasicOciRegistriesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1BasicOciRegistry"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified basic oci registry","tags":["v1"]}},"/v1/registries/oci/{uid}/basic/sync":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"default":false,"in":"query","name":"forceSync","type":"boolean"}],"post":{"description":"Sync all the content from the oci registry","operationId":"v1BasicOciRegistriesUidSync","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"202":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Sync oci registry","tags":["v1"]}},"/v1/registries/oci/{uid}/basic/sync/status":{"get":{"description":"Get sync status for the oci specified registry","operationId":"v1BasicOciRegistriesUidSyncStatus","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Oci registry sync status","schema":{"$ref":"#/definitions/v1RegistrySyncStatus"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get oci registry sync status","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/registries/oci/{uid}/ecr":{"delete":{"operationId":"v1EcrRegistriesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified ecr registry","tags":["v1"]},"get":{"operationId":"v1EcrRegistriesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1EcrRegistry"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified ecr registry","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1EcrRegistriesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1EcrRegistry"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified ecr registry","tags":["v1"]}},"/v1/registries/oci/{uid}/ecr/sync":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"default":false,"in":"query","name":"forceSync","type":"boolean"}],"post":{"description":"Sync all the content from the ecr registry","operationId":"v1EcrRegistriesUidSync","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"202":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Sync ecr registry","tags":["v1"]}},"/v1/registries/oci/{uid}/ecr/sync/status":{"get":{"description":"Get sync status for the ecr specified registry","operationId":"v1EcrRegistriesUidSyncStatus","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Ecr registry sync status","schema":{"$ref":"#/definitions/v1RegistrySyncStatus"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get ecr registry sync status","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/registries/pack":{"get":{"operationId":"v1RegistriesPackList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of registry items","schema":{"$ref":"#/definitions/v1PackRegistries"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of Pack registries","tags":["v1"]},"parameters":[{"default":"all","enum":["system","tenant","all"],"in":"query","name":"scope","type":"string"}],"post":{"operationId":"v1RegistriesPackCreate","parameters":[{"default":false,"in":"query","name":"skipPackSync","type":"boolean"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1PackRegistry"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a pack registry","tags":["v1"]}},"/v1/registries/pack/summary":{"get":{"operationId":"v1RegistriesPackSummaryList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of registry items","schema":{"$ref":"#/definitions/v1PackRegistriesSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of pack registries as summary","tags":["v1"]},"parameters":[{"default":"all","enum":["system","tenant","all"],"in":"query","name":"scope","type":"string"}]},"/v1/registries/pack/validate":{"post":{"description":"Returns no contents if pack registry is valid else error.","operationId":"V1RegistriesPackValidate","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1PackRegistrySpec"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Check if pack registry is valid","tags":["v1"]}},"/v1/registries/pack/{uid}":{"delete":{"operationId":"v1RegistriesPackUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified pack registry","tags":["v1"]},"get":{"operationId":"v1RegistriesPackUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1PackRegistry"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Pack registry","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1RegistriesPackUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1PackRegistry"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified pack registry","tags":["v1"]}},"/v1/registries/pack/{uid}/sync":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"default":false,"in":"query","name":"forceSync","type":"boolean"}],"post":{"description":"Sync all the packs from the registry","operationId":"v1RegistriesPackUidSync","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"202":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Sync Pack registry","tags":["v1"]}},"/v1/registries/pack/{uid}/sync/status":{"get":{"description":"Get sync status for the pack specified registry","operationId":"v1RegistriesPackUidSyncStatus","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Pack registry sync status","schema":{"$ref":"#/definitions/v1RegistrySyncStatus"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get pack registry sync status","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/registries/{registryName}/config":{"get":{"operationId":"v1RegistriesNameConfigGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1RegistryConfigEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified system scope registry configuration","tags":["v1"]},"parameters":[{"in":"path","name":"registryName","required":true,"type":"string"}]},"/v1/registries/{uid}":{"delete":{"operationId":"v1RegistriesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified registry","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/roles":{"get":{"operationId":"v1RolesList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Roles"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of roles","tags":["v1"]},"post":{"operationId":"v1RolesCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Role"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a role with specified permissions","tags":["v1"]}},"/v1/roles/{uid}":{"delete":{"operationId":"v1RolesUidDelete","responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified role","tags":["v1"]},"get":{"operationId":"v1RolesUidGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Role"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified role","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1RolesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Role"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified role","tags":["v1"]}},"/v1/roles/{uid}/clone":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1RolesClone","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1RoleClone"}}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Clone the role","tags":["v1"]}},"/v1/services/{serviceName}/version":{"get":{"operationId":"v1ServiceVersionGet","parameters":[{"description":"service name","enum":["ally","jet","palette","ambit","ally-lite","palette-lite","crony","tick","edge","lodge","level","edgeconfig","firth","stylus"],"in":"path","name":"serviceName","required":true,"type":"string"},{"description":"spectro cluster uid","in":"query","name":"clusterUid","type":"string"},{"description":"edge host uid","in":"query","name":"edgeHostUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ServiceVersion"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns a latest version for a given service name","tags":["v1"]}},"/v1/services/{serviceName}/versions/{version}/manifest":{"get":{"operationId":"v1ServiceManifestGet","parameters":[{"description":"service name","enum":["ally","jet","palette","ambit","ally-lite","palette-lite","crony","tick","edge","lodge","level","edgeconfig","firth","stylus"],"in":"path","name":"serviceName","required":true,"type":"string"},{"description":"service version","in":"path","name":"version","required":true,"type":"string"},{"description":"action type","enum":["apply","delete","resources"],"in":"query","name":"action","required":true,"type":"string"},{"description":"resource file name","in":"query","name":"resourceFilename","type":"string"},{"description":"spectro cluster uid","in":"query","name":"clusterUid","type":"string"},{"description":"edge host uid","in":"query","name":"edgeHostUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ServiceManifest"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns a service manifest for a given service name and version","tags":["v1"]}},"/v1/spectroclusters/agents/{messageKey}/notify":{"post":{"operationId":"V1SpectroClustersAgentsNotify","parameters":[{"in":"path","name":"messageKey","required":true,"type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClustersAgentsNotifyEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"tags":["v1"]}},"/v1/spectroclusters/aks":{"post":{"operationId":"v1SpectroClustersAksCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroAzureClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an AKS cluster","tags":["v1"]}},"/v1/spectroclusters/aks/rate":{"post":{"operationId":"v1SpectroClustersAksRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroAzureClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Aks Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get AKS cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/aks/validate":{"post":{"operationId":"v1SpectroClustersAksValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroAzureClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Aks Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates AKS cluster create operation","tags":["v1"]}},"/v1/spectroclusters/aws":{"post":{"operationId":"v1SpectroClustersAwsCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroAwsClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an AWS cluster","tags":["v1"]}},"/v1/spectroclusters/aws/import":{"post":{"operationId":"v1SpectroClustersAwsImport","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroAwsClusterImportEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Imports an AWS cluster","tags":["v1"]}},"/v1/spectroclusters/aws/rate":{"post":{"operationId":"v1SpectroClustersAwsRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroAwsClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Aws Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get AWS cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/aws/validate":{"post":{"operationId":"v1SpectroClustersAwsValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroAwsClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Aws Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates AWS cluster create operation","tags":["v1"]}},"/v1/spectroclusters/azure":{"post":{"operationId":"v1SpectroClustersAzureCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroAzureClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an Azure cluster","tags":["v1"]}},"/v1/spectroclusters/azure/import":{"post":{"operationId":"v1SpectroClustersAzureImport","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroAzureClusterImportEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Imports an Azure cluster","tags":["v1"]}},"/v1/spectroclusters/azure/rate":{"post":{"operationId":"v1SpectroClustersAzureRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroAzureClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Azure Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get Azure cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/azure/validate":{"post":{"operationId":"v1SpectroClustersAzureValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroAzureClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Azure Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates Azure cluster create operation","tags":["v1"]}},"/v1/spectroclusters/cloudTypes/{cloudType}":{"parameters":[{"description":"Cluster's cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"post":{"operationId":"v1SpectroClustersCustomCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroCustomClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a Custom cluster","tags":["v1"]}},"/v1/spectroclusters/cloudTypes/{cloudType}/validate":{"parameters":[{"description":"Cluster's cloud type","in":"path","name":"cloudType","required":true,"type":"string"}],"post":{"operationId":"v1SpectroClustersCustomValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroCustomClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Custom Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates Custom cluster create operation","tags":["v1"]}},"/v1/spectroclusters/config/edgeInstaller":{"get":{"operationId":"v1SpectroClustersConfigEdgeInstaller","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1ClusterEdgeInstallerConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Cluster configuration for the edge installer","tags":["v1"]}},"/v1/spectroclusters/coxedge":{"post":{"operationId":"v1SpectroClustersCoxEdgeCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroCoxEdgeClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a CoxEdge cluster","tags":["v1"]}},"/v1/spectroclusters/coxedge/rate":{"post":{"operationId":"v1SpectroClustersCoxEdgeRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroCoxEdgeClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Azure Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get Cox Edge cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/coxedge/validate":{"post":{"operationId":"v1SpectroClustersCoxEdgeValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroCoxEdgeClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Azure Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates Cox Edge cluster create operation","tags":["v1"]}},"/v1/spectroclusters/edge":{"post":{"operationId":"v1SpectroClustersEdgeCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroEdgeClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a Edge cluster","tags":["v1"]}},"/v1/spectroclusters/edge-native":{"post":{"operationId":"v1SpectroClustersEdgeNativeCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroEdgeNativeClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an EdgeNative cluster","tags":["v1"]}},"/v1/spectroclusters/edge-native/import":{"post":{"operationId":"v1SpectroClustersEdgeNativeImport","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroEdgeNativeClusterImportEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Imports an EdgeNative cluster","tags":["v1"]}},"/v1/spectroclusters/edge-native/rate":{"post":{"operationId":"v1SpectroClustersEdgeNativeRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroEdgeNativeClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"EdgeNative Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get edge-native cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/edge-native/validate":{"post":{"operationId":"v1SpectroClustersEdgeNativeValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroEdgeNativeClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"EdgeNative Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates edge-native cluster create operation","tags":["v1"]}},"/v1/spectroclusters/edge/import":{"post":{"operationId":"v1SpectroClustersEdgeImport","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroEdgeClusterImportEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Imports an Edge cluster","tags":["v1"]}},"/v1/spectroclusters/edge/rate":{"post":{"operationId":"v1SpectroClustersEdgeRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroEdgeClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Edge Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get edge cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/edge/validate":{"post":{"operationId":"v1SpectroClustersEdgeValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroEdgeClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"edge Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates edge cluster create operation","tags":["v1"]}},"/v1/spectroclusters/eks":{"post":{"operationId":"v1SpectroClustersEksCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroEksClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an EKS cluster","tags":["v1"]}},"/v1/spectroclusters/eks/rate":{"post":{"operationId":"v1SpectroClustersEksRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroEksClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Eks Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get EKS cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/eks/validate":{"post":{"operationId":"v1SpectroClustersEksValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroEksClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Eks Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates EKS cluster create operation","tags":["v1"]}},"/v1/spectroclusters/features/backup/locations/{uid}":{"get":{"operationId":"V1ClusterFeatureBackupLocationUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterRefs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the cluster object references based on locationUid","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"V1ClusterFeatureBackupLocationUidChange","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterBackupLocationType"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Change cluster backup location","tags":["v1"]}},"/v1/spectroclusters/features/logFetcher/{uid}/download":{"get":{"operationId":"v1ClusterFeatureLogFetcherLogDownload","parameters":[{"in":"query","name":"fileName","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"OK","headers":{"Content-Disposition":{"type":"string"},"Content-Type":{"type":"string"}},"schema":{"type":"file"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Download log fetcher logs for cluster by log fetcher uid","tags":["v1"]},"parameters":[{"description":"Cluster uid for which log is requested","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/features/logFetcher/{uid}/log":{"parameters":[{"description":"Cluster uid for which log is requested","in":"path","name":"uid","required":true,"type":"string"}],"post":{"consumes":["multipart/form-data"],"operationId":"v1ClusterFeatureLogFetcherLogUpdate","parameters":[{"description":"Log file by agent","in":"formData","name":"fileName","type":"file"},{"description":"Unique request Id","in":"query","name":"requestId","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update log fetcher logs by log fetcher uid","tags":["v1"]}},"/v1/spectroclusters/gcp":{"post":{"operationId":"v1SpectroClustersGcpCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroGcpClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a GCP cluster","tags":["v1"]}},"/v1/spectroclusters/gcp/import":{"post":{"operationId":"v1SpectroClustersGcpImport","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroGcpClusterImportEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Imports a GCP cluster","tags":["v1"]}},"/v1/spectroclusters/gcp/rate":{"post":{"operationId":"v1SpectroClustersGcpRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroGcpClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Gcp Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get GCP cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/gcp/validate":{"post":{"operationId":"v1SpectroClustersGcpValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroGcpClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Gcp Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates GCP cluster create operation","tags":["v1"]}},"/v1/spectroclusters/generic/import":{"post":{"description":"The machines information will be captured, whereas the cloud specific configuration info will not be retrieved","operationId":"v1SpectroClustersGenericImport","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroGenericClusterImportEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Imports a cluster of any cloud type in generic way","tags":["v1"]}},"/v1/spectroclusters/generic/rate":{"post":{"operationId":"v1SpectroClustersGenericRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroGenericClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Genric Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get generic cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/gke":{"post":{"operationId":"v1SpectroClustersGkeCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroGcpClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates an GKE cluster","tags":["v1"]}},"/v1/spectroclusters/gke/rate":{"post":{"operationId":"v1SpectroClustersGkeRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroGcpClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Gke Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get GKE cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/gke/validate":{"post":{"operationId":"v1SpectroClustersGkeValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroGcpClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Gke Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates GKE cluster create operation","tags":["v1"]}},"/v1/spectroclusters/libvirt":{"post":{"operationId":"v1SpectroClustersLibvirtCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroLibvirtClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a Libvirt cluster","tags":["v1"]}},"/v1/spectroclusters/libvirt/import":{"post":{"operationId":"v1SpectroClustersLibvirtImport","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroLibvirtClusterImportEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Imports a libvirt cluster","tags":["v1"]}},"/v1/spectroclusters/libvirt/rate":{"post":{"operationId":"v1SpectroClustersLibvirtRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroLibvirtClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Libvirt Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get libvirt cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/libvirt/validate":{"post":{"operationId":"v1SpectroClustersLibvirtValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroLibvirtClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Libvirt Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates libvirt cluster create operation","tags":["v1"]}},"/v1/spectroclusters/maas":{"post":{"operationId":"v1SpectroClustersMaasCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroMaasClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a MAAS cluster","tags":["v1"]}},"/v1/spectroclusters/maas/import":{"post":{"operationId":"v1SpectroClustersMaasImport","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroMaasClusterImportEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Imports a Maas cluster","tags":["v1"]}},"/v1/spectroclusters/maas/rate":{"post":{"operationId":"v1SpectroClustersMaasRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroMaasClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Maas Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get maas cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/maas/validate":{"post":{"operationId":"v1SpectroClustersMaasValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroMaasClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Maas Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates MAAS cluster create operation","tags":["v1"]}},"/v1/spectroclusters/openstack":{"post":{"operationId":"v1SpectroClustersOpenStackCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroOpenStackClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a OpenStack cluster","tags":["v1"]}},"/v1/spectroclusters/openstack/import":{"post":{"operationId":"v1SpectroClustersOpenStackImport","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroOpenStackClusterImportEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Imports an OpenStack cluster","tags":["v1"]}},"/v1/spectroclusters/openstack/rate":{"post":{"operationId":"v1SpectroClustersOpenStackRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroOpenStackClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Openstack Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get openstack cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/openstack/validate":{"post":{"operationId":"v1SpectroClustersOpenStackValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroOpenStackClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"vSphere Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates OpenStack cluster create operation","tags":["v1"]}},"/v1/spectroclusters/spc/download":{"post":{"operationId":"v1SpectroClustersSpcDownload","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterDefinitionEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"Cluster definition archive file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Downloads the cluster definition archive file","tags":["v1"]}},"/v1/spectroclusters/tke":{"post":{"operationId":"v1SpectroClustersTkeCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroTencentClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a Tke cluster","tags":["v1"]}},"/v1/spectroclusters/tke/rate":{"post":{"operationId":"v1SpectroClustersTkeRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroTencentClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Tke Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get TKE cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/tke/validate":{"post":{"operationId":"v1SpectroClustersTkeValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroTencentClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Tke Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates TKE cluster create operation","tags":["v1"]}},"/v1/spectroclusters/upgrade/settings":{"get":{"operationId":"v1SpectroClustersUpgradeSettingsGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1ClusterUpgradeSettingsEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get cluster settings by context","tags":["v1"]}},"/v1/spectroclusters/validate/name":{"get":{"operationId":"v1SpectroClustersValidateName","parameters":[{"description":"Cluster name","in":"query","name":"name","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates the cluster name","tags":["v1"]}},"/v1/spectroclusters/validate/packs":{"post":{"operationId":"v1SpectroClustersValidatePacks","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterPacksEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Cluster packs validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates spectro cluster packs","tags":["v1"]}},"/v1/spectroclusters/virtual":{"post":{"operationId":"v1SpectroClustersVirtualCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroVirtualClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a virtual cluster","tags":["v1"]}},"/v1/spectroclusters/virtual/packs/values":{"get":{"operationId":"v1VirtualClustersPacksValues","parameters":[{"default":"k3s","description":"Kubernetes distribution type","enum":["k3s","cncf_k8s"],"in":"query","name":"kubernetesDistroType","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Successful response","schema":{"$ref":"#/definitions/v1ClusterVirtualPacksValues"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the cluster pack values yaml","tags":["v1"]}},"/v1/spectroclusters/virtual/validate":{"post":{"operationId":"v1SpectroClustersVirtualValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroVirtualClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Virtual Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates virtual cluster create operation","tags":["v1"]}},"/v1/spectroclusters/vsphere":{"post":{"operationId":"v1SpectroClustersVsphereCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroVsphereClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a vSphere cluster","tags":["v1"]}},"/v1/spectroclusters/vsphere/import":{"post":{"operationId":"v1SpectroClustersVsphereImport","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroVsphereClusterImportEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Imports a vSphere cluster","tags":["v1"]}},"/v1/spectroclusters/vsphere/rate":{"post":{"operationId":"v1SpectroClustersVsphereRate","parameters":[{"default":"hourly","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroVsphereClusterRateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Vsphere Cluster estimated rate response","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get vSphere cluster estimated rate information","tags":["v1"]}},"/v1/spectroclusters/vsphere/validate":{"post":{"operationId":"v1SpectroClustersVsphereValidate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroVsphereClusterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"vSphere Cluster validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates vSphere cluster create operation","tags":["v1"]}},"/v1/spectroclusters/{uid}":{"delete":{"operationId":"v1SpectroClustersDelete","parameters":[{"description":"If set to true the cluster will be force deleted and user has to manually clean up the provisioned cloud resources","in":"query","name":"forceDelete","type":"boolean"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified cluster","tags":["v1"]},"get":{"operationId":"v1SpectroClustersGet","parameters":[{"description":"Comma separated tags like system,profile","in":"query","name":"includeTags","type":"string"},{"default":false,"description":"Resolve pack values if set to true","in":"query","name":"resolvePackValues","type":"boolean"},{"description":"Includes pack meta such as schema, presets","in":"query","name":"includePackMeta","type":"string"},{"description":"Filter cluster profile templates by profileType","in":"query","name":"profileType","type":"string"},{"default":false,"description":"Include non spectro labels in the cluster labels if set to true","in":"query","name":"includeNonSpectroLabels","type":"boolean"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1SpectroCluster"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/assets":{"get":{"operationId":"v1SpectroClustersUidAssetsGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1SpectroClusterAssetEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the cluster asset doc","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1SpectroClustersUidAssets","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterAssetEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Associate the assets for the cluster","tags":["v1"]}},"/v1/spectroclusters/{uid}/assets/adminKubeconfig":{"get":{"operationId":"v1SpectroClustersUidAdminKubeConfig","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"download file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster's kube config file","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/assets/frpKubeconfig":{"delete":{"operationId":"v1SpectroClustersUidFrpKubeConfigDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the cluster's frp kube config client data","tags":["v1"]},"get":{"operationId":"v1SpectroClustersUidFrpKubeConfigGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"download file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster's frp kube config file","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersUidFrpKubeConfigUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterAssetFrpKubeConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster's frp kube config data","tags":["v1"]}},"/v1/spectroclusters/{uid}/assets/kubeconfig":{"get":{"operationId":"v1SpectroClustersUidKubeConfig","parameters":[{"default":true,"description":"FRP (reverse-proxy) based kube config will be returned if available","in":"query","name":"frp","type":"boolean"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"download file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster's kube config file","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersUidKubeConfigUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterAssetKubeConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster's manifest data","tags":["v1"]}},"/v1/spectroclusters/{uid}/assets/kubeconfigclient":{"delete":{"operationId":"v1SpectroClustersUidKubeConfigClientDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the cluster's kube config client data","tags":["v1"]},"get":{"operationId":"v1SpectroClustersUidKubeConfigClientGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"download file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster's kube config client file","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersUidKubeConfigClientUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterAssetKubeConfigClient"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster's kube config client data","tags":["v1"]}},"/v1/spectroclusters/{uid}/assets/manifest":{"get":{"operationId":"v1SpectroClustersUidManifestGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster's manifest data","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersUidManifestUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterAssetManifest"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster's manifest data","tags":["v1"]}},"/v1/spectroclusters/{uid}/clusterConfig/clusterMetaAttribute":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1SpectroClustersUidClusterMetaAttributeUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterMetaAttributeEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster meta attribute","tags":["v1"]}},"/v1/spectroclusters/{uid}/clusterConfig/controlPlaneHealthCheckTimeout":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"V1ControlPlaneHealthCheckTimeoutUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ControlPlaneHealthCheckTimeoutEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster controlPlane health check timeout","tags":["v1"]}},"/v1/spectroclusters/{uid}/clusterConfig/hostCluster":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"V1HostClusterConfigUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1HostClusterConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster host config","tags":["v1"]}},"/v1/spectroclusters/{uid}/clusterConfig/lifecycleConfig":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1SpectroClustersUidLifecycleConfigUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1LifecycleConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster Life cycle configuration","tags":["v1"]}},"/v1/spectroclusters/{uid}/clusterConfig/osPatch":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1SpectroClustersUidOsPatchUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1OsPatchEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster OS patch configuration","tags":["v1"]}},"/v1/spectroclusters/{uid}/config/namespaces":{"get":{"operationId":"v1SpectroClustersUidConfigNamespacesGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterNamespaceResources"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves namespaces for the specified cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersUidConfigNamespacesUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterNamespaceResourcesUpdateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates namespaces for the specified cluster","tags":["v1"]}},"/v1/spectroclusters/{uid}/config/namespaces/{namespaceUid}":{"get":{"operationId":"v1SpectroClustersUidConfigNamespacesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Cluster's namespace response","schema":{"$ref":"#/definitions/v1ClusterNamespaceResource"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves the specified namespace of the cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Cluster namespace uid","in":"path","name":"namespaceUid","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersUidConfigNamespacesUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterNamespaceResourceInputEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified namespace of the cluster","tags":["v1"]}},"/v1/spectroclusters/{uid}/config/rbacs":{"get":{"operationId":"v1SpectroClustersUidConfigRbacsGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterRbacs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves RBAC information for the specified cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersUidConfigRbacsUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterRbacResourcesUpdateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates RBAC information for the specified cluster","tags":["v1"]}},"/v1/spectroclusters/{uid}/config/rbacs/{rbacUid}":{"get":{"operationId":"v1SpectroClustersUidConfigRbacsUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Cluster's RBAC response","schema":{"$ref":"#/definitions/v1ClusterRbac"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves the specified RBAC of the cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"RBAC resource uid","in":"path","name":"rbacUid","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersUidConfigRbacsUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterRbacInputEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified RBAC of the cluster","tags":["v1"]}},"/v1/spectroclusters/{uid}/download":{"get":{"operationId":"v1SpectroClustersUidDownload","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"download cluster archive file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Download the specified cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/edge-native/edgeHosts":{"get":{"operationId":"v1EdgeNativeClustersHostsList","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"List of edge host device","schema":{"$ref":"#/definitions/v1EdgeHostDevices"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of edge host of edge-native cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/edge/edgeHosts":{"get":{"operationId":"v1EdgeClustersHostsList","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"List of edge host device","schema":{"$ref":"#/definitions/v1EdgeHostDevices"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of edge host of libvirt cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/features/backup":{"delete":{"operationId":"v1ClusterFeatureBackupScheduleReset","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Reset cluster backup schedule settings","tags":["v1"]},"get":{"operationId":"v1ClusterFeatureBackupGet","parameters":[{"in":"query","name":"backupRequestUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterBackup"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the cluster backup result","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1ClusterFeatureBackupCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterBackupConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create cluster backup settings","tags":["v1"]},"put":{"operationId":"v1ClusterFeatureBackupUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterBackupConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update cluster backup settings","tags":["v1"]}},"/v1/spectroclusters/{uid}/features/backup/onDemand":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1ClusterFeatureBackupOnDemandCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterBackupConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create on demand cluster backup","tags":["v1"]}},"/v1/spectroclusters/{uid}/features/backup/{backupName}/request/{requestUid}":{"delete":{"operationId":"v1ClusterFeatureBackupDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete cluster backup","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"path","name":"backupName","required":true,"type":"string"},{"in":"path","name":"requestUid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/features/complianceScan":{"get":{"operationId":"v1ClusterFeatureComplianceScanGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterComplianceScan"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the compliance scan of cluster, if driverType is provided then specific status of driverType will be returned","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1ClusterFeatureComplianceScanCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterComplianceScheduleConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create cluster compliance scan","tags":["v1"]},"put":{"operationId":"v1ClusterFeatureComplianceScanUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterComplianceScheduleConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update cluster compliance scan settings","tags":["v1"]}},"/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers":{"get":{"operationId":"v1ClusterFeatureComplianceScanLogsGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterComplianceScanLogs"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the compliance scan log by cluster uid and driver type","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/kubeBench":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1ClusterFeatureScanKubeBenchLogUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1KubeBenchEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the KubeBench compliance scan log by uid","tags":["v1"]}},"/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/kubeHunter":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1ClusterFeatureScanKubeHunterLogUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1KubeHunterEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the KubeHunter compliance scan log by uid","tags":["v1"]}},"/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/sonobuoy":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1ClusterFeatureScanSonobuoyLogUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SonobuoyEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the Sonobuoy compliance scan log by uid","tags":["v1"]}},"/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/syft":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1ClusterFeatureScanSyftLogUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SyftEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the Syft compliance scan log by uid","tags":["v1"]}},"/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}":{"delete":{"operationId":"v1ClusterFeatureComplianceScanLogDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete the compliance scan log by uid","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"path","name":"logUid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/kubeBench":{"get":{"operationId":"v1ClusterFeatureKubeBenchLogGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterScanLogKubeBench"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the KubeBench compliance scan log by uid","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"path","name":"logUid","required":true,"type":"string"},{"in":"query","name":"reportId","type":"string"}]},"/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/kubeHunter":{"get":{"operationId":"v1ClusterFeatureKubeHunterLogGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterScanLogKubeHunter"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the KubeHunter compliance scan log by uid","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"path","name":"logUid","required":true,"type":"string"},{"in":"query","name":"reportId","type":"string"}]},"/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/sonobuoy":{"get":{"operationId":"v1ClusterFeatureSonobuoyLogGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterScanLogSonobuoy"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the Sonobuoy compliance scan log by uid","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"path","name":"logUid","required":true,"type":"string"},{"in":"query","name":"reportId","type":"string"}]},"/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/syft":{"get":{"operationId":"v1ClusterFeatureSyftLogGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterScanLogSyft"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the Syft compliance scan log by uid","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"path","name":"logUid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/syft/sbom":{"get":{"operationId":"v1SyftScanLogImageSBOMGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"download file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the image sbom of syft scan log of cluster","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"path","name":"logUid","required":true,"type":"string"},{"in":"query","name":"image","type":"string"}]},"/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/{driver}/download":{"get":{"operationId":"v1ClusterFeatureDriverLogDownload","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"OK","headers":{"Content-Disposition":{"type":"string"},"Content-Type":{"type":"string"}},"schema":{"type":"file"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Downloads the driver cluster logs","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"path","name":"logUid","required":true,"type":"string"},{"enum":["kubeBench","kubeHunter","sonobuoy","syft"],"in":"path","name":"driver","required":true,"type":"string"},{"default":"pdf","in":"query","name":"fileFormat","type":"string"}]},"/v1/spectroclusters/{uid}/features/complianceScan/onDemand":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1ClusterFeatureComplianceScanOnDemandCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterComplianceOnDemandConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create on demand cluster compliance scan","tags":["v1"]}},"/v1/spectroclusters/{uid}/features/helmCharts":{"get":{"operationId":"v1ClusterFeatureHelmChartsGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterHelmCharts"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the installed helm charts of a specified cluster","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/features/logFetcher":{"get":{"operationId":"v1ClusterFeatureLogFetcherGet","parameters":[{"in":"query","name":"requestId","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterLogFetcher"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the log fetcher for cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid for which log is requested","in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1ClusterFeatureLogFetcherCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterLogFetcherRequest"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create the log fetcher for cluster","tags":["v1"]}},"/v1/spectroclusters/{uid}/features/manifests":{"get":{"operationId":"v1ClusterFeatureManifestsGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterManifests"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the installed manifests of a specified cluster","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/features/restore":{"get":{"operationId":"v1ClusterFeatureRestoreGet","parameters":[{"in":"query","name":"restoreRequestUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterRestore"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the cluster restore of cluster","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/features/restore/onDemand":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1ClusterFeatureRestoreOnDemandCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterRestoreConfig"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create on demand cluster restore","tags":["v1"]}},"/v1/spectroclusters/{uid}/import/manifest":{"get":{"operationId":"v1SpectroClustersUidImportManifest","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"produces":["application/octet-stream"],"responses":{"200":{"description":"download file","headers":{"Content-Disposition":{"type":"string"}},"schema":{"format":"binary","type":"string"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster's import manifest file","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/import/upgrade":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1SpectroClustersUidImportUpgradePatch","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Upgrade the specified imported read only cluster with full permissions","tags":["v1"]}},"/v1/spectroclusters/{uid}/k8certificates":{"get":{"operationId":"v1SpectroClustersK8Certificate","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1MachineCertificates"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get K8Certificate for spectro cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/k8certificates/renew":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1SpectroClustersCertificatesRenew","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Sets the cluster master nodes Kubernetes certificates for renewal","tags":["v1"]}},"/v1/spectroclusters/{uid}/kubectl/redirect":{"get":{"operationId":"V1SpectroClustersUidKubeCtlRedirect","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1SpectroClusterKubeCtlRedirect"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster's kube config file","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/libvirt/edgeHosts":{"get":{"operationId":"v1LibvirtClustersHostsList","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"List of edge host devices","schema":{"$ref":"#/definitions/v1EdgeHostDevices"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of edge hosts of the libvirt cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/location":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersUidLocationPut","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterLocationInputEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Associate the assets for the cluster","tags":["v1"]}},"/v1/spectroclusters/{uid}/metadata":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1SpectroClustersUidMetadataUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ObjectMetaInputEntitySchema"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the specified spectro cluster metadata","tags":["v1"]}},"/v1/spectroclusters/{uid}/namespaces":{"get":{"operationId":"v1ClusterNamespacesGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterNamespaces"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns available namespaces for the cluster","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"default":false,"in":"query","name":"skipEmptyNamespaces","type":"boolean"}]},"/v1/spectroclusters/{uid}/oidc":{"get":{"operationId":"V1SpectroClustersUidOIDC","parameters":[{"description":"spc uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1SpectroClusterOidcSpec"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns k8s spectrocluster oidc","tags":["v1"]}},"/v1/spectroclusters/{uid}/oidc/dashboard/url":{"get":{"operationId":"V1SpectroClustersUidOIDCDashboardUrl","parameters":[{"description":"spc uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1SectroClusterK8sDashboardUrl"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns k8s dashboard url","tags":["v1"]}},"/v1/spectroclusters/{uid}/pack/manifests/{manifestUid}":{"get":{"operationId":"v1SpectroClustersUidPackManifestsUidGet","parameters":[{"description":"cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"manifest uid which is part of the pack ref","in":"path","name":"manifestUid","required":true,"type":"string"},{"default":false,"description":"resolve pack manifest values if set to true","in":"query","name":"resolveManifestValues","type":"boolean"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Pack manifest content","schema":{"$ref":"#/definitions/v1Manifest"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster's manifest","tags":["v1"]}},"/v1/spectroclusters/{uid}/pack/properties":{"get":{"operationId":"v1SpectroClustersUidPackProperties","parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Pack layer","in":"query","name":"layer","required":true,"type":"string"},{"description":"Pack values yaml field path","in":"query","name":"fieldPath","required":true,"type":"string"},{"description":"Pack name","in":"query","name":"name","type":"string"},{"default":true,"description":"Is the macros need to be resolved","in":"query","name":"resolveMacros","type":"boolean"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Cluster's pack properties response","schema":{"$ref":"#/definitions/v1SpectroClusterPackProperties"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get specified cluster pack properties","tags":["v1"]}},"/v1/spectroclusters/{uid}/packRefs":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"query","name":"notify","type":"string"}],"patch":{"operationId":"v1SpectroClustersPacksRefUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterNotificationUpdateEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster's pack references","tags":["v1"]}},"/v1/spectroclusters/{uid}/packs/resolvedValues":{"get":{"operationId":"v1SpectroClustersUidPacksResolvedValuesGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1SpectroClusterProfilesResolvedValues"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster's packs resolved values","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterProfilesParamReferenceEntity"}}]},"/v1/spectroclusters/{uid}/packs/status":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1SpectroClustersUidPacksStatusPatch","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterPacksStatusEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Patch update specified cluster's packs status","tags":["v1"]}},"/v1/spectroclusters/{uid}/packs/{packName}/config":{"get":{"description":"Deprecated","operationId":"v1SpectroClustersUidPacksConfigGet","parameters":[{"description":"cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"pack name","in":"path","name":"packName","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster pack values","schema":{"$ref":"#/definitions/v1SpectroClusterPackConfigList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster's pack configuration","tags":["v1"]}},"/v1/spectroclusters/{uid}/profile":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1SpectroClustersPatchProfile","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Replaces the specified cluster profile for the cluster","tags":["v1"]}},"/v1/spectroclusters/{uid}/profileUpdates":{"get":{"operationId":"v1SpectroClustersGetProfileUpdates","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1SpectroClusterProfileUpdates"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the profile updates of a specified cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/profiles":{"delete":{"operationId":"v1SpectroClustersDeleteProfiles","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterProfilesDeleteEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Remove cluster profiles from the specified cluster","tags":["v1"]},"get":{"operationId":"v1SpectroClustersGetProfiles","parameters":[{"description":"includes pack meta such as schema, presets","in":"query","name":"includePackMeta","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1SpectroClusterProfileList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the associated profiles of a specified cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1SpectroClustersPatchProfiles","parameters":[{"default":false,"description":"Resolve pending cluster notification if set to true","in":"query","name":"resolveNotification","type":"boolean"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterProfiles"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Patch cluster profiles to the specified cluster","tags":["v1"]},"put":{"operationId":"v1SpectroClustersUpdateProfiles","parameters":[{"default":false,"description":"Resolve pending cluster notification if set to true","in":"query","name":"resolveNotification","type":"boolean"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterProfiles"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Associate cluster profiles to the specified cluster","tags":["v1"]}},"/v1/spectroclusters/{uid}/profiles/packs/manifests":{"get":{"operationId":"v1SpectroClustersGetProfilesPacksManifests","parameters":[{"description":"Includes pack meta such as schema, presets","in":"query","name":"includePackMeta","type":"string"},{"default":false,"description":"Resolve pack macro variables if set to true","in":"query","name":"resolveMacros","type":"boolean"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1SpectroClusterProfilesPacksManifests"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the associated profile's pack manifests of a specified cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/profiles/{profileUid}/packs/{packName}/config":{"get":{"operationId":"v1SpectroClustersUidProfilesUidPacksConfigGet","parameters":[{"description":"cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"profile uid","in":"path","name":"profileUid","required":true,"type":"string"},{"description":"pack name","in":"path","name":"packName","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of cluster pack values","schema":{"$ref":"#/definitions/v1SpectroClusterPackConfigList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified cluster's profile pack configuration","tags":["v1"]}},"/v1/spectroclusters/{uid}/profiles/{profileUid}/packs/{packName}/manifests":{"get":{"operationId":"v1SpectroClustersProfilesUidPackManifestsGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1PackManifests"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the associated profiles pack manifests of the specified cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Cluster profile uid","in":"path","name":"profileUid","required":true,"type":"string"},{"description":"Name of the pack","in":"path","name":"packName","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersProfilesUidPackManifestsUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ManifestRefInputEntities"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates cluster profiles pack manifests to the specified cluster","tags":["v1"]}},"/v1/spectroclusters/{uid}/rate":{"get":{"operationId":"v1SpectroClustersUidRate","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1SpectroClusterRate"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the estimated rate of the specified cluster","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"default":"hourly","description":"Period type [hourly, monthly, yearly]","enum":["hourly","monthly","yearly"],"in":"query","name":"periodType","type":"string"}]},"/v1/spectroclusters/{uid}/repave/approve":{"patch":{"operationId":"v1SpectroClustersUidRepaveApproveUpdate","parameters":[{"description":"cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the spectrocluster repave approve update","tags":["v1"]}},"/v1/spectroclusters/{uid}/repave/status":{"get":{"operationId":"v1SpectroClustersUidRepaveGet","parameters":[{"description":"cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Returns cluster repave status","schema":{"$ref":"#/definitions/v1SpectroClusterRepave"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the spectrocluster repave","tags":["v1"]}},"/v1/spectroclusters/{uid}/reset":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"V1SpectroClustersUidReset","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"reset the cluster s by deleting machine pools and condtions","tags":["v1"]}},"/v1/spectroclusters/{uid}/status/condition":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersUpdateStatusCondition","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterCondition"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster status condition","tags":["v1"]}},"/v1/spectroclusters/{uid}/status/conditions":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1SpectroClustersUpdateStatusConditions","parameters":[{"in":"body","name":"body","schema":{"items":{"$ref":"#/definitions/v1ClusterCondition"},"type":"array"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster status conditions","tags":["v1"]}},"/v1/spectroclusters/{uid}/status/endpoints":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersUpdateStatusEndpoints","parameters":[{"in":"body","name":"body","schema":{"items":{"$ref":"#/definitions/v1ApiEndpoint"},"type":"array"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster's service endpoints information","tags":["v1"]}},"/v1/spectroclusters/{uid}/status/imported":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1SpectroClustersUpdateStatusImported","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster status as imported","tags":["v1"]}},"/v1/spectroclusters/{uid}/status/services":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersUpdateStatusServices","parameters":[{"in":"body","name":"body","schema":{"items":{"$ref":"#/definitions/v1LoadBalancerService"},"type":"array"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified cluster's services information","tags":["v1"]}},"/v1/spectroclusters/{uid}/status/spcApply":{"get":{"operationId":"v1SpectroClustersUidStatusSpcApplyGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1SpcApply"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the SPC apply information for the agent","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1SpectroClustersUidStatusSpcApply","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"202":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Set the CanBeApplied to true on the spcApply status. CanBeApplied indicates the agent to orchestrate the spc changes","tags":["v1"]}},"/v1/spectroclusters/{uid}/status/spcApply/patchTime":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1SpectroClustersUidStatusSpcPatchTime","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpcPatchTimeEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the agent patch time for the SPC changes","tags":["v1"]}},"/v1/spectroclusters/{uid}/status/upgrades":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersUidUpgradesPut","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterUidUpgrades"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the cluster's upgrade status","tags":["v1"]}},"/v1/spectroclusters/{uid}/validate/packs":{"post":{"operationId":"v1SpectroClustersUidValidatePacks","parameters":[{"description":"cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterPacksEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Cluster packs validation response","schema":{"$ref":"#/definitions/v1SpectroClusterValidatorResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates cluster packs","tags":["v1"]}},"/v1/spectroclusters/{uid}/validate/repave":{"post":{"operationId":"v1SpectroClustersUidValidateRepave","parameters":[{"description":"cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterPacksEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"Cluster repave validation response","schema":{"$ref":"#/definitions/v1SpectroClusterRepaveValidationResponse"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates if cluster gets repaved for the specified packs","tags":["v1"]}},"/v1/spectroclusters/{uid}/vms":{"get":{"operationId":"v1SpectroClustersVMList","parameters":[{"collectionFormat":"csv","description":"Namespace names, comma separated value (ex: dev,test). If namespace is empty it returns the specific resource under all namespace","in":"query","items":{"type":"string"},"name":"namespace","type":"array"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ClusterVirtualMachineList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the list of virtual machines","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1SpectroClustersVMCreate","parameters":[{"description":"Namespace name","in":"query","name":"namespace","required":true,"type":"string"},{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterVirtualMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1ClusterVirtualMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create virtual machine","tags":["v1"]}},"/v1/spectroclusters/{uid}/vms/snapshot":{"get":{"operationId":"v1ClusterVMSnapshotsList","parameters":[{"collectionFormat":"csv","description":"vmName is comma separated value (ex: name1,name2).","in":"query","items":{"type":"string"},"name":"vmName","type":"array"},{"collectionFormat":"csv","description":"Namespace names, comma separated value (ex: dev,test). If namespace is empty it returns the specific resource under all namespace","in":"query","items":{"type":"string"},"name":"namespace","type":"array"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1VirtualMachineSnapshotList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the list of snapshots of given namespaces","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/spectroclusters/{uid}/vms/{vmName}":{"delete":{"operationId":"v1SpectroClustersVMDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the virtual machine","tags":["v1"]},"get":{"operationId":"v1SpectroClustersVMGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1ClusterVirtualMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get virtual machine","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Virtual Machine name","in":"path","name":"vmName","required":true,"type":"string"},{"description":"Namespace name","in":"query","name":"namespace","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersVMUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterVirtualMachine"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1ClusterVirtualMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified virtual machine of the cluster","tags":["v1"]}},"/v1/spectroclusters/{uid}/vms/{vmName}/addVolume":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Virtual Machine name","in":"path","name":"vmName","required":true,"type":"string"},{"description":"Namespace name","in":"query","name":"namespace","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersVMAddVolume","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VMAddVolumeEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Add volume to the virtual machine instance","tags":["v1"]}},"/v1/spectroclusters/{uid}/vms/{vmName}/clone":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Virtual Machine name","in":"path","name":"vmName","required":true,"type":"string"},{"description":"Namespace name","in":"query","name":"namespace","required":true,"type":"string"}],"post":{"operationId":"v1SpectroClustersVMClone","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1SpectroClusterVMCloneEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1ClusterVirtualMachine"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Clone virtual machine","tags":["v1"]}},"/v1/spectroclusters/{uid}/vms/{vmName}/migrate":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Virtual Machine name","in":"path","name":"vmName","required":true,"type":"string"},{"description":"Namespace name","in":"query","name":"namespace","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersVMMigrate","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Migrate the virtual machine","tags":["v1"]}},"/v1/spectroclusters/{uid}/vms/{vmName}/pause":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Virtual Machine name","in":"path","name":"vmName","required":true,"type":"string"},{"description":"Namespace name","in":"query","name":"namespace","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersVMPause","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Pause the virtual machine instance","tags":["v1"]}},"/v1/spectroclusters/{uid}/vms/{vmName}/removeVolume":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Virtual Machine name","in":"path","name":"vmName","required":true,"type":"string"},{"description":"Namespace name","in":"query","name":"namespace","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersVMRemoveVolume","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VMRemoveVolumeEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Remove volume from the virtual machine instance","tags":["v1"]}},"/v1/spectroclusters/{uid}/vms/{vmName}/restart":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Virtual Machine name","in":"path","name":"vmName","required":true,"type":"string"},{"description":"Namespace name","in":"query","name":"namespace","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersVMRestart","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Restart the virtual machine","tags":["v1"]}},"/v1/spectroclusters/{uid}/vms/{vmName}/resume":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Virtual Machine name","in":"path","name":"vmName","required":true,"type":"string"},{"description":"Namespace name","in":"query","name":"namespace","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersVMResume","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Resume the virtual machine instance","tags":["v1"]}},"/v1/spectroclusters/{uid}/vms/{vmName}/snapshot":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Virtual Machine name","in":"path","name":"vmName","required":true,"type":"string"},{"description":"Namespace name of virtual machine","in":"query","name":"namespace","required":true,"type":"string"}],"post":{"operationId":"v1VMSnapshotCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VirtualMachineSnapshot"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1VirtualMachineSnapshot"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create snapshot of virtual machine","tags":["v1"]}},"/v1/spectroclusters/{uid}/vms/{vmName}/snapshot/{snapshotName}":{"delete":{"operationId":"v1VMSnapshotDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete the snapshot of virtual machine","tags":["v1"]},"get":{"operationId":"v1VMSnapshotGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1VirtualMachineSnapshot"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get virtual machine snapshot","tags":["v1"]},"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Virtual Machine name","in":"path","name":"vmName","required":true,"type":"string"},{"description":"Snapshot name","in":"path","name":"snapshotName","required":true,"type":"string"},{"description":"Namespace name","in":"query","name":"namespace","required":true,"type":"string"}],"put":{"operationId":"v1VMSnapshotUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VirtualMachineSnapshot"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1VirtualMachineSnapshot"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified snapshot of a virtual machine","tags":["v1"]}},"/v1/spectroclusters/{uid}/vms/{vmName}/start":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Virtual Machine name","in":"path","name":"vmName","required":true,"type":"string"},{"description":"Namespace name","in":"query","name":"namespace","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersVMStart","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Start the virtual machine","tags":["v1"]}},"/v1/spectroclusters/{uid}/vms/{vmName}/stop":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Virtual Machine name","in":"path","name":"vmName","required":true,"type":"string"},{"description":"Namespace name","in":"query","name":"namespace","required":true,"type":"string"}],"put":{"operationId":"v1SpectroClustersVMStop","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Stop the virtual machine","tags":["v1"]}},"/v1/spectroclusters/{uid}/workloads/sync":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"description":"Sync specified cluster workload","operationId":"v1SpectroClustersUidWorkloadsSync","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"202":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Sync specified cluster workload","tags":["v1"]}},"/v1/spectroclusters/{uid}/workloads/{workloadKind}/sync":{"parameters":[{"description":"Cluster uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Workload kind","enum":["namespace","pod","deployment","statefulset","daemonset","job","cronjob","rolebinding","clusterrolebinding"],"in":"path","name":"workloadKind","required":true,"type":"string"}],"post":{"operationId":"v1SpectroClustersUidWorkloadsKindSync","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"202":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Sync specified cluster workload","tags":["v1"]}},"/v1/system/config/reverseproxy":{"get":{"operationId":"V1SystemConfigReverseProxyGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1SystemReverseProxy"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"get the system config reverse proxy","tags":["v1","system","private","show-docs"]},"put":{"operationId":"V1SystemConfigReverseProxyUpdate","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1SystemReverseProxy"}}],"responses":{"204":{"description":"(empty)","schema":{"$ref":"#/definitions/v1Updated"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"updates the system config reverse proxy","tags":["v1","system","private","show-docs"]}},"/v1/system/passwords/blocklist":{"delete":{"operationId":"V1PasswordsBlockListDelete","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/V1PasswordsBlockList"}}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete a list of block listed passwords","tags":["v1","system","show-docs"]},"patch":{"operationId":"V1PasswordsBlockListUpdate","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/V1PasswordsBlockList"}}],"responses":{"204":{"description":"(empty)","schema":{"$ref":"#/definitions/v1Updated"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"List of block listed passwords","tags":["v1","system","show-docs"]}},"/v1/teams":{"get":{"operationId":"v1TeamsList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"An array of teams","schema":{"$ref":"#/definitions/v1Teams"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of teams","tags":["v1"]},"post":{"operationId":"v1TeamsCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Team"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a team with the specified users and roles","tags":["v1"]}},"/v1/teams/summary":{"get":{"description":"Deprecated, Use Post api - Returns a list of team summaries","operationId":"v1TeamsSummary","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1TeamsSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of team summary","tags":["v1"]},"post":{"operationId":"v1TeamsSummaryGet","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TeamsSummarySpec"}}],"responses":{"200":{"description":"An array of teams summary items","schema":{"$ref":"#/definitions/v1TeamsSummaryList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of teams summary with provided filter spec","tags":["v1"]}},"/v1/teams/{uid}":{"delete":{"operationId":"v1TeamsUidDelete","responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified team","tags":["v1"]},"get":{"operationId":"v1TeamsUidGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Team"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the sepcified team","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1TeamsUidPatch","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1TeamPatch"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Patches the specified team","tags":["v1"]},"put":{"operationId":"v1TeamsUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Team"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the sepcified team","tags":["v1"]}},"/v1/teams/{uid}/projects":{"get":{"operationId":"v1TeamsProjectRoles","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ProjectRolesEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified team's project and roles data","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1TeamsProjectRolesPut","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1ProjectRolesPatch"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the projects and roles for the specified team","tags":["v1"]}},"/v1/teams/{uid}/resourceRoles":{"get":{"description":"Returns resource roles for team","operationId":"v1TeamsUidResourceRoles","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ResourceRoles"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified individual and resource roles for a team","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"description":"Resource roles added to specific team","operationId":"v1TeamsUidResourceRolesCreate","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1ResourceRolesUpdateEntity"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Add resource roles for team","tags":["v1"]}},"/v1/teams/{uid}/resourceRoles/{resourceRoleUid}":{"delete":{"operationId":"v1TeamsUidResourceRolesUidDelete","responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deleted the resource roles from team","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"path","name":"resourceRoleUid","required":true,"type":"string"}],"patch":{"description":"Specific resource roles fo team is updated","operationId":"v1TeamsResourceRolesUidUpdate","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1ResourceRolesUpdateEntity"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the resource roles for team","tags":["v1"]}},"/v1/teams/{uid}/roles":{"get":{"operationId":"V1TeamsUidTenantRolesGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1TeamTenantRolesEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified team's tenant roles","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"V1TeamsUidTenantRolesUpdate","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1TeamTenantRolesUpdate"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the tenant roles of the specified team","tags":["v1"]}},"/v1/tenants/{tenantUid}/address":{"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"patch":{"operationId":"v1PatchTenantAddress","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TenantAddressPatch"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update tenant address","tags":["v1"]}},"/v1/tenants/{tenantUid}/assets/certs":{"get":{"operationId":"V1TenantUIdAssetsCertsList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1TenantAssetCerts"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"lists the certificates for the tenant","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"post":{"operationId":"V1TenantUidAssetsCertsCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TenantAssetCert"}}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"create the tenant certificate","tags":["v1"]}},"/v1/tenants/{tenantUid}/assets/certs/{certificateUid}":{"delete":{"operationId":"V1TenantUidAssetsCertsUidDelete","responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"deletes the tenant certificate","tags":["v1"]},"get":{"operationId":"V1TenantUidAssetsCertsUidGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1TenantAssetCert"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the ca certificate for the tenant","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"},{"in":"path","name":"certificateUid","required":true,"type":"string"}],"put":{"operationId":"V1TenantUidAssetsCertsUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TenantAssetCert"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"updates the tenant certificate","tags":["v1"]}},"/v1/tenants/{tenantUid}/assets/dataSinks":{"delete":{"operationId":"V1TenantUidAssetsDataSinksDelete","responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"deletes the tenant data sink config","tags":["v1"]},"get":{"operationId":"V1TenantUidAssetsDataSinksGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1DataSinkConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns data sink config of tenant","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"post":{"operationId":"V1TenantUidAssetsDataSinksCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1DataSinkConfig"}}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"create data sink config","tags":["v1"]},"put":{"operationId":"V1TenantUidAssetsDataSinksUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1DataSinkConfig"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"updates the tenant data sink config","tags":["v1"]}},"/v1/tenants/{tenantUid}/authTokenSettings":{"get":{"operationId":"v1TenantUidAuthTokenSettingsGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AuthTokenSettings"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get tenant auth token settings","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"put":{"operationId":"v1TenantUidAuthTokenSettingsUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AuthTokenSettings"}}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update tenant auth token settings","tags":["v1"]}},"/v1/tenants/{tenantUid}/contract/accept":{"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"patch":{"operationId":"v1TenantsUidContractAccept","responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Tenant to accept the contract agreement","tags":["v1"]}},"/v1/tenants/{tenantUid}/creditAccount/aws":{"delete":{"operationId":"v1TenantsCreditAccountDelete","parameters":[{"default":false,"in":"query","name":"forceDelete","type":"boolean"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the aws credit account for tenants","tags":["v1"]},"get":{"operationId":"v1TenantsCreditAccountGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1AwsCreditAccountEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the credit accounts for the tenants with free tier access","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}]},"/v1/tenants/{tenantUid}/domains":{"get":{"operationId":"V1TenantUidDomainsGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1TenantDomains"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"retrieves the domains for tenant","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"post":{"operationId":"V1TenantUidDomainsUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TenantDomains"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"creates or updates domains for tenant","tags":["v1"]}},"/v1/tenants/{tenantUid}/emailId":{"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"patch":{"operationId":"v1PatchTenantEmailId","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TenantEmailPatch"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update tenant emailId","tags":["v1"]}},"/v1/tenants/{tenantUid}/freemium":{"get":{"operationId":"v1TenantFreemiumGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1TenantFreemium"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get tenant level freemium configuration","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"put":{"operationId":"v1TenantFreemiumUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TenantFreemium"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update tenant freemium configuration","tags":["v1"]}},"/v1/tenants/{tenantUid}/freemiumUsage":{"get":{"operationId":"v1TenantFreemiumUsageGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1TenantFreemiumUsage"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get tenant freemium usage","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}]},"/v1/tenants/{tenantUid}/invoices/{invoiceUid}":{"get":{"operationId":"v1InvoicesUidGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1Invoice"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns a specified invoice","tags":["v1"]},"parameters":[{"description":"Specify the tenant uid","in":"path","name":"tenantUid","required":true,"type":"string"},{"description":"Specify the invoice uid","in":"path","name":"invoiceUid","required":true,"type":"string"}]},"/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/invoice/pdf":{"get":{"operationId":"V1InvoiceUidReportInvoicePdf","produces":["application/octet-stream"],"responses":{"200":{"description":"OK","headers":{"Content-Disposition":{"type":"string"},"Content-Type":{"type":"string"}},"schema":{"type":"file"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Downloads the specified invoice report","tags":["v1"]},"parameters":[{"description":"Specify the tenant uid","in":"path","name":"tenantUid","required":true,"type":"string"},{"description":"Specify the invoice uid","in":"path","name":"invoiceUid","required":true,"type":"string"}]},"/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/pdf":{"get":{"operationId":"V1InvoiceUidReportPdf","produces":["application/octet-stream"],"responses":{"200":{"description":"OK","headers":{"Content-Disposition":{"type":"string"},"Content-Type":{"type":"string"}},"schema":{"type":"file"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Downloads the specified monthly invoice report","tags":["v1"]},"parameters":[{"description":"Specify the tenant uid","in":"path","name":"tenantUid","required":true,"type":"string"},{"description":"Specify the invoice uid","in":"path","name":"invoiceUid","required":true,"type":"string"}]},"/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/usage/pdf":{"get":{"operationId":"V1InvoiceUidReportUsagePdf","produces":["application/octet-stream"],"responses":{"200":{"description":"OK","headers":{"Content-Disposition":{"type":"string"},"Content-Type":{"type":"string"}},"schema":{"type":"file"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Downloads the specified tenant usage","tags":["v1"]},"parameters":[{"description":"Specify the tenant uid","in":"path","name":"tenantUid","required":true,"type":"string"},{"description":"Specify the invoice uid","in":"path","name":"invoiceUid","required":true,"type":"string"}]},"/v1/tenants/{tenantUid}/loginBanner":{"get":{"operationId":"v1TenantUidLoginBannerGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1LoginBannerSettings"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get tenant login banner settings","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"put":{"operationId":"v1TenantUidLoginBannerUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1LoginBannerSettings"}}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update tenant login banner settings","tags":["v1"]}},"/v1/tenants/{tenantUid}/macros":{"delete":{"operationId":"v1TenantsUidMacrosDeleteByMacroName","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Macros"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete the macros for the specified tenant by given macro name","tags":["v1"]},"get":{"operationId":"v1TenantsUidMacrosList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Macros"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"List the macros of the specified tenant","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"patch":{"operationId":"v1TenantsUidMacrosUpdateByMacroName","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Macros"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the macros for the specified tenant by given macro name","tags":["v1"]},"post":{"operationId":"v1TenantsUidMacrosCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Macros"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create or add new macros for the specified tenant","tags":["v1"]},"put":{"operationId":"v1TenantsUidMacrosUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Macros"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the macros of the specified tenant","tags":["v1"]}},"/v1/tenants/{tenantUid}/oidc/config":{"get":{"operationId":"V1TenantUidOidcConfigGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1TenantOidcClientSpec"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the oidc Spec for tenant","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"post":{"operationId":"V1TenantUidOidcConfigUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TenantOidcClientSpec"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Associates the oidc Spec for the tenant","tags":["v1"]}},"/v1/tenants/{tenantUid}/password/policy":{"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"post":{"operationId":"V1TenantUidPasswordPolicyUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TenantPasswordPolicyEntity"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"creates or updates a password policy for tenant","tags":["v1"]}},"/v1/tenants/{tenantUid}/preferences/clusterGroup":{"get":{"operationId":"V1TenantPrefClusterGroupGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1TenantEnableClusterGroup"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get is cluster group enabled for a specific tenant","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"put":{"operationId":"V1TenantPrefClusterGroupUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TenantEnableClusterGroup"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Enable or Disable cluster group for a specific tenant","tags":["v1"]}},"/v1/tenants/{tenantUid}/preferences/clusterSettings":{"get":{"operationId":"v1TenantClusterSettingsGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1TenantClusterSettings"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get tenant cluster settings","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}]},"/v1/tenants/{tenantUid}/preferences/clusterSettings/nodesAutoRemediationSetting":{"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"put":{"operationId":"v1TenantClustersNodesAutoRemediationSettingUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1NodesAutoRemediationSettings"}}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update tenant clusters nodes auto remediation setting","tags":["v1"]}},"/v1/tenants/{tenantUid}/preferences/developerCredit":{"get":{"operationId":"V1TenantDeveloperCreditGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1DeveloperCredit"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get developer credit enabled for a specific tenant","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"put":{"operationId":"V1TenantDeveloperCreditUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1DeveloperCredit"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"update developer credit for a specific tenant","tags":["v1"]}},"/v1/tenants/{tenantUid}/preferences/fips":{"get":{"operationId":"v1TenantFipsSettingsGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1FipsSettings"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get tenant fips settings","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"put":{"operationId":"v1TenantFipsSettingsUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1FipsSettings"}}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update tenant fips setting","tags":["v1"]}},"/v1/tenants/{tenantUid}/rateConfig":{"get":{"operationId":"v1RateConfigGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1RateConfig"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get all rate config for public and private cloud","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"put":{"operationId":"v1RateConfigUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1RateConfig"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"updates the rate config for public and private cloud","tags":["v1"]}},"/v1/tenants/{tenantUid}/resourceLimits":{"get":{"operationId":"v1TenantResourceLimitsGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1TenantResourceLimits"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get tenant level resource limits configuration","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"patch":{"operationId":"v1TenantResourceLimitsUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TenantResourceLimitsEntity"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update tenant resource limits configuration","tags":["v1"]}},"/v1/tenants/{tenantUid}/saml/config":{"get":{"operationId":"V1TenantUidSamlConfigSpecGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1TenantSamlSpec"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified service provider metadata and Saml Spec for tenant","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"post":{"operationId":"V1TenantUidSamlConfigUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TenantSamlRequestSpec"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Associates the specified federation metadata for the tenant","tags":["v1"]}},"/v1/tenants/{tenantUid}/sso/auth/providers":{"get":{"operationId":"V1TenantUidSsoAuthProvidersGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1TenantSsoAuthProvidersEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"get sso logins for the tenants","tags":["v1"]},"parameters":[{"in":"path","name":"tenantUid","required":true,"type":"string"}],"post":{"operationId":"V1TenantUidSsoAuthProvidersUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1TenantSsoAuthProvidersEntity"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"enable sso logins for the tenants","tags":["v1"]}},"/v1/users":{"get":{"description":"Lists users the given user context","operationId":"v1UsersList","parameters":[{"description":"Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name","in":"query","name":"fields","type":"string"},{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"},{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Users"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Lists users","tags":["v1"]},"post":{"description":"A user is created for the given user context","operationId":"v1UsersCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1UserEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create User","tags":["v1"]}},"/v1/users/assets/locations":{"get":{"operationId":"v1UsersAssetsLocationGet","parameters":[{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1UserAssetsLocations"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified users location","tags":["v1"]}},"/v1/users/assets/locations/azure":{"post":{"operationId":"v1UsersAssetsLocationAzureCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1UserAssetsLocationAzure"}}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create a Azure location","tags":["v1"]}},"/v1/users/assets/locations/azure/{uid}":{"get":{"operationId":"v1UsersAssetsLocationAzureGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1UserAssetsLocationAzure"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified Azure location","tags":["v1"]},"parameters":[{"description":"Specify the Azure location uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1UsersAssetsLocationAzureUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1UserAssetsLocationAzure"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified Azure location","tags":["v1"]}},"/v1/users/assets/locations/gcp":{"post":{"operationId":"v1UsersAssetsLocationGcpCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1UserAssetsLocationGcp"}}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create a GCP location","tags":["v1"]}},"/v1/users/assets/locations/gcp/{uid}":{"get":{"operationId":"v1UsersAssetsLocationGcpGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1UserAssetsLocationGcp"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified GCP location","tags":["v1"]},"parameters":[{"description":"Specify the GCP location uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1UsersAssetsLocationGcpUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1UserAssetsLocationGcp"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified GCP location","tags":["v1"]}},"/v1/users/assets/locations/minio":{"post":{"operationId":"v1UsersAssetsLocationMinioCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1UserAssetsLocationS3"}}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create a MinIO location","tags":["v1"]}},"/v1/users/assets/locations/minio/{uid}":{"get":{"operationId":"v1UsersAssetsLocationMinioGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1UserAssetsLocationS3"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified MinIO location","tags":["v1"]},"parameters":[{"description":"Specify the MinIO location uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1UsersAssetsLocationMinioUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1UserAssetsLocationS3"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified MinIO location","tags":["v1"]}},"/v1/users/assets/locations/s3":{"post":{"operationId":"v1UsersAssetsLocationS3Create","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1UserAssetsLocationS3"}}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create a S3 location","tags":["v1"]}},"/v1/users/assets/locations/s3/{uid}":{"delete":{"operationId":"v1UsersAssetsLocationS3Delete","responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified S3 location","tags":["v1"]},"get":{"operationId":"v1UsersAssetsLocationS3Get","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1UserAssetsLocationS3"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified S3 location","tags":["v1"]},"parameters":[{"description":"Specify the S3 location uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1UsersAssetsLocationS3Update","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1UserAssetsLocationS3"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified S3 location","tags":["v1"]}},"/v1/users/assets/locations/{type}/{uid}/default":{"parameters":[{"description":"Specify the location uid","in":"path","name":"uid","required":true,"type":"string"},{"description":"Specify the location type [aws/azure/gcp/minio/s3]","in":"path","name":"type","required":true,"type":"string"}],"patch":{"operationId":"v1UsersAssetsLocationDefaultUpdate","responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the default backup location","tags":["v1"]}},"/v1/users/assets/locations/{uid}":{"delete":{"operationId":"v1UsersAssetsLocationDelete","responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified location","tags":["v1"]},"parameters":[{"description":"Specify the location uid","in":"path","name":"uid","required":true,"type":"string"}]},"/v1/users/assets/sshkeys":{"get":{"operationId":"v1UsersAssetsSshGet","parameters":[{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1UserAssetsSsh"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the SSH keys","tags":["v1"]},"post":{"operationId":"v1UserAssetsSshCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1UserAssetSshEntity"}}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Creates a SSH key","tags":["v1"]}},"/v1/users/assets/sshkeys/{uid}":{"delete":{"operationId":"v1UsersAssetSshDelete","responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified user ssh key","tags":["v1"]},"get":{"operationId":"v1UsersAssetSshGetUid","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1UserAssetSsh"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified user ssh key","tags":["v1"]},"parameters":[{"description":"Specify the SSH key uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1UsersAssetSshUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1UserAssetSsh"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified user ssh key","tags":["v1"]}},"/v1/users/assets/vsphere/dnsMapping":{"get":{"operationId":"v1VsphereMappingGet","parameters":[{"description":"Specify the vSphere gateway uid","in":"query","name":"gatewayUid","required":true,"type":"string"},{"description":"Specify the vSphere datacenter name","in":"query","name":"datacenter","required":true,"type":"string"},{"description":"Specify the vSphere network name","in":"query","name":"network","required":true,"type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1VsphereDnsMapping"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified vSphere DNS mapping","tags":["v1"]}},"/v1/users/assets/vsphere/dnsMappings":{"get":{"operationId":"v1VsphereDnsMappingsGet","parameters":[{"description":"Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.","in":"query","name":"filters","type":"string"},{"description":"Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1","in":"query","name":"orderBy","type":"string"}],"responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1VsphereDnsMappings"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified vSphere DNS mappings","tags":["v1"]},"post":{"operationId":"v1VsphereDnsMappingCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VsphereDnsMapping"}}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create a vSphere DNS mapping","tags":["v1"]}},"/v1/users/assets/vsphere/dnsMappings/{uid}":{"delete":{"operationId":"v1VsphereDnsMappingDelete","responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified vSphere DNS mapping","tags":["v1"]},"get":{"operationId":"v1VsphereDnsMappingGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1VsphereDnsMapping"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified vSphere DNS mapping","tags":["v1"]},"parameters":[{"description":"Specify the vSphere DNS mapping uid","in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1VsphereDnsMappingUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1VsphereDnsMapping"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified vSphere DNS mapping","tags":["v1"]}},"/v1/users/auth/tokens/revoke":{"post":{"operationId":"v1UsersAuthTokensRevoke","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1AuthTokenRevoke"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Revoke access of specific token(s)","tags":["v1"]}},"/v1/users/config/scar":{"get":{"operationId":"V1UsersConfigScarGet","responses":{"200":{"description":"(empty)","schema":{"$ref":"#/definitions/v1SystemScarSpec"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Get the system Spectro repository. Restricted to edge services","tags":["v1"]}},"/v1/users/kubectl/session/{sessionUid}":{"get":{"description":"gets users kubectl session","operationId":"V1UsersKubectlSessionUid","parameters":[{"in":"path","name":"sessionUid","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1UserKubectlSession"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"gets users kubectl session","tags":["v1"]}},"/v1/users/me":{"get":{"description":"Returns a User with permissions with scopes","operationId":"v1UsersMeGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1UserMe"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified User ACL information","tags":["v1","docs-hide"]}},"/v1/users/meta":{"get":{"operationId":"v1UsersMetadata","responses":{"200":{"description":"An array of users metadata items","schema":{"$ref":"#/definitions/v1UsersMetadata"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of users metadata","tags":["v1"]}},"/v1/users/password/change":{"patch":{"description":"User password change request via current password and emailId","operationId":"V1UsersPasswordChange","parameters":[{"in":"body","name":"body","required":true,"schema":{"properties":{"currentPassword":{"type":"string"},"emailId":{"type":"string"},"newPassword":{"type":"string"}},"required":["newPassword","emailId","currentPassword"],"type":"object"}}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"User password change request using the user emailId","tags":["v1"]}},"/v1/users/password/reset":{"patch":{"description":"User password request will be sent to the supplied emailId","operationId":"v1UsersEmailPasswordReset","parameters":[{"in":"body","name":"body","required":true,"schema":{"properties":{"emailId":{"type":"string"}},"required":["emailId"],"type":"object"}}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"User password reset request using the email id","tags":["v1"]}},"/v1/users/summary":{"get":{"description":"Deprecated, Use Post api - Returns a list of user summaries","operationId":"v1UsersSummary","parameters":[{"default":50,"description":"limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.","format":"int64","in":"query","name":"limit","type":"integer"},{"description":"offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.","format":"int64","in":"query","name":"offset","type":"integer"},{"description":"continue token to paginate the subsequent data items","in":"query","name":"continue","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1UsersSummary"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified user summary list","tags":["v1"]},"post":{"operationId":"v1UsersSummaryGet","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1UsersSummarySpec"}}],"responses":{"200":{"description":"An array of users summary items","schema":{"$ref":"#/definitions/v1UsersSummaryList"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Retrieves a list of users summary with provided filter spec","tags":["v1"]}},"/v1/users/system/macros":{"delete":{"operationId":"v1UsersSystemMacrosDeleteByMacroName","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Macros"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete the macros for the system user by macro name","tags":["v1"]},"get":{"operationId":"v1UsersSystemMacrosList","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Macros"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"List the macros of the system","tags":["v1"]},"patch":{"operationId":"v1UsersSystemMacrosUpdateByMacroName","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Macros"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the macros for the system user by macro name","tags":["v1"]},"post":{"operationId":"v1UsersSystemMacrosCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Macros"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create or add new macros for the system user","tags":["v1"]},"put":{"operationId":"v1UsersSystemMacrosUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1Macros"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update the macros of the system","tags":["v1"]}},"/v1/users/{uid}":{"delete":{"description":"Deletes the specified User for given uid","operationId":"v1UsersUidDelete","responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified User","tags":["v1"]},"get":{"description":"Returns a User for the specified uid.","operationId":"v1UsersUidGet","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1User"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified User","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"description":"User is patched for the specified information","operationId":"v1UsersUidPatch","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1UserPatch"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Patches the specified User","tags":["v1"]},"put":{"description":"A user is created for the given user context","operationId":"v1UsersUidUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1UserUpdateEntity"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update User","tags":["v1"]}},"/v1/users/{uid}/password/change":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"description":"User password change request via current password","operationId":"v1UsersUidPasswordChange","parameters":[{"in":"body","name":"body","required":true,"schema":{"properties":{"currentPassword":{"type":"string"},"newPassword":{"type":"string"}},"required":["newPassword"],"type":"object"}}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"User password change request using the user uid","tags":["v1"]}},"/v1/users/{uid}/password/reset":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"description":"User password reset request, will send the password reset option through the emailId","operationId":"v1UsersUidPasswordReset","responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"User password reset request using the user uid","tags":["v1"]}},"/v1/users/{uid}/projects":{"get":{"description":"Returns a User with projects and roles","operationId":"v1UsersProjectRoles","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ProjectRolesEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified User Projects and Roles information","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"description":"User is updated with projects and roles","operationId":"v1UsersProjectRolesPut","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1ProjectRolesPatch"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the projects and roles for user","tags":["v1"]}},"/v1/users/{uid}/resourceRoles":{"get":{"description":"Returns resource roles for user","operationId":"v1UsersUidResourceRoles","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1ResourceRoles"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified individual and resource roles for a user","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"description":"Resource roles added to specific user","operationId":"v1UsersUidResourceRolesCreate","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1ResourceRolesUpdateEntity"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Add resource roles for user","tags":["v1"]}},"/v1/users/{uid}/resourceRoles/{resourceRoleUid}":{"delete":{"operationId":"v1UsersUidResourceRolesUidDelete","responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deleted the resource roles from user","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"path","name":"resourceRoleUid","required":true,"type":"string"}],"patch":{"description":"Specific resource roles fo user is updated","operationId":"v1UsersResourceRolesUidUpdate","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1ResourceRolesUpdateEntity"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the resource roles for user","tags":["v1"]}},"/v1/users/{uid}/roles":{"get":{"description":"Returns roles clubbed from team","operationId":"v1UsersUidRoles","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1UserRolesEntity"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified individual and team roles for a user","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"description":"User is updated with roles","operationId":"v1UsersUidRolesUpdate","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1UserRoleUIDs"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the roles for user","tags":["v1"]}},"/v1/users/{uid}/status/loginMode":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"patch":{"operationId":"v1UsersStatusLoginMode","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1UserStatusLoginMode"}}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Users status login mode","tags":["v1"]}},"/v1/workspaces":{"post":{"operationId":"v1WorkspacesCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create workspace","tags":["v1"]}},"/v1/workspaces/teams/{teamUid}/roles":{"get":{"operationId":"v1TeamsWorkspaceGetRoles","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1WorkspaceScopeRoles"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified team's workspaces and roles data","tags":["v1"]},"parameters":[{"in":"path","name":"teamUid","required":true,"type":"string"}],"put":{"operationId":"v1TeamsWorkspaceRolesPut","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1WorkspacesRolesPatch"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the workspace roles for the specified team","tags":["v1"]}},"/v1/workspaces/users/{userUid}/roles":{"get":{"description":"Returns a User with workspaces and roles","operationId":"v1UsersWorkspaceGetRoles","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1WorkspaceScopeRoles"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified User workspaces and Roles information","tags":["v1"]},"parameters":[{"in":"path","name":"userUid","required":true,"type":"string"}],"put":{"description":"User is updated with workspace roles","operationId":"v1UsersWorkspaceRolesPut","parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/v1WorkspacesRolesPatch"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the workspace roles for user","tags":["v1"]}},"/v1/workspaces/validate/name":{"get":{"operationId":"v1WorkspacesValidateName","parameters":[{"in":"query","name":"name","required":true,"type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"Ok response without content","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Validates the workspace name","tags":["v1"]}},"/v1/workspaces/{uid}":{"delete":{"operationId":"v1WorkspacesUidDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified workspace","tags":["v1"]},"get":{"operationId":"v1WorkspacesUidGet","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1Workspace"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the specified workspace","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/workspaces/{uid}/backup":{"delete":{"operationId":"v1WorkspaceOpsBackupDelete","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceBackupDeleteEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Delete workspace backup","tags":["v1"]},"get":{"operationId":"v1WorkspaceOpsBackupGet","parameters":[{"in":"query","name":"backupRequestUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1WorkspaceBackup"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the workspace backup result","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1WorkspaceOpsBackupCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceBackupConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create workspace backup settings","tags":["v1"]},"put":{"operationId":"v1WorkspaceOpsBackupUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceBackupConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Update workspace backup settings","tags":["v1"]}},"/v1/workspaces/{uid}/backup/onDemand":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1WorkspaceOpsBackupOnDemandCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceBackupConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create On demand Workspace Backup","tags":["v1"]}},"/v1/workspaces/{uid}/clusterNamespaces":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1WorkspacesUidClusterNamespacesUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceClusterNamespacesEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified workspace namespaces","tags":["v1"]}},"/v1/workspaces/{uid}/clusterRbacs":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1WorkspacesClusterRbacCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterRbac"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create cluster rbac in workspace","tags":["v1"]}},"/v1/workspaces/{uid}/clusterRbacs/{clusterRbacUid}":{"delete":{"operationId":"v1WorkspacesUidClusterRbacDelete","parameters":[{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was deleted successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Deletes the specified workspace cluster rbac","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"},{"in":"path","name":"clusterRbacUid","required":true,"type":"string"}],"put":{"operationId":"v1WorkspacesUidClusterRbacUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ClusterRbac"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified workspace cluster rbac","tags":["v1"]}},"/v1/workspaces/{uid}/meta":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"operationId":"v1WorkspacesUidMetaUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1ObjectMeta"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified workspace meta","tags":["v1"]}},"/v1/workspaces/{uid}/resourceAllocations":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"put":{"description":"Deprecated","operationId":"v1WorkspacesUidResourceAllocationsUpdate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceResourceAllocationsEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"204":{"description":"The resource was updated successfully"}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Updates the specified workspace resource allocations","tags":["v1"]}},"/v1/workspaces/{uid}/restore":{"get":{"operationId":"v1WorkspaceOpsRestoreGet","parameters":[{"in":"query","name":"restoreRequestUid","type":"string"},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1WorkspaceRestore"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Returns the workspace restore result","tags":["v1"]},"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}]},"/v1/workspaces/{uid}/restore/onDemand":{"parameters":[{"in":"path","name":"uid","required":true,"type":"string"}],"post":{"operationId":"v1WorkspaceOpsRestoreOnDemandCreate","parameters":[{"in":"body","name":"body","schema":{"$ref":"#/definitions/v1WorkspaceRestoreConfigEntity"}},{"description":"Scope the request to the specified project uid","in":"header","name":"ProjectUid","type":"string"}],"responses":{"201":{"description":"Created successfully","headers":{"AuditUid":{"description":"Audit uid for the request","type":"string"}},"schema":{"$ref":"#/definitions/v1Uid"}}},"security":[{"ApiKey":[]},{"Authorization":[]}],"summary":"Create On demand Workspace Restore","tags":["v1"]}}},"produces":["application/json"],"schemes":["http","https"],"securityDefinitions":{"ApiKey":{"description":"API key authorization where API key can be generated from Palette console under Profile \u003e My API Keys","in":"header","name":"ApiKey","type":"apiKey"},"Authorization":{"description":"JWT token authorization obtained using /v1/auth/authenticate api","in":"header","name":"Authorization","type":"apiKey"}},"swagger":"2.0"} \ No newline at end of file +{ + "consumes": [ + "application/json" + ], + "definitions": { + "URLEncodedBase64": { + "format": "url-encoded-base64", + "type": "string" + }, + "V1AwsAccountSts": { + "description": "AWS cloud account sts", + "properties": { + "accountId": { + "description": "A 12-digit number, such as 123456789012, that uniquely identifies an AWS account", + "type": "string" + }, + "externalId": { + "description": "It can be passed to the AssumeRole API of the STS. It can be used in the condition element in a role's trust policy, allowing the role to be assumed only when a certain value is present in the external ID", + "type": "string" + }, + "partition": { + "$ref": "#/definitions/v1AwsPartition" + } + }, + "type": "object" + }, + "V1AwsPropertiesValidateSpec": { + "description": "AWS properties validate spec", + "properties": { + "cloudAccountUid": { + "type": "string" + }, + "region": { + "type": "string" + }, + "sshKeyName": { + "type": "string" + } + }, + "type": "object" + }, + "V1EksPropertiesValidateSpec": { + "description": "Eks properties validate spec", + "properties": { + "cloudAccountUid": { + "type": "string" + }, + "name": { + "type": "string" + }, + "region": { + "type": "string" + }, + "sshKeyName": { + "type": "string" + }, + "subnets": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vpcId": { + "type": "string" + } + }, + "type": "object" + }, + "V1GcpPropertiesValidateSpec": { + "description": "Gcp properties validate spec", + "properties": { + "azs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "cloudAccountUid": { + "type": "string" + }, + "projectId": { + "type": "string" + }, + "region": { + "type": "string" + } + }, + "type": "object" + }, + "V1PasswordsBlockList": { + "description": "List of blocklisted passwords", + "properties": { + "spec": { + "$ref": "#/definitions/v1PasswordsBlockListEntity" + } + }, + "type": "object" + }, + "urlEncodedBase64": { + "format": "url-encoded-base64", + "type": "string" + }, + "v1.AzureAccountEntitySpec": { + "properties": { + "clientCloud": { + "default": "public", + "description": "Contains configuration for Azure cloud", + "enum": [ + "azure-china", + "azure-government", + "public" + ], + "type": "string" + }, + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "subscriptionId": { + "type": "string" + }, + "tenantId": { + "type": "string" + } + }, + "type": "object" + }, + "v1.CloudWatchConfig": { + "description": "Cloud watch config entity", + "properties": { + "credentials": { + "$ref": "#/definitions/v1AwsCloudAccount" + }, + "group": { + "description": "Name of the group", + "type": "string" + }, + "region": { + "description": "Name of the region", + "type": "string" + }, + "stream": { + "description": "Name of the stream", + "type": "string" + } + }, + "type": "object" + }, + "v1.DataSinkCloudWatchConfig": { + "description": "Data sink cloud watch config", + "properties": { + "payload": { + "$ref": "#/definitions/v1.DataSinkPayloads" + }, + "spec": { + "$ref": "#/definitions/v1.CloudWatchConfig" + } + }, + "type": "object" + }, + "v1.DataSinkPayload": { + "additionalProperties": { + "type": "object" + }, + "description": "Data sink payload entity", + "properties": { + "refUid": { + "description": "RefUid of the data sink payload", + "type": "string" + }, + "timestamp": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1.DataSinkPayloads": { + "description": "List of data sink payload entities", + "items": { + "$ref": "#/definitions/v1.DataSinkPayload" + }, + "type": "array", + "uniqueItems": true + }, + "v1.GcpAccountEntitySpec": { + "properties": { + "jsonCredentials": { + "type": "string" + }, + "jsonCredentialsFileUid": { + "type": "string" + } + }, + "type": "object" + }, + "v1AADProfile": { + "description": "AADProfile - AAD integration is managed by AKS.", + "properties": { + "adminGroupObjectIDs": { + "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.", + "items": { + "type": "string" + }, + "type": "array" + }, + "managed": { + "description": "Managed - Whether to enable managed AAD.", + "type": "boolean", + "x-omitempty": false + } + }, + "required": [ + "managed", + "adminGroupObjectIDs" + ], + "type": "object" + }, + "v1APIEndpoint": { + "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", + "properties": { + "host": { + "description": "The hostname on which the API server is serving.", + "type": "string" + }, + "port": { + "description": "The port on which the API server is serving.", + "format": "int32", + "type": "integer" + } + }, + "required": [ + "host", + "port" + ], + "type": "object" + }, + "v1APIServerAccessProfile": { + "description": "APIServerAccessProfile - access profile for AKS API server.", + "properties": { + "authorizedIPRanges": { + "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.", + "items": { + "default": "", + "type": "string" + }, + "type": "array" + }, + "enablePrivateCluster": { + "description": "EnablePrivateCluster - Whether to create the cluster as a private cluster or not.", + "type": "boolean" + }, + "enablePrivateClusterPublicFQDN": { + "description": "EnablePrivateClusterPublicFQDN - Whether to create additional public FQDN for private cluster or not.", + "type": "boolean" + }, + "privateDNSZone": { + "description": "PrivateDNSZone - Private dns zone mode for private cluster.", + "type": "string" + } + }, + "type": "object" + }, + "v1AWSVolumeTypes": { + "description": "AWS Volume Types", + "properties": { + "volumeTypes": { + "items": { + "$ref": "#/definitions/v1AwsVolumeType" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AclMeta": { + "description": "Resource access control information (Read-only response data)", + "properties": { + "ownerUid": { + "description": "User or service uid which created the resource", + "type": "string" + }, + "projectUid": { + "description": "Project's uid if the resource is under a project", + "type": "string" + }, + "tenantUid": { + "description": "Tenant's uid", + "type": "string" + } + }, + "type": "object" + }, + "v1ActiveTenantResources": { + "description": "Active resources of tenant", + "properties": { + "activeResources": { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": "object" + } + }, + "type": "object" + }, + "v1Address": { + "description": "Tenant Address", + "properties": { + "addressLine1": { + "type": "string" + }, + "addressLine2": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "pincode": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1Alert": { + "properties": { + "channels": { + "items": { + "$ref": "#/definitions/v1Channel" + }, + "type": "array" + }, + "component": { + "type": "string" + } + }, + "type": "object" + }, + "v1AlertEntity": { + "properties": { + "channels": { + "items": { + "$ref": "#/definitions/v1Channel" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AlertNotificationStatus": { + "properties": { + "isSucceeded": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "time": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1Alerts": { + "items": { + "$ref": "#/definitions/v1Alert" + }, + "type": "array" + }, + "v1ApiEndpoint": { + "description": "APIEndpoint represents a reachable Kubernetes API endpoint.", + "properties": { + "host": { + "description": "The hostname on which the API server is serving.", + "type": "string" + }, + "port": { + "description": "The port on which the API server is serving.", + "format": "int32", + "type": "integer" + } + }, + "required": [ + "host", + "port" + ], + "type": "object" + }, + "v1ApiKey": { + "description": "API key information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ApiKeySpec" + }, + "status": { + "$ref": "#/definitions/v1ApiKeyStatus" + } + }, + "type": "object" + }, + "v1ApiKeyActiveState": { + "properties": { + "isActive": { + "description": "API key active state", + "type": "boolean" + } + } + }, + "v1ApiKeyCreateResponse": { + "description": "Response of create API key", + "properties": { + "apiKey": { + "description": "Api key is used for authentication", + "type": "string" + }, + "uid": { + "description": "User uid", + "type": "string" + } + }, + "type": "object" + }, + "v1ApiKeyEntity": { + "description": "API key request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ApiKeySpecEntity" + } + }, + "type": "object" + }, + "v1ApiKeySpec": { + "description": "API key specification", + "properties": { + "expiry": { + "$ref": "#/definitions/v1Time", + "description": "API key expiry date" + }, + "key": { + "description": "Deprecated: API key field will be no longer available", + "type": "string" + }, + "user": { + "$ref": "#/definitions/v1ApiKeyUser", + "description": "User to whom the API key is created" + } + }, + "type": "object" + }, + "v1ApiKeySpecEntity": { + "description": "API key specification", + "properties": { + "expiry": { + "$ref": "#/definitions/v1Time", + "description": "API key expiry date" + }, + "userUid": { + "description": "User to whom the API key has to be created", + "type": "string" + } + }, + "type": "object" + }, + "v1ApiKeySpecUpdate": { + "description": "API key update request specification", + "properties": { + "expiry": { + "$ref": "#/definitions/v1Time", + "description": "API key expiry date" + } + } + }, + "v1ApiKeyStatus": { + "description": "API key status", + "properties": { + "isActive": { + "description": "API key active state", + "type": "boolean" + } + }, + "type": "object" + }, + "v1ApiKeyUpdate": { + "description": "API key update request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ApiKeySpecUpdate" + } + }, + "type": "object" + }, + "v1ApiKeyUser": { + "description": "API key user information", + "properties": { + "firstName": { + "description": "First name of user", + "type": "string" + }, + "lastName": { + "description": "Last name of user", + "type": "string" + }, + "uid": { + "description": "User uid", + "type": "string" + } + }, + "type": "object" + }, + "v1ApiKeys": { + "properties": { + "items": { + "description": "List of API keys", + "items": { + "$ref": "#/definitions/v1ApiKey" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1ApiProfiler": { + "properties": { + "api": { + "type": "string" + }, + "endTime": { + "format": "date-time", + "type": "string" + }, + "ops": { + "items": { + "type": "string" + }, + "type": "array" + }, + "requestUid": { + "type": "string" + }, + "startTime": { + "format": "date-time", + "type": "string" + }, + "timeTaken": { + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "v1AppDeployment": { + "description": "Application deployment response", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1AppDeploymentSpec" + }, + "status": { + "$ref": "#/definitions/v1AppDeploymentStatus" + } + }, + "type": "object" + }, + "v1AppDeploymentClusterGroupConfigEntity": { + "description": "Application deployment cluster group config", + "properties": { + "targetSpec": { + "$ref": "#/definitions/v1AppDeploymentClusterGroupTargetSpec" + } + }, + "type": "object" + }, + "v1AppDeploymentClusterGroupEntity": { + "description": "Application deployment cluster group request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "$ref": "#/definitions/v1AppDeploymentClusterGroupSpec" + } + }, + "type": "object" + }, + "v1AppDeploymentClusterGroupSpec": { + "description": "Application deployment cluster group spec", + "properties": { + "config": { + "$ref": "#/definitions/v1AppDeploymentClusterGroupConfigEntity" + }, + "profile": { + "$ref": "#/definitions/v1AppDeploymentProfileEntity" + } + }, + "type": "object" + }, + "v1AppDeploymentClusterGroupTargetSpec": { + "description": "Application deployment cluster group target spec", + "properties": { + "clusterGroupUid": { + "description": "Application deployment cluster group uid", + "type": "string" + }, + "clusterLimits": { + "$ref": "#/definitions/v1AppDeploymentTargetClusterLimits" + }, + "clusterName": { + "description": "Application deployment virtual cluster name", + "type": "string" + } + }, + "required": [ + "clusterName", + "clusterGroupUid" + ], + "type": "object" + }, + "v1AppDeploymentClusterHealth": { + "description": "Application deployment cluster health status", + "properties": { + "state": { + "type": "string" + } + } + }, + "v1AppDeploymentClusterRef": { + "description": "Application deployment cluster reference", + "properties": { + "deploymentClusterType": { + "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]", + "enum": [ + "virtual", + "host" + ], + "type": "string" + }, + "name": { + "description": "Application deployment cluster name", + "type": "string" + }, + "uid": { + "description": "Application deployment cluster uid", + "type": "string" + } + }, + "type": "object" + }, + "v1AppDeploymentClusterRefSummary": { + "description": "Application deployment cluster reference", + "properties": { + "deploymentClusterType": { + "description": "Application deployment source cluster type[ \"virtualCluster\", \"hostCluster\" ]", + "enum": [ + "virtual", + "host" + ], + "type": "string" + }, + "name": { + "description": "Application deployment source cluster name", + "type": "string" + }, + "uid": { + "description": "Application deployment source cluster uid", + "type": "string" + } + } + }, + "v1AppDeploymentClusterStatus": { + "description": "Application deployment cluster status", + "properties": { + "health": { + "$ref": "#/definitions/v1AppDeploymentClusterHealth" + }, + "state": { + "type": "string" + } + } + }, + "v1AppDeploymentConfig": { + "description": "Application deployment config response", + "properties": { + "target": { + "$ref": "#/definitions/v1AppDeploymentTargetConfig" + } + }, + "type": "object" + }, + "v1AppDeploymentConfigSummary": { + "description": "Application deployment config summary", + "properties": { + "target": { + "$ref": "#/definitions/v1AppDeploymentTargetConfigSummary" + } + } + }, + "v1AppDeploymentFilterSpec": { + "description": "Application deployment filter spec", + "properties": { + "appDeploymentName": { + "$ref": "#/definitions/v1FilterString" + }, + "clusterUids": { + "$ref": "#/definitions/v1FilterArray" + }, + "tags": { + "$ref": "#/definitions/v1FilterArray" + } + } + }, + "v1AppDeploymentNotifications": { + "description": "Application deployment notifications", + "properties": { + "isAvailable": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1AppDeploymentProfile": { + "description": "Application deployment profile", + "properties": { + "metadata": { + "$ref": "#/definitions/v1AppDeploymentProfileMeta" + }, + "template": { + "$ref": "#/definitions/v1AppProfileTemplate" + } + }, + "type": "object" + }, + "v1AppDeploymentProfileEntity": { + "description": "Application deployment profile request payload", + "properties": { + "appProfileUid": { + "description": "Application deployment profile uid", + "type": "string" + } + }, + "required": [ + "appProfileUid" + ], + "type": "object" + }, + "v1AppDeploymentProfileMeta": { + "description": "Application deployment profile metadata", + "properties": { + "name": { + "description": "Application deployment profile name", + "type": "string" + }, + "uid": { + "description": "Application deployment profile uid", + "type": "string" + }, + "version": { + "description": "Application deployment profile version", + "type": "string" + } + }, + "type": "object" + }, + "v1AppDeploymentProfileMetadataSummary": { + "description": "Application deployment profile metadata summary", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "v1AppDeploymentProfileSpec": { + "description": "Application deployment profile spec", + "properties": { + "metadata": { + "$ref": "#/definitions/v1AppDeploymentProfileMeta" + }, + "template": { + "$ref": "#/definitions/v1AppProfileTemplateSpec" + } + }, + "type": "object" + }, + "v1AppDeploymentProfileSummary": { + "description": "Application deployment profile summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1AppDeploymentProfileMetadataSummary" + }, + "template": { + "$ref": "#/definitions/v1AppProfileTemplateSummary" + } + } + }, + "v1AppDeploymentProfileVersion": { + "description": "Application deployment profile version", + "properties": { + "uid": { + "description": "Application deployment profile uid", + "type": "string" + }, + "version": { + "description": "Application deployment profile version", + "type": "string" + } + }, + "type": "object" + }, + "v1AppDeploymentProfileVersions": { + "description": "Application deployment profile versions", + "properties": { + "availableVersions": { + "description": "Application deployment profile available versions", + "items": { + "$ref": "#/definitions/v1AppDeploymentProfileVersion" + }, + "type": "array" + }, + "latestVersions": { + "description": "Application deployment profile latest versions", + "items": { + "$ref": "#/definitions/v1AppDeploymentProfileVersion" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1AppDeploymentProfileMeta" + } + }, + "type": "object" + }, + "v1AppDeploymentSortFields": { + "enum": [ + "appDeploymentName", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "type": "string", + "x-nullable": true + }, + "v1AppDeploymentSortSpec": { + "properties": { + "field": { + "$ref": "#/definitions/v1AppDeploymentSortFields" + }, + "order": { + "$ref": "#/definitions/v1SortOrder" + } + } + }, + "v1AppDeploymentSpec": { + "description": "Application deployment spec", + "properties": { + "config": { + "$ref": "#/definitions/v1AppDeploymentConfig" + }, + "profile": { + "$ref": "#/definitions/v1AppDeploymentProfile" + } + }, + "type": "object" + }, + "v1AppDeploymentStatus": { + "description": "Application deployment status", + "properties": { + "appTiers": { + "description": "Application deployment tiers", + "items": { + "$ref": "#/definitions/v1ClusterPackStatus" + }, + "type": "array" + }, + "lifecycleStatus": { + "$ref": "#/definitions/v1LifecycleStatus" + }, + "state": { + "description": "Application deployment state [ \"Pending\", \"Deploying\", \"Deployed\", \"Updating\" ]", + "type": "string" + } + }, + "type": "object" + }, + "v1AppDeploymentStatusSummary": { + "description": "Application deployment status summary", + "properties": { + "cluster": { + "$ref": "#/definitions/v1AppDeploymentClusterStatus" + }, + "notifications": { + "$ref": "#/definitions/v1AppDeploymentNotifications" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1AppDeploymentSummary": { + "description": "Application deployment summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "description": "Application deployment spec summary", + "properties": { + "config": { + "$ref": "#/definitions/v1AppDeploymentConfigSummary" + }, + "profile": { + "$ref": "#/definitions/v1AppDeploymentProfileSummary" + } + }, + "type": "object" + }, + "status": { + "$ref": "#/definitions/v1AppDeploymentStatusSummary" + } + }, + "type": "object" + }, + "v1AppDeploymentTargetClusterLimits": { + "description": "Application deployment target cluster limits", + "properties": { + "cpu": { + "description": "CPU cores", + "format": "int32", + "type": "integer" + }, + "memoryMiB": { + "description": "Memory in MiB", + "format": "int32", + "type": "integer" + }, + "storageGiB": { + "description": "Storage in GiB", + "format": "int32", + "type": "integer" + } + } + }, + "v1AppDeploymentTargetConfig": { + "description": "Application deployment target config response", + "properties": { + "clusterRef": { + "$ref": "#/definitions/v1AppDeploymentClusterRef" + }, + "envRef": { + "$ref": "#/definitions/v1AppDeploymentTargetEnvironmentRef" + } + }, + "type": "object" + }, + "v1AppDeploymentTargetConfigSummary": { + "description": "Application deployment target config summary", + "properties": { + "clusterRef": { + "$ref": "#/definitions/v1AppDeploymentClusterRefSummary" + } + } + }, + "v1AppDeploymentTargetEnvironmentRef": { + "description": "Application deployment target environment reference", + "properties": { + "name": { + "description": "Application deployment target resource name", + "type": "string" + }, + "type": { + "description": "Application deployment target resource type [ \"nestedCluster\", \"clusterGroup\" ]", + "type": "string" + }, + "uid": { + "description": "Application deployment target resource uid", + "type": "string" + } + }, + "type": "object" + }, + "v1AppDeploymentVirtualClusterConfigEntity": { + "description": "Application deployment virtual cluster config", + "properties": { + "targetSpec": { + "$ref": "#/definitions/v1AppDeploymentVirtualClusterTargetSpec" + } + }, + "type": "object" + }, + "v1AppDeploymentVirtualClusterEntity": { + "description": "Application deployment virtual cluster request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "$ref": "#/definitions/v1AppDeploymentVirtualClusterSpec" + } + }, + "type": "object" + }, + "v1AppDeploymentVirtualClusterSpec": { + "description": "Application deployment virtual cluster spec", + "properties": { + "config": { + "$ref": "#/definitions/v1AppDeploymentVirtualClusterConfigEntity" + }, + "profile": { + "$ref": "#/definitions/v1AppDeploymentProfileEntity" + } + }, + "type": "object" + }, + "v1AppDeploymentVirtualClusterTargetSpec": { + "description": "Application deployment virtual cluster target spec", + "properties": { + "clusterUid": { + "description": "Application deployment virtual cluster uid", + "type": "string" + } + }, + "required": [ + "clusterUid" + ], + "type": "object" + }, + "v1AppDeploymentsFilterSpec": { + "description": "Application deployment filter summary spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1AppDeploymentFilterSpec" + }, + "sort": { + "items": { + "$ref": "#/definitions/v1AppDeploymentSortSpec" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1AppDeploymentsSummary": { + "properties": { + "appDeployments": { + "items": { + "$ref": "#/definitions/v1AppDeploymentSummary" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "type": "object" + }, + "v1AppFeatureFreemium": { + "description": "Freemium information", + "properties": { + "activeClustersLimit": { + "type": "integer", + "x-omitempty": false + }, + "isFreemium": { + "type": "boolean", + "x-omitempty": false + }, + "overageUsageLimit": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "totalUsageLimit": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + } + }, + "v1AppFeatures": { + "description": "System app features", + "properties": { + "developerCredit": { + "$ref": "#/definitions/v1DeveloperCredit" + }, + "freeCloudCredit": { + "type": "boolean", + "x-omitempty": false + }, + "freemium": { + "$ref": "#/definitions/v1AppFeatureFreemium" + } + } + }, + "v1AppProfile": { + "description": "Application profile response", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "parentUid": { + "description": "Application profile parent profile uid", + "type": "string" + }, + "template": { + "$ref": "#/definitions/v1AppProfileTemplate" + }, + "version": { + "description": "Application profile version", + "type": "string" + }, + "versions": { + "description": "Application profile versions list", + "items": { + "$ref": "#/definitions/v1AppProfileVersion" + }, + "type": "array" + } + }, + "type": "object" + }, + "status": { + "description": "Application profile status", + "properties": { + "inUseApps": { + "description": "Application profile apps array", + "items": { + "$ref": "#/definitions/v1ObjectResReference" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1AppProfileCloneEntity": { + "description": "Application profile clone request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1AppProfileCloneMetaInputEntity" + } + }, + "type": "object" + }, + "v1AppProfileCloneMetaInputEntity": { + "description": "Application profile clone metadata", + "properties": { + "name": { + "description": "Application profile name", + "type": "string" + }, + "target": { + "$ref": "#/definitions/v1AppProfileCloneTarget" + }, + "version": { + "description": "Application profile version", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1AppProfileCloneTarget": { + "description": "Application profile clone target", + "properties": { + "projectUid": { + "description": "Application profile clone target project uid", + "type": "string" + } + }, + "type": "object" + }, + "v1AppProfileEntity": { + "description": "Application profile request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "description": "Application profile spec", + "properties": { + "template": { + "$ref": "#/definitions/v1AppProfileTemplateEntity" + }, + "version": { + "description": "Application profile version", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1AppProfileFilterSpec": { + "description": "Application profile filter spec", + "properties": { + "profileName": { + "$ref": "#/definitions/v1FilterString" + }, + "tags": { + "$ref": "#/definitions/v1FilterArray" + }, + "version": { + "$ref": "#/definitions/v1FilterVersionString" + } + } + }, + "v1AppProfileMetaEntity": { + "description": "Application profile metadata request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1AppProfileMetaUpdateEntity" + }, + "version": { + "description": "Application profile version", + "type": "string" + } + }, + "required": [ + "metadata" + ], + "type": "object" + }, + "v1AppProfileMetaUpdateEntity": { + "description": "Application profile metadata update request payload", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Application profile annotations", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Application profile labels", + "type": "object" + } + }, + "type": "object" + }, + "v1AppProfileMetadata": { + "description": "Application profile metadata summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectEntity" + }, + "spec": { + "properties": { + "version": { + "type": "string" + } + } + } + }, + "type": "object" + }, + "v1AppProfileSortFields": { + "enum": [ + "profileName", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "type": "string", + "x-nullable": true + }, + "v1AppProfileSortSpec": { + "properties": { + "field": { + "$ref": "#/definitions/v1AppProfileSortFields" + }, + "order": { + "$ref": "#/definitions/v1SortOrder" + } + } + }, + "v1AppProfileSummary": { + "description": "Application profile summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "description": "Application profile spec summary", + "properties": { + "parentUid": { + "type": "string" + }, + "template": { + "$ref": "#/definitions/v1AppProfileTemplateSummary" + }, + "version": { + "type": "string" + }, + "versions": { + "description": "Application profile's list of all the versions", + "items": { + "$ref": "#/definitions/v1AppProfileVersion" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1AppProfileTemplate": { + "description": "Application profile template information", + "properties": { + "appTiers": { + "description": "Application profile tiers", + "items": { + "$ref": "#/definitions/v1AppTierRef" + }, + "type": "array", + "uniqueItems": true + }, + "registryRefs": { + "description": "Application profile registries reference", + "items": { + "$ref": "#/definitions/v1ObjectReference" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AppProfileTemplateEntity": { + "description": "Application profile template spec", + "properties": { + "appTiers": { + "description": "Application profile tiers", + "items": { + "$ref": "#/definitions/v1AppTierEntity" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1AppProfileTemplateSpec": { + "description": "Application profile template specs", + "properties": { + "appTiers": { + "description": "Application profile tiers", + "items": { + "$ref": "#/definitions/v1AppTier" + }, + "type": "array", + "uniqueItems": true + }, + "registryRefs": { + "description": "Application profile registries reference", + "items": { + "$ref": "#/definitions/v1ObjectReference" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AppProfileTemplateSummary": { + "description": "Application profile template summary", + "properties": { + "appTiers": { + "items": { + "$ref": "#/definitions/v1AppTierSummary" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AppProfileTiers": { + "description": "Application profile tiers information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1AppProfileTiersSpec" + } + }, + "type": "object" + }, + "v1AppProfileTiersSpec": { + "description": "Application profile tiers information", + "properties": { + "appTiers": { + "description": "Application profile tiers", + "items": { + "$ref": "#/definitions/v1AppTier" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1AppProfileVersion": { + "description": "Application profile version", + "properties": { + "uid": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1AppProfilesFilterSpec": { + "description": "Application profile filter summary spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1AppProfileFilterSpec" + }, + "sort": { + "items": { + "$ref": "#/definitions/v1AppProfileSortSpec" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1AppProfilesMetadata": { + "properties": { + "appProfiles": { + "items": { + "$ref": "#/definitions/v1AppProfileMetadata" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1AppProfilesSummary": { + "properties": { + "appProfiles": { + "items": { + "$ref": "#/definitions/v1AppProfileSummary" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "type": "object" + }, + "v1AppTier": { + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1AppTierSpec" + } + } + }, + "v1AppTierEntity": { + "description": "Application tier request payload", + "properties": { + "containerRegistryUid": { + "description": "Application tier container registry uid", + "type": "string" + }, + "installOrder": { + "description": "Application tier installation order", + "format": "int32", + "type": "integer" + }, + "manifests": { + "description": "Application tier manifests", + "items": { + "$ref": "#/definitions/v1ManifestInputEntity" + }, + "type": "array" + }, + "name": { + "description": "Application tier name", + "type": "string" + }, + "properties": { + "description": "Application tier properties", + "items": { + "$ref": "#/definitions/v1AppTierPropertyEntity" + }, + "type": "array" + }, + "registryUid": { + "description": "Application tier registry uid", + "type": "string" + }, + "sourceAppTierUid": { + "description": "Application tier source pack uid", + "type": "string" + }, + "type": { + "$ref": "#/definitions/v1AppTierType" + }, + "values": { + "description": "Application tier configuration values in yaml format", + "type": "string" + }, + "version": { + "description": "Application tier version", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1AppTierManifests": { + "description": "Application tier manifests data", + "properties": { + "manifests": { + "description": "Application tier manifests array", + "items": { + "$ref": "#/definitions/v1Manifest" + }, + "type": "array" + } + } + }, + "v1AppTierPatchEntity": { + "description": "Application tier patch request payload", + "properties": { + "appTier": { + "$ref": "#/definitions/v1AppTierEntity" + }, + "replaceWithAppTier": { + "description": "Application tier UID to be replaced with new tier", + "type": "string" + } + } + }, + "v1AppTierProperty": { + "description": "Application tier property object", + "properties": { + "format": { + "description": "Application tier property format", + "type": "string" + }, + "name": { + "description": "Application tier property name", + "type": "string" + }, + "type": { + "description": "Application tier property data type", + "type": "string" + }, + "value": { + "description": "Application tier property value", + "type": "string" + } + } + }, + "v1AppTierPropertyEntity": { + "description": "Application tier property object", + "properties": { + "name": { + "description": "Application tier property name", + "type": "string" + }, + "value": { + "description": "Application tier property value", + "type": "string" + } + } + }, + "v1AppTierRef": { + "description": "Application tier reference", + "properties": { + "name": { + "description": "Application tier name", + "type": "string" + }, + "type": { + "$ref": "#/definitions/v1AppTierType" + }, + "uid": { + "description": "Application tier uid to uniquely identify the tier", + "type": "string" + }, + "version": { + "description": "Application tier version", + "type": "string" + } + }, + "type": "object" + }, + "v1AppTierResolvedValues": { + "description": "Application tier resolved macro values", + "properties": { + "resolved": { + "additionalProperties": { + "type": "string" + }, + "description": "Application tier resolved macro values map", + "type": "object" + } + } + }, + "v1AppTierSourceSummary": { + "description": "Application profile's tier source information", + "properties": { + "addonSubType": { + "type": "string" + }, + "addonType": { + "type": "string" + }, + "logoUrl": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "v1AppTierSpec": { + "description": "Application tier specs", + "properties": { + "containerRegistryUid": { + "description": "Application tier container registry uid", + "type": "string" + }, + "installOrder": { + "description": "Application tier installation order", + "format": "int32", + "type": "integer" + }, + "manifests": { + "description": "Application tier attached manifest content in yaml format", + "items": { + "$ref": "#/definitions/v1ObjectReference" + }, + "type": "array" + }, + "properties": { + "description": "Application tier properties", + "items": { + "$ref": "#/definitions/v1AppTierProperty" + }, + "type": "array" + }, + "registryUid": { + "description": "Registry uid", + "type": "string" + }, + "sourceAppTierUid": { + "description": "Application tier source pack uid", + "type": "string" + }, + "type": { + "$ref": "#/definitions/v1AppTierType", + "description": "Application tier type" + }, + "values": { + "description": "Application tier configuration values in yaml format", + "type": "string" + }, + "version": { + "description": "Application tier version", + "type": "string" + } + }, + "type": "object" + }, + "v1AppTierSummary": { + "description": "Application profile's tier summary", + "properties": { + "name": { + "type": "string" + }, + "source": { + "$ref": "#/definitions/v1AppTierSourceSummary" + }, + "type": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "v1AppTierType": { + "default": "manifest", + "enum": [ + "manifest", + "helm", + "operator-instance", + "container" + ], + "type": "string" + }, + "v1AppTierUpdateEntity": { + "description": "Application tier update request payload", + "properties": { + "containerRegistryUid": { + "description": "Application tier container registry uid", + "type": "string" + }, + "installOrder": { + "description": "Application tier installation order", + "format": "int32", + "type": "integer" + }, + "manifests": { + "description": "Application tier manifests", + "items": { + "$ref": "#/definitions/v1ManifestRefUpdateEntity" + }, + "type": "array" + }, + "name": { + "description": "Application tier name", + "type": "string" + }, + "properties": { + "description": "Application tier properties", + "items": { + "$ref": "#/definitions/v1AppTierPropertyEntity" + }, + "type": "array" + }, + "values": { + "description": "Application tier configuration values in yaml format", + "type": "string" + }, + "version": { + "description": "Application tier version", + "type": "string" + } + }, + "type": "object" + }, + "v1AppVersion": { + "description": "spectro application management app version information", + "properties": { + "intermediateVersions": { + "items": { + "$ref": "#/definitions/v1ReleaseVersion" + }, + "type": "array", + "uniqueItems": true + }, + "latestVerson": { + "$ref": "#/definitions/v1ReleaseVersion" + } + } + }, + "v1ArchType": { + "default": "amd64", + "enum": [ + "amd64", + "arm64" + ], + "type": "string" + }, + "v1AsyncOperationIdEntity": { + "description": "Async operation id", + "properties": { + "operationId": { + "description": "OperationId for a particular sync operation id", + "type": "string" + } + }, + "type": "object" + }, + "v1AsyncResult": { + "properties": { + "data": { + "type": "object" + }, + "error": { + "type": "string" + }, + "isSuccess": { + "type": "boolean" + } + }, + "type": "object" + }, + "v1AsyncStatus": { + "properties": { + "endTime": { + "$ref": "#/definitions/v1Time" + }, + "result": { + "$ref": "#/definitions/v1AsyncResult", + "type": "object" + }, + "stage": { + "type": "string" + }, + "startTime": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1Audit": { + "description": "Audit response payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1AuditSpec" + } + }, + "type": "object" + }, + "v1AuditActor": { + "description": "Audit actor object", + "properties": { + "actorType": { + "enum": [ + "user", + "system", + "service" + ], + "type": "string" + }, + "project": { + "$ref": "#/definitions/v1ProjectMeta" + }, + "serviceName": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/v1UserMeta" + } + } + }, + "v1AuditMsgUpdate": { + "description": "Audit user message update request payload", + "properties": { + "userMsg": { + "description": "User message", + "maxLength": 255, + "minLength": 3, + "type": "string" + } + }, + "type": "object" + }, + "v1AuditResourceReference": { + "description": "Audit resource reference object", + "properties": { + "kind": { + "description": "Audit resource type", + "type": "string" + }, + "label": { + "description": "Audit resource label", + "type": "string" + }, + "name": { + "description": "Audit resource name", + "type": "string" + }, + "uid": { + "description": "Audit resource uid", + "type": "string" + } + }, + "required": [ + "uid" + ], + "type": "object" + }, + "v1AuditSpec": { + "description": "Audit specifications", + "properties": { + "actionMsg": { + "description": "Audit action message", + "type": "string" + }, + "actionType": { + "enum": [ + "create", + "update", + "delete", + "publish", + "deploy" + ], + "type": "string" + }, + "actor": { + "$ref": "#/definitions/v1AuditActor" + }, + "contentMsg": { + "description": "Audit content message", + "type": "string" + }, + "resource": { + "$ref": "#/definitions/v1AuditResourceReference" + }, + "userMsg": { + "description": "Audit user message", + "type": "string" + } + } + }, + "v1AuditSysMsg": { + "description": "Audit system message", + "properties": { + "actionMsg": { + "description": "Audit resource action message", + "type": "string" + }, + "contentMsg": { + "description": "Audit resource content message", + "type": "string" + } + }, + "type": "object" + }, + "v1Audits": { + "properties": { + "items": { + "description": "List of audit message", + "items": { + "$ref": "#/definitions/v1Audit" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1AuthAllyTokenRequest": { + "properties": { + "edgeAuthToken": { + "type": "string" + }, + "edgeHostUid": { + "type": "string" + }, + "spectroClusterUid": { + "type": "string" + } + }, + "type": "object" + }, + "v1AuthCertsGet": { + "description": "Auth certs get", + "properties": { + "caCert": { + "type": "string", + "x-omitempty": false + }, + "insecureSkipVerify": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1AuthEdgeJetKeyRequest": { + "properties": { + "edgeAuthToken": { + "type": "string" + }, + "edgeHostUid": { + "type": "string" + }, + "spectroClusterUid": { + "type": "string" + } + }, + "required": [ + "edgeAuthToken", + "edgeHostUid" + ], + "type": "object" + }, + "v1AuthJetKeyRequest": { + "properties": { + "allyAuthToken": { + "type": "string" + }, + "hostClusterUid": { + "type": "string" + } + }, + "required": [ + "allyAuthToken", + "hostClusterUid" + ], + "type": "object" + }, + "v1AuthLogin": { + "description": "Describes the credential details required for authentication", + "properties": { + "emailId": { + "description": "Describes the email id required for the user to authenticate", + "type": "string" + }, + "org": { + "description": "Describes the user's organization name to login", + "type": "string" + }, + "password": { + "description": "Describes the password required for the user to authenticate", + "format": "password", + "type": "string" + } + }, + "type": "object" + }, + "v1AuthLoginEntity": { + "description": "Auth login entity", + "properties": { + "authType": { + "enum": [ + "password", + "sso" + ], + "type": "string" + }, + "orgName": { + "type": "string" + }, + "redirectUrl": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1AuthLogins": { + "description": "Deprecated. Applicable auth logins with multiple orgs", + "properties": { + "appEnv": { + "type": "string" + }, + "authType": { + "description": "Deprecated.", + "enum": [ + "password", + "sso" + ], + "type": "string" + }, + "orgName": { + "description": "Deprecated.", + "type": "string" + }, + "orgs": { + "items": { + "$ref": "#/definitions/v1AuthLoginEntity" + }, + "type": "array" + }, + "redirectUrl": { + "description": "Deprecated.", + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1AuthMfaLoginFinishRequest": { + "properties": { + "_type": { + "type": "string" + }, + "authenticatorAttachment": { + "type": "string" + }, + "clientExtensionResults": { + "additionalProperties": { + "type": "object" + }, + "type": "object" + }, + "deviceName": { + "type": "string" + }, + "id": { + "type": "string" + }, + "rawId": { + "$ref": "#/definitions/urlEncodedBase64" + }, + "response": { + "properties": { + "authenticatorData": { + "$ref": "#/definitions/urlEncodedBase64" + }, + "clientDataJSON": { + "$ref": "#/definitions/urlEncodedBase64" + }, + "signature": { + "$ref": "#/definitions/urlEncodedBase64" + }, + "userHandle": { + "$ref": "#/definitions/urlEncodedBase64" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1AuthServiceTokenRequest": { + "properties": { + "authKey": { + "type": "string" + }, + "edgeHostUid": { + "type": "string" + }, + "hostClusterUid": { + "type": "string" + }, + "isSystem": { + "type": "boolean" + }, + "jetUid": { + "type": "string" + }, + "overlordUid": { + "type": "string" + }, + "serviceVersion": { + "type": "string" + }, + "spectroClusterUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + } + }, + "type": "object" + }, + "v1AuthServiceTokenResponse": { + "properties": { + "token": { + "type": "string" + } + }, + "type": "object" + }, + "v1AuthShellyLoginRequest": { + "properties": { + "secret": { + "type": "string" + } + }, + "type": "object" + }, + "v1AuthToken": { + "properties": { + "token": { + "type": "string" + } + }, + "type": "object" + }, + "v1AuthTokenRevoke": { + "properties": { + "tokens": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1AuthTokenSettings": { + "description": "System auth token settings", + "properties": { + "expiryTimeMinutes": { + "description": "Auth token expiry time in minutes", + "format": "int32", + "maximum": 1440, + "minimum": 15, + "type": "integer", + "x-omitempty": false + } + } + }, + "v1AwsAMI": { + "properties": { + "id": { + "type": "string" + }, + "os": { + "type": "string" + }, + "region": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1AwsAccount": { + "description": "Aws cloud account information", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the account.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1AwsCloudAccount" + }, + "status": { + "$ref": "#/definitions/v1CloudAccountStatus" + } + }, + "type": "object" + }, + "v1AwsAccounts": { + "description": "List of AWS accounts", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1AwsAccount" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1AwsAmiReference": { + "description": "AMI is the reference to the AMI from which to create the machine instance", + "properties": { + "eksOptimizedLookupType": { + "description": "EKSOptimizedLookupType If specified, will look up an EKS Optimized image in SSM Parameter store", + "enum": [ + "AmazonLinux", + "AmazonLinuxGPU" + ], + "type": "string" + }, + "id": { + "description": "ID of resource", + "type": "string" + } + }, + "type": "object" + }, + "v1AwsAvailabilityZone": { + "description": "Distinct locations within an AWS Region that are engineered to be isolated from failures in other Zones", + "properties": { + "name": { + "description": "AWS availability zone name", + "type": "string" + }, + "state": { + "description": "AWS availability zone state", + "type": "string" + }, + "zoneId": { + "description": "AWS availability zone id", + "type": "string" + } + }, + "type": "object" + }, + "v1AwsAvailabilityZones": { + "properties": { + "zones": { + "description": "List of AWS Zones", + "items": { + "$ref": "#/definitions/v1AwsAvailabilityZone" + }, + "type": "array" + } + }, + "required": [ + "zones" + ], + "type": "object" + }, + "v1AwsCloudAccount": { + "description": "AWS cloud account which includes access key and secret key in case of 'secret' credentials type. It includes policyARNS, ARN and externalId in case of sts. Partition is a group of AWS Region and Service objects", + "properties": { + "accessKey": { + "description": "AWS account access key", + "type": "string" + }, + "credentialType": { + "$ref": "#/definitions/v1AwsCloudAccountCredentialType" + }, + "partition": { + "default": "aws", + "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", + "enum": [ + "aws", + "aws-us-gov" + ], + "type": "string" + }, + "policyARNs": { + "description": "List of policy ARNs required in case of credentialType sts.", + "items": { + "type": "string" + }, + "type": "array" + }, + "secretKey": { + "description": "AWS account secret key", + "type": "string" + }, + "sts": { + "$ref": "#/definitions/v1AwsStsCredentials", + "description": "AWS STS credentials in case of credentialType sts, will be empty in case of credential type secret" + } + }, + "type": "object" + }, + "v1AwsCloudAccountCredentialType": { + "default": "secret", + "description": "Allowed Values [secret, sts]. STS type will be used for role assumption for sts type, accessKey/secretKey contains the source account, Arn is the target account.", + "enum": [ + "secret", + "sts" + ], + "type": "string" + }, + "v1AwsCloudClusterConfigEntity": { + "description": "AWS cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1AwsClusterConfig" + } + }, + "type": "object" + }, + "v1AwsCloudConfig": { + "description": "AwsCloudConfig is the Schema for the awscloudconfigs API", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1AwsCloudConfigSpec" + }, + "status": { + "$ref": "#/definitions/v1AwsCloudConfigStatus" + } + }, + "type": "object" + }, + "v1AwsCloudConfigSpec": { + "description": "AwsCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", + "properties": { + "cloudAccountRef": { + "$ref": "#/definitions/v1ObjectReference", + "description": "cloudAccountRef should point to the secret which contains AwsCloudAccount" + }, + "clusterConfig": { + "$ref": "#/definitions/v1AwsClusterConfig" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1AwsMachinePoolConfig" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AwsCloudConfigStatus": { + "description": "AwsCloudConfigStatus defines the observed state of AwsCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", + "properties": { + "ansibleRoleDigest": { + "description": "For mold controller to identify if is there any changes in Pack", + "type": "string" + }, + "conditions": { + "items": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "type": "array" + }, + "images": { + "description": "Images array items should be 1-to-1 mapping to Spec.MachinePoolConfig", + "items": { + "$ref": "#/definitions/v1AwsAMI" + }, + "type": "array" + }, + "isAddonLayer": { + "description": "addon layers present in spc", + "type": "boolean" + }, + "roleDigest": { + "additionalProperties": { + "type": "string" + }, + "description": "this map will be for ansible roles present in eack pack", + "type": "object" + }, + "sourceImageId": { + "description": "sourceImageId, it can be from packref's annotations or from pack.json", + "type": "string" + }, + "useCapiImage": { + "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", + "type": "boolean" + } + }, + "type": "object" + }, + "v1AwsCloudCostSpec": { + "description": "Aws cloud account usage cost payload spec", + "properties": { + "accountId": { + "description": "AccountId of AWS cloud cost", + "type": "string" + }, + "credentials": { + "$ref": "#/definitions/v1AwsCloudAccount" + }, + "filter": { + "$ref": "#/definitions/v1AwsCloudCostSpecFilter" + } + }, + "required": [ + "credentials" + ], + "type": "object" + }, + "v1AwsCloudCostSpecFilter": { + "description": "Aws cloud account usage cost payload filter. startTime and endTime should be within 12 months range from now.", + "properties": { + "endTime": { + "$ref": "#/definitions/v1Time" + }, + "iamUserId": { + "description": "IAM UserId of AWS account", + "type": "string" + }, + "startTime": { + "$ref": "#/definitions/v1Time" + } + }, + "required": [ + "startTime" + ], + "type": "object" + }, + "v1AwsCloudCostSummary": { + "description": "AWS cloud account usage cost summary response data", + "properties": { + "cost": { + "$ref": "#/definitions/v1AwsCloudCostSummaryCloudCost" + } + }, + "type": "object" + }, + "v1AwsCloudCostSummaryCloudCost": { + "description": "AWS cloud account usage cost summary of monthlyCosts and totalCost", + "properties": { + "monthlyCosts": { + "description": "Monthly cost of AWS cost", + "items": { + "$ref": "#/definitions/v1AwsCloudCostSummaryMonthlyCost" + }, + "type": "array" + }, + "total": { + "description": "Total cost of AWS cost", + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1AwsCloudCostSummaryMonthlyCost": { + "properties": { + "amount": { + "description": "Amount for aws cloud cost", + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "timestamp": { + "description": "Time duration for aws cloud cost", + "type": "integer" + } + }, + "type": "object" + }, + "v1AwsClusterConfig": { + "description": "Cluster level configuration for aws cloud and applicable for all the machine pools", + "properties": { + "bastionDisabled": { + "description": "Create bastion node option we have earlier supported creation of bastion by default capa seems to favour session manager against bastion node https://github.com/kubernetes-sigs/cluster-api-provider-aws/issues/947", + "type": "boolean" + }, + "controlPlaneLoadBalancer": { + "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default => \"Internet-facing\" \"Internet-facing\" => \"Internet-facing\" \"internal\" => \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"", + "type": "string" + }, + "region": { + "type": "string" + }, + "sshKeyName": { + "type": "string" + }, + "vpcId": { + "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", + "type": "string" + } + }, + "required": [ + "region" + ], + "type": "object" + }, + "v1AwsCreditAccount": { + "properties": { + "creditLimitInDollars": { + "format": "float64", + "type": "number" + }, + "loginCredentials": { + "$ref": "#/definitions/v1AwsLoginCredentials" + }, + "userCloudAccount": { + "$ref": "#/definitions/v1AwsUserCloudAccount" + } + }, + "type": "object" + }, + "v1AwsCreditAccountEntity": { + "properties": { + "creditLimitInDollars": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "creditUsedInDollars": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "loginCredentials": { + "$ref": "#/definitions/v1AwsLoginCredentials" + }, + "userCloudAccount": { + "$ref": "#/definitions/v1AwsUserCloudAccount" + } + }, + "type": "object" + }, + "v1AwsFindImageRequest": { + "description": "AWS image name and credentials", + "properties": { + "amiName": { + "description": "AWS image ami name", + "type": "string" + }, + "awsAccount": { + "$ref": "#/definitions/v1AwsCloudAccount" + } + }, + "type": "object" + }, + "v1AwsIamPolicy": { + "description": "Aws policy", + "properties": { + "arn": { + "type": "string" + }, + "policyId": { + "type": "string" + }, + "policyName": { + "type": "string" + } + }, + "type": "object" + }, + "v1AwsImage": { + "description": "AWS image name and ami", + "properties": { + "id": { + "description": "AWS image id", + "type": "string" + }, + "name": { + "description": "AWS image name", + "type": "string" + }, + "owner": { + "description": "AWS image owner id", + "type": "string" + } + }, + "type": "object" + }, + "v1AwsInstanceTypes": { + "description": "List of AWS instance types", + "properties": { + "instanceTypes": { + "items": { + "$ref": "#/definitions/v1InstanceType" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AwsKeyPairs": { + "description": "List of AWS keypairs", + "properties": { + "keyNames": { + "description": "Array of Aws Keypair names", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AwsKmsKey": { + "description": "AWS KMS Key - gives you centralized control over the cryptographic keys used to protect your data.", + "properties": { + "keyAlias": { + "description": "AWS KMS alias", + "type": "string" + }, + "keyArn": { + "description": "AWS KMS arn", + "type": "string" + }, + "keyId": { + "description": "AWS KMS keyid", + "type": "string" + } + }, + "required": [ + "keyId", + "keyArn" + ], + "type": "object" + }, + "v1AwsKmsKeyEntity": { + "description": "List of AWS Keys", + "properties": { + "awsAccountId": { + "description": "The twelve-digit account ID of the Amazon Web Services account that owns the KMS key", + "type": "string" + }, + "enabled": { + "description": "Specifies whether the KMS key is enabled.", + "type": "boolean" + }, + "keyId": { + "description": "The globally unique identifier for the KMS key", + "type": "string" + } + }, + "type": "object" + }, + "v1AwsKmsKeys": { + "description": "List of AWS Keys", + "properties": { + "kmsKeys": { + "items": { + "$ref": "#/definitions/v1AwsKmsKey" + }, + "type": "array" + } + }, + "required": [ + "kmsKeys" + ], + "type": "object" + }, + "v1AwsLaunchTemplate": { + "description": "AWSLaunchTemplate specifies the launch template to use to create the managed node group", + "properties": { + "additionalSecurityGroups": { + "description": "AdditionalSecurityGroups is an array of references to security groups that should be applied to the instances", + "items": { + "$ref": "#/definitions/v1AwsResourceReference" + }, + "type": "array", + "uniqueItems": true + }, + "ami": { + "$ref": "#/definitions/v1AwsAmiReference" + }, + "imageLookupBaseOS": { + "description": "ImageLookupBaseOS is the name of the base operating system to use for image lookup the AMI is not set", + "type": "string" + }, + "imageLookupFormat": { + "description": "ImageLookupFormat is the AMI naming format to look up the image", + "type": "string" + }, + "imageLookupOrg": { + "description": "ImageLookupOrg is the AWS Organization ID to use for image lookup if AMI is not set", + "type": "string" + }, + "rootVolume": { + "$ref": "#/definitions/v1AwsRootVolume" + } + }, + "type": "object" + }, + "v1AwsLoginCredentials": { + "properties": { + "iamUser": { + "type": "string" + }, + "password": { + "format": "password", + "type": "string" + } + }, + "type": "object" + }, + "v1AwsMachine": { + "description": "AWS cloud VM definition", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the machine.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1AwsMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudMachineStatus" + } + }, + "type": "object" + }, + "v1AwsMachinePoolCloudConfigEntity": { + "properties": { + "additionalSecurityGroups": { + "description": "Additional Security groups", + "items": { + "$ref": "#/definitions/v1AwsResourceReference" + }, + "type": "array" + }, + "azs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "capacityType": { + "default": "on-demand", + "description": "EC2 instance capacity type", + "enum": [ + "on-demand", + "spot" + ], + "type": "string" + }, + "instanceType": { + "description": "instance type", + "type": "string" + }, + "rootDeviceSize": { + "description": "rootDeviceSize in GBs", + "format": "int64", + "maximum": 2000, + "minimum": 1, + "type": "integer" + }, + "spotMarketOptions": { + "$ref": "#/definitions/v1SpotMarketOptions", + "description": "SpotMarketOptions allows users to configure instances to be run using AWS Spot instances." + }, + "subnets": { + "items": { + "$ref": "#/definitions/v1AwsSubnetEntity" + }, + "type": "array" + } + }, + "required": [ + "instanceType" + ], + "type": "object" + }, + "v1AwsMachinePoolConfig": { + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "additionalLabels", + "type": "object" + }, + "additionalSecurityGroups": { + "description": "Additional Security groups", + "items": { + "$ref": "#/definitions/v1AwsResourceReference" + }, + "type": "array" + }, + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", + "type": "object" + }, + "azs": { + "description": "AZs is only used for dynamic placement", + "items": { + "type": "string" + }, + "type": "array" + }, + "capacityType": { + "default": "on-demand", + "description": "EC2 instance capacity type", + "enum": [ + "on-demand", + "spot" + ], + "type": "string" + }, + "instanceConfig": { + "$ref": "#/definitions/v1InstanceConfig" + }, + "instanceType": { + "description": "instance type", + "type": "string" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean", + "x-omitempty": false + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "machinePoolProperties": { + "$ref": "#/definitions/v1MachinePoolProperties" + }, + "maxSize": { + "description": "max size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "minSize": { + "description": "min size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "nodeRepaveInterval": { + "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", + "format": "int32", + "type": "integer" + }, + "rootDeviceSize": { + "description": "rootDeviceSize in GBs", + "format": "int64", + "type": "integer" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "spotMarketOptions": { + "$ref": "#/definitions/v1SpotMarketOptions", + "description": "SpotMarketOptions allows users to configure instances to be run using AWS Spot instances." + }, + "subnetIds": { + "additionalProperties": { + "type": "string" + }, + "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment", + "type": "object" + }, + "taints": { + "description": "master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array", + "uniqueItems": true + }, + "updateStrategy": { + "$ref": "#/definitions/v1UpdateStrategy", + "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean", + "x-omitempty": false + } + }, + "required": [ + "isControlPlane" + ], + "type": "object" + }, + "v1AwsMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1AwsMachinePoolCloudConfigEntity" + }, + "poolConfig": { + "$ref": "#/definitions/v1MachinePoolConfigEntity" + } + }, + "required": [ + "cloudConfig" + ], + "type": "object" + }, + "v1AwsMachineSpec": { + "description": "AWS cloud VM definition spec", + "properties": { + "additionalSecurityGroups": { + "description": "Additional Security groups", + "items": { + "$ref": "#/definitions/v1AwsResourceReference" + }, + "type": "array" + }, + "ami": { + "type": "string" + }, + "az": { + "type": "string" + }, + "dnsName": { + "type": "string" + }, + "iamProfile": { + "type": "string" + }, + "instanceType": { + "type": "string" + }, + "nics": { + "items": { + "$ref": "#/definitions/v1AwsNic" + }, + "type": "array" + }, + "phase": { + "type": "string" + }, + "sshKeyName": { + "type": "string" + }, + "subnetId": { + "type": "string" + }, + "type": { + "type": "string" + }, + "vpcId": { + "type": "string" + } + }, + "required": [ + "instanceType", + "vpcId", + "ami" + ], + "type": "object" + }, + "v1AwsMachines": { + "description": "AWS machine list", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1AwsMachine" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1AwsNic": { + "description": "AWS network interface", + "properties": { + "index": { + "format": "int8", + "type": "integer" + }, + "privateIPs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "publicIp": { + "type": "string" + } + }, + "type": "object" + }, + "v1AwsPartition": { + "default": "aws", + "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", + "enum": [ + "aws", + "aws-us-gov" + ], + "type": "string" + }, + "v1AwsPolicies": { + "properties": { + "policies": { + "items": { + "$ref": "#/definitions/v1AwsIamPolicy" + }, + "type": "array" + } + }, + "required": [ + "policies" + ], + "type": "object" + }, + "v1AwsPolicyArnsSpec": { + "description": "Aws policy ARNs spec", + "properties": { + "account": { + "$ref": "#/definitions/v1AwsCloudAccount" + }, + "policyArns": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "policyArns", + "account" + ], + "type": "object" + }, + "v1AwsRegion": { + "description": "AWS region which represents separate geographic area.", + "properties": { + "endpoint": { + "description": "AWS offer a regional endpoint that can used to make requests", + "type": "string" + }, + "name": { + "description": "Name of the AWS region", + "type": "string" + }, + "optInStatus": { + "description": "Enable your account to operate in the particular regions", + "type": "string" + } + }, + "type": "object" + }, + "v1AwsRegions": { + "properties": { + "regions": { + "description": "List of AWS regions", + "items": { + "$ref": "#/definitions/v1AwsRegion" + }, + "type": "array" + } + }, + "required": [ + "regions" + ], + "type": "object" + }, + "v1AwsResourceFilter": { + "description": "Filter is a filter used to identify an AWS resource", + "properties": { + "name": { + "description": "Name of the filter. Filter names are case-sensitive", + "type": "string" + }, + "values": { + "description": "Values includes one or more filter values. Filter values are case-sensitive", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1AwsResourceReference": { + "description": "AWSResourceReference is a reference to a specific AWS resource by ID or filters", + "properties": { + "arn": { + "description": "ARN of resource", + "type": "string" + }, + "filters": { + "description": "Filters is a set of key/value pairs used to identify a resource", + "items": { + "$ref": "#/definitions/v1AwsResourceFilter" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "description": "ID of resource", + "type": "string" + } + }, + "type": "object" + }, + "v1AwsRootVolume": { + "description": "Volume encapsulates the configuration options for the storage device.", + "properties": { + "deviceName": { + "description": "Device name", + "type": "string" + }, + "encrypted": { + "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", + "type": "boolean" + }, + "encryptionKey": { + "description": "EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN", + "type": "string" + }, + "iops": { + "description": "IOPS is the number of IOPS requested for the disk. Not applicable to all types", + "format": "int64", + "type": "integer" + }, + "throughput": { + "description": "Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.", + "format": "int64", + "type": "integer" + }, + "type": { + "description": "Type is the type of the volume (e.g. gp2, io1, etc...)", + "type": "string" + } + }, + "type": "object" + }, + "v1AwsS3BucketCredentials": { + "description": "AWS S3 Bucket credentials", + "properties": { + "bucket": { + "description": "Name of AWS S3 bucket", + "type": "string" + }, + "credentials": { + "$ref": "#/definitions/v1AwsCloudAccount" + }, + "folder": { + "description": "Name of the folder in the specified AWS S3 bucket.", + "type": "string" + }, + "region": { + "description": "Name of the available AWS region.", + "type": "string" + } + }, + "required": [ + "credentials", + "bucket", + "region" + ], + "type": "object" + }, + "v1AwsSecurityGroups": { + "properties": { + "groups": { + "items": { + "$ref": "#/definitions/v1AwsSecuritygroup" + }, + "type": "array" + } + }, + "required": [ + "groups" + ], + "type": "object" + }, + "v1AwsSecuritygroup": { + "description": "Aws security group", + "properties": { + "groupId": { + "type": "string" + }, + "groupName": { + "type": "string" + }, + "ownerId": { + "type": "string" + } + }, + "type": "object" + }, + "v1AwsStorageTypes": { + "properties": { + "storageTypes": { + "description": "List of AWS storage types", + "items": { + "$ref": "#/definitions/v1StorageType" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AwsStsCredentials": { + "description": "Aws sts credentials", + "properties": { + "arn": { + "description": "Arn for the aws sts credentials in cloud account", + "type": "string" + }, + "externalId": { + "description": "ExternalId for the aws sts credentials in cloud account", + "type": "string" + } + }, + "type": "object" + }, + "v1AwsSubnet": { + "description": "A subnet is a range of IP addresses in a AWS VPC", + "properties": { + "az": { + "description": "Every subnet can only be associated with only one Availability Zone", + "type": "string" + }, + "isPrivate": { + "description": "Is this subnet private", + "type": "boolean" + }, + "mapPublicIpOnLaunch": { + "description": "Indicates whether instances launched in this subnet receive a public IPv4 address.", + "type": "boolean", + "x-omitempty": false + }, + "name": { + "description": "Name of the subnet", + "type": "string" + }, + "subnetId": { + "description": "Id of the subnet", + "type": "string" + } + } + }, + "v1AwsSubnetEntity": { + "properties": { + "az": { + "type": "string" + }, + "id": { + "type": "string" + } + } + }, + "v1AwsUserCloudAccount": { + "properties": { + "accountId": { + "type": "string" + }, + "cloudAccount": { + "$ref": "#/definitions/v1AwsCloudAccount" + } + } + }, + "v1AwsVolumeSize": { + "description": "AWS Volume Size entity", + "properties": { + "sizeGB": { + "description": "AWS volume size", + "type": "integer" + } + }, + "type": "object" + }, + "v1AwsVolumeType": { + "description": "AWS Volume Type entity", + "properties": { + "id": { + "description": "AWS volume type id", + "type": "string" + }, + "maxIops": { + "description": "Iops through put of volume type", + "type": "string" + }, + "maxThroughPut": { + "description": "Max through put of volume type", + "type": "string" + }, + "name": { + "description": "AWS Volume Type Name", + "type": "string" + } + }, + "type": "object" + }, + "v1AwsVpc": { + "description": "A virtual network dedicated to a AWS account", + "properties": { + "cidrBlock": { + "type": "string" + }, + "name": { + "description": "Name of the virtual network", + "type": "string" + }, + "subnets": { + "description": "List of subnets associated to a AWS VPC", + "items": { + "$ref": "#/definitions/v1AwsSubnet" + }, + "type": "array" + }, + "vpcId": { + "description": "Id of the virtual network", + "type": "string" + } + }, + "required": [ + "vpcId" + ], + "type": "object" + }, + "v1AwsVpcs": { + "description": "List of AWS VPCs", + "properties": { + "vpcs": { + "items": { + "$ref": "#/definitions/v1AwsVpc" + }, + "type": "array" + } + }, + "required": [ + "vpcs" + ], + "type": "object" + }, + "v1AzValidateEntity": { + "description": "Az validate entity", + "properties": { + "azs": { + "description": "Gcp Azs", + "items": { + "type": "string" + }, + "type": "array" + }, + "project": { + "description": "Gcp project", + "type": "string" + }, + "region": { + "description": "Gcp region", + "type": "string" + }, + "uid": { + "description": "Cloud account uid", + "type": "string" + } + }, + "type": "object" + }, + "v1AzureAccount": { + "description": "Azure account information", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the account.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1AzureCloudAccount" + }, + "status": { + "$ref": "#/definitions/v1CloudAccountStatus" + } + }, + "type": "object" + }, + "v1AzureAccounts": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1AzureAccount" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1AzureAvailabilityZone": { + "description": "Azure availability zone", + "properties": { + "name": { + "description": "Azure availability zone name", + "type": "string" + } + }, + "type": "object" + }, + "v1AzureCloudAccount": { + "properties": { + "azureEnvironment": { + "default": "AzurePublicCloud", + "description": "Contains configuration for Azure cloud", + "enum": [ + "AzureChinaCloud", + "AzurePublicCloud", + "AzureUSGovernment", + "AzureUSGovernmentCloud" + ], + "type": "string" + }, + "clientId": { + "description": "Client ID(Directory ID) is a unique identifier generated by Azure AD that is tied to an application", + "type": "string" + }, + "clientSecret": { + "description": "ClientSecret is the secret associated with Client", + "type": "string" + }, + "settings": { + "$ref": "#/definitions/v1CloudAccountSettings", + "description": "Palette internal cloud settings" + }, + "tenantId": { + "description": "Tenant ID is the ID for the Azure AD tenant that the user belongs to.", + "type": "string" + }, + "tenantName": { + "description": "Tenant ID is the ID for the Azure AD tenant that the user belongs to.", + "type": "string" + } + }, + "required": [ + "tenantId", + "clientId", + "clientSecret" + ], + "type": "object" + }, + "v1AzureCloudClusterConfigEntity": { + "description": "Azure cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1AzureClusterConfig" + } + }, + "type": "object" + }, + "v1AzureCloudConfig": { + "description": "AzureCloudConfig is the Schema for the azurecloudconfigs API", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1AzureCloudConfigSpec" + }, + "status": { + "$ref": "#/definitions/v1AzureCloudConfigStatus" + } + }, + "type": "object" + }, + "v1AzureCloudConfigSpec": { + "description": "AzureCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", + "properties": { + "cloudAccountRef": { + "$ref": "#/definitions/v1ObjectReference", + "description": "cloudAccountRef should point to the secret which contains AzureCloudAccount" + }, + "clusterConfig": { + "$ref": "#/definitions/v1AzureClusterConfig" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1AzureMachinePoolConfig" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AzureCloudConfigStatus": { + "description": "AzureCloudConfigStatus defines the observed state of AzureCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", + "properties": { + "ansibleRoleDigest": { + "description": "For mold controller to identify if is there any changes in Pack", + "type": "string" + }, + "conditions": { + "description": "spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`", + "items": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "type": "array" + }, + "images": { + "$ref": "#/definitions/v1AzureImage", + "description": "Images array items should be 1-to-1 mapping to Spec.MachinePoolConfig" + }, + "isAddonLayer": { + "description": "addon layers present in spc", + "type": "boolean" + }, + "roleDigest": { + "additionalProperties": { + "type": "string" + }, + "description": "this map will be for ansible roles present in eack pack", + "type": "object" + }, + "sourceImageId": { + "description": "sourceImageId, it can be from packref's annotations or from pack.json", + "type": "string" + }, + "useCapiImage": { + "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", + "type": "boolean" + }, + "vhdImage": { + "$ref": "#/definitions/v1AzureVHDImage" + } + }, + "type": "object" + }, + "v1AzureClusterConfig": { + "description": "Cluster level configuration for Azure cloud and applicable for all the machine pools", + "properties": { + "aadProfile": { + "$ref": "#/definitions/v1AADProfile", + "description": "AadProfile is Azure Active Directory configuration to integrate with AKS for aad authentication." + }, + "apiServerAccessProfile": { + "$ref": "#/definitions/v1APIServerAccessProfile", + "description": "APIServerAccessProfile is the access profile for AKS API server." + }, + "containerName": { + "type": "string" + }, + "controlPlaneSubnet": { + "$ref": "#/definitions/v1Subnet", + "description": "Subnet for Kubernetes control-plane node" + }, + "enablePrivateCluster": { + "description": "Deprecated. use apiServerAccessProfile.enablePrivateCluster", + "type": "boolean" + }, + "infraLBConfig": { + "$ref": "#/definitions/v1InfraLBConfig", + "description": "APIServerLB is the configuration for the control-plane load balancer." + }, + "location": { + "description": "Location is the Azure datacenter location", + "type": "string" + }, + "resourceGroup": { + "type": "string" + }, + "sshKey": { + "type": "string" + }, + "storageAccountName": { + "type": "string" + }, + "subscriptionId": { + "description": "Subscription ID is unique identifier for the subscription used to access Azure services", + "type": "string" + }, + "vnetCidrBlock": { + "type": "string" + }, + "vnetName": { + "description": "VNETName is the virtual network in which the cluster is to be provisioned.", + "type": "string" + }, + "vnetResourceGroup": { + "type": "string" + }, + "workerSubnet": { + "$ref": "#/definitions/v1Subnet", + "description": "Subnet for Kubernetes worker node" + } + }, + "required": [ + "subscriptionId", + "location", + "sshKey" + ], + "type": "object" + }, + "v1AzureGroup": { + "description": "Azure group entity", + "properties": { + "id": { + "description": "Azure group id", + "type": "string" + }, + "name": { + "description": "Azure group name", + "type": "string" + } + }, + "type": "object" + }, + "v1AzureGroups": { + "description": "List of Azure groups", + "properties": { + "groups": { + "items": { + "$ref": "#/definitions/v1AzureGroup" + }, + "type": "array" + } + }, + "required": [ + "groups" + ], + "type": "object" + }, + "v1AzureImage": { + "description": "Refers to Azure Shared Gallery image", + "properties": { + "gallery": { + "type": "string" + }, + "name": { + "type": "string" + }, + "resourceGroup": { + "type": "string" + }, + "state": { + "type": "string" + }, + "subscriptionID": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1AzureInstanceTypes": { + "description": "List of Azure instance types", + "properties": { + "instanceTypes": { + "items": { + "$ref": "#/definitions/v1InstanceType" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AzureMachine": { + "description": "Azure cloud VM definition", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the machine.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1AzureMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudMachineStatus" + } + }, + "type": "object" + }, + "v1AzureMachinePoolCloudConfigEntity": { + "properties": { + "azs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "instanceType": { + "description": "Instance type stands for VMSize in Azure", + "type": "string" + }, + "isSystemNodePool": { + "description": "whether this pool is for system node Pool", + "type": "boolean" + }, + "osDisk": { + "$ref": "#/definitions/v1AzureOSDisk" + } + }, + "type": "object" + }, + "v1AzureMachinePoolConfig": { + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "additionalLabels", + "type": "object" + }, + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", + "type": "object" + }, + "azs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "instanceConfig": { + "$ref": "#/definitions/v1InstanceConfig" + }, + "instanceType": { + "description": "Instance type stands for VMSize in Azure", + "type": "string" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean", + "x-omitempty": false + }, + "isSystemNodePool": { + "description": "whether this pool is for system node Pool", + "type": "boolean", + "x-omitempty": false + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "machinePoolProperties": { + "$ref": "#/definitions/v1MachinePoolProperties" + }, + "maxSize": { + "description": "max size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "minSize": { + "description": "min size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "nodeRepaveInterval": { + "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", + "format": "int32", + "type": "integer" + }, + "osDisk": { + "$ref": "#/definitions/v1AzureOSDisk" + }, + "osType": { + "$ref": "#/definitions/v1OsType", + "type": "string" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "spotVMOptions": { + "$ref": "#/definitions/v1SpotVMOptions", + "description": "SpotVMOptions allows the ability to specify the Machine should use a Spot VM" + }, + "taints": { + "description": "master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array", + "uniqueItems": true + }, + "updateStrategy": { + "$ref": "#/definitions/v1UpdateStrategy", + "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean", + "x-omitempty": false + } + }, + "required": [ + "isControlPlane" + ], + "type": "object" + }, + "v1AzureMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1AzureMachinePoolCloudConfigEntity" + }, + "managedPoolConfig": { + "$ref": "#/definitions/v1AzureManagedMachinePoolConfig" + }, + "poolConfig": { + "$ref": "#/definitions/v1MachinePoolConfigEntity" + } + }, + "required": [ + "cloudConfig" + ], + "type": "object" + }, + "v1AzureMachineSpec": { + "description": "Azure cloud VM definition spec", + "properties": { + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "allocatePublicIP": { + "type": "boolean" + }, + "availabilityZone": { + "$ref": "#/definitions/v1AzureMachineSpecAvailabilityZone" + }, + "image": { + "$ref": "#/definitions/v1AzureMachineSpecImage" + }, + "instanceType": { + "type": "string" + }, + "location": { + "type": "string" + }, + "nics": { + "items": { + "$ref": "#/definitions/v1AzureNic" + }, + "type": "array" + }, + "osDisk": { + "$ref": "#/definitions/v1AzureOSDisk" + }, + "sshPublicKey": { + "type": "string" + } + }, + "required": [ + "instanceType", + "location", + "osDisk" + ], + "type": "object" + }, + "v1AzureMachineSpecAvailabilityZone": { + "description": "Azure Machine Spec Availability zone", + "properties": { + "enabled": { + "type": "boolean" + }, + "id": { + "type": "string" + } + }, + "type": "object" + }, + "v1AzureMachineSpecImage": { + "description": "Azure Machine Spec Image", + "properties": { + "gallery": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "offer": { + "type": "string" + }, + "publisher": { + "type": "string" + }, + "resourceGroup": { + "type": "string" + }, + "sku": { + "type": "string" + }, + "subscriptionId": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1AzureMachines": { + "description": "Azure machine list", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1AzureMachine" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1AzureManagedMachinePoolConfig": { + "properties": { + "isSystemNodePool": { + "description": "whether this pool is for system node Pool", + "type": "boolean", + "x-omitempty": false + }, + "osType": { + "$ref": "#/definitions/v1OsType", + "type": "string" + } + }, + "type": "object" + }, + "v1AzureNic": { + "description": "AWS network interface", + "properties": { + "index": { + "format": "int8", + "type": "integer" + }, + "privateIPs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "publicIp": { + "type": "string" + } + }, + "type": "object" + }, + "v1AzureOSDisk": { + "properties": { + "diskSizeGB": { + "format": "int32", + "type": "integer" + }, + "managedDisk": { + "$ref": "#/definitions/v1ManagedDisk" + }, + "osType": { + "$ref": "#/definitions/v1OsType", + "type": "string" + } + }, + "type": "object" + }, + "v1AzurePrivateDnsZone": { + "description": "Azure Private DNS zone entity", + "properties": { + "id": { + "description": "Fully qualified resource Id for the resource", + "type": "string" + }, + "location": { + "description": "The Azure Region where the resource lives", + "type": "string" + }, + "name": { + "description": "The name of the resource", + "type": "string" + } + }, + "type": "object" + }, + "v1AzurePrivateDnsZones": { + "description": "List of Azure storage accounts", + "properties": { + "privateDnsZones": { + "items": { + "$ref": "#/definitions/v1AzurePrivateDnsZone" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AzureRegion": { + "description": "Azure region entity", + "properties": { + "displayName": { + "description": "Azure region displayname", + "type": "string" + }, + "name": { + "description": "Azure region name", + "type": "string" + }, + "zones": { + "description": "List of zones associated to a particular Azure region", + "items": { + "$ref": "#/definitions/v1AzureAvailabilityZone" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AzureRegions": { + "description": "List of Azure regions", + "properties": { + "regions": { + "items": { + "$ref": "#/definitions/v1AzureRegion" + }, + "type": "array" + } + }, + "required": [ + "regions" + ], + "type": "object" + }, + "v1AzureResourceGroupList": { + "description": "List of Azure resource group", + "properties": { + "resourceGroupList": { + "items": { + "$ref": "#/definitions/v1ResourceGroup" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AzureStorageAccountEntity": { + "description": "Azure Storage Account Entity", + "properties": { + "storageAccountTypes": { + "items": { + "$ref": "#/definitions/v1StorageAccountEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AzureStorageAccounts": { + "description": "List of Azure storage accounts", + "properties": { + "accounts": { + "items": { + "$ref": "#/definitions/v1StorageAccount" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AzureStorageConfig": { + "description": "Azure storage config object", + "properties": { + "containerName": { + "description": "Azure container name", + "type": "string" + }, + "credentials": { + "$ref": "#/definitions/v1.AzureAccountEntitySpec", + "description": "Azure cloud account credentials" + }, + "resourceGroup": { + "description": "Azure resource group name, to which the storage account is mapped", + "type": "string" + }, + "sku": { + "description": "Azure sku", + "type": "string" + }, + "storageName": { + "description": "Azure storage name", + "type": "string" + } + }, + "required": [ + "resourceGroup", + "containerName", + "storageName", + "credentials" + ], + "type": "object" + }, + "v1AzureStorageContainers": { + "description": "List of Azure storage containers", + "properties": { + "containers": { + "items": { + "$ref": "#/definitions/v1StorageContainer" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AzureStorageTypes": { + "description": "List of Azure storage types", + "properties": { + "storageTypes": { + "items": { + "$ref": "#/definitions/v1StorageType" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AzureSubscriptionList": { + "description": "List of Azure subscription", + "properties": { + "subscriptionList": { + "items": { + "$ref": "#/definitions/v1Subscription" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AzureVHDImage": { + "description": "Mold always create VHD image for custom image, and this can be use as golden images", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "os": { + "type": "string" + }, + "region": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1AzureVhdUrlEntity": { + "description": "Azure vhd url entity", + "properties": { + "name": { + "description": "The name of the resource", + "type": "string" + }, + "url": { + "description": "The url of the Azure Vhd", + "type": "string" + } + }, + "type": "object" + }, + "v1AzureVirtualNetworkList": { + "description": "List of Azure virtual network", + "properties": { + "virtualNetworkList": { + "items": { + "$ref": "#/definitions/v1VirtualNetwork" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1AzureZoneEntity": { + "description": "List of Azure zone", + "properties": { + "zoneList": { + "items": { + "$ref": "#/definitions/v1ZoneEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1BackupLocationConfig": { + "description": "Backup location configuration", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "v1BackupRestoreStatusMeta": { + "description": "Backup restored status", + "properties": { + "backupName": { + "type": "string" + }, + "destinationClusterRef": { + "$ref": "#/definitions/v1ResourceReference" + }, + "restoreState": { + "type": "string" + } + } + }, + "v1BackupState": { + "description": "Backup state", + "properties": { + "backupTime": { + "$ref": "#/definitions/v1Time" + }, + "deleteState": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "v1BackupStatusConfig": { + "description": "Backup config", + "properties": { + "includeAllDisks": { + "type": "boolean" + }, + "includeClusterResources": { + "type": "boolean" + }, + "namespaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1BackupStatusMeta": { + "description": "Backup status meta", + "properties": { + "backupName": { + "type": "string" + }, + "backupState": { + "$ref": "#/definitions/v1BackupState" + }, + "backupedNamespaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "expiryDate": { + "$ref": "#/definitions/v1Time" + } + } + }, + "v1BasicOciRegistry": { + "description": "Basic oci registry information", + "properties": { + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1BasicOciRegistrySpec" + } + }, + "type": "object" + }, + "v1BasicOciRegistrySpec": { + "description": "Basic oci registry spec", + "properties": { + "auth": { + "$ref": "#/definitions/v1RegistryAuth" + }, + "baseContentPath": { + "description": "OCI registry content base path", + "type": "string" + }, + "basePath": { + "description": "OCI registry api base path", + "type": "string" + }, + "endpoint": { + "description": "OCI registry endpoint", + "type": "string" + }, + "providerType": { + "default": "helm", + "enum": [ + "helm", + "zarf", + "pack" + ], + "type": "string" + }, + "registryUid": { + "description": "Basic oci registry uid", + "type": "string" + }, + "scope": { + "type": "string" + } + }, + "required": [ + "endpoint", + "auth" + ], + "type": "object" + }, + "v1Billing": { + "description": "billing preference", + "properties": { + "billingDay": { + "type": "integer" + }, + "tierPricing": { + "$ref": "#/definitions/v1TierPrice" + } + } + }, + "v1BrokerLogin": { + "description": "Request for broker login request", + "properties": { + "subscriberSubjects": { + "description": "subjects that client need to subscribe", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1BrokerToken": { + "description": "Response for broker login request", + "properties": { + "msgCtxData": { + "additionalProperties": { + "type": "string" + }, + "description": "message context data can be used as contextual information for the message exchange" + }, + "publisherSubjects": { + "description": "subjects that client can publish", + "items": { + "type": "string" + }, + "type": "array" + }, + "subscriberSubjects": { + "description": "subjects that client has subscribed", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1BulkDeleteFailure": { + "properties": { + "errMsg": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "v1BulkDeleteRequest": { + "properties": { + "uids": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "uids" + ] + }, + "v1BulkDeleteResponse": { + "properties": { + "deletedCount": { + "type": "integer", + "x-omitempty": false + }, + "failures": { + "items": { + "$ref": "#/definitions/v1BulkDeleteFailure" + }, + "type": "array", + "uniqueItems": true, + "x-omitempty": false + }, + "isSucceeded": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string", + "x-omitempty": false + } + } + }, + "v1BulkEvents": { + "description": "Describes a list component events' details", + "items": { + "$ref": "#/definitions/v1Event" + }, + "type": "array", + "uniqueItems": true + }, + "v1CPU": { + "properties": { + "cores": { + "description": "number of cpu cores", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1CPUPassthroughSpec": { + "properties": { + "cachePassthrough": { + "type": "boolean" + }, + "isEnabled": { + "description": "Enables the CPU Passthrough for the libvirt domain", + "type": "boolean" + } + }, + "type": "object" + }, + "v1Card": { + "description": "Card details object", + "properties": { + "brand": { + "description": "Card brand", + "type": "string" + }, + "country": { + "description": "Country name the card belongs", + "type": "string" + }, + "expMonth": { + "description": "Expiry month of the card", + "format": "uint64", + "type": "number" + }, + "expYear": { + "description": "Expiry year of the card", + "format": "uint64", + "type": "number" + }, + "fingerPrint": { + "description": "Finger print", + "type": "string" + }, + "funding": { + "description": "Funding", + "type": "string" + }, + "last4": { + "description": "Last 4 digit of the card", + "type": "string" + } + } + }, + "v1Cert": { + "properties": { + "certificate": { + "type": "string", + "x-omitempty": false + }, + "isCA": { + "type": "boolean", + "x-omitempty": false + }, + "key": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1Certificate": { + "description": "Certificate details", + "properties": { + "expiry": { + "$ref": "#/definitions/v1Time", + "description": "Certificate expiry time" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1CertificateAuthority": { + "description": "Certificate Authority", + "properties": { + "certificates": { + "items": { + "$ref": "#/definitions/v1Certificate" + }, + "type": "array" + }, + "expiry": { + "$ref": "#/definitions/v1Time", + "description": "Certificate expiry time" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1Channel": { + "properties": { + "alertAllUsers": { + "type": "boolean", + "x-omitempty": false + }, + "createdBy": { + "type": "string" + }, + "http": { + "properties": { + "body": { + "type": "string" + }, + "headers": { + "additionalProperties": { + "type": "string" + } + }, + "method": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "identifiers": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "isActive": { + "type": "boolean", + "x-omitempty": false + }, + "status": { + "$ref": "#/definitions/v1AlertNotificationStatus" + }, + "type": { + "enum": [ + "email", + "app", + "http" + ], + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1CleanUpResource": { + "description": "Resources of tenant", + "properties": { + "activeResources": { + "$ref": "#/definitions/v1ActiveTenantResources" + }, + "tenantStatus": { + "$ref": "#/definitions/v1TenantCleanUpStatus" + } + }, + "type": "object" + }, + "v1CloudAccountMeta": { + "description": "Cloud account meta information", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1CloudAccountMetadata": { + "description": "Cloud account metadata summary", + "properties": { + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + } + } + }, + "v1CloudAccountSettings": { + "description": "Cloud account settings", + "properties": { + "disablePropertiesRequest": { + "description": "Will disable certain properties request to cloud and the input is collected directly from the user", + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1CloudAccountStatus": { + "description": "Status of the account", + "properties": { + "state": { + "description": "Cloud account status", + "type": "string" + } + }, + "type": "object" + }, + "v1CloudAccountSummary": { + "description": "Cloud account summary", + "properties": { + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "specSummary": { + "description": "Cloud account spec summary", + "properties": { + "accountId": { + "type": "string" + } + }, + "type": "object" + }, + "status": { + "$ref": "#/definitions/v1CloudAccountStatus" + } + }, + "type": "object" + }, + "v1CloudAccountUidEntity": { + "description": "Cloud account uid entity", + "properties": { + "uid": { + "description": "Cloud account uid", + "type": "string" + } + }, + "type": "object" + }, + "v1CloudAccountsMetadata": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1CloudAccountMetadata" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1CloudAccountsPatch": { + "items": { + "$ref": "#/definitions/v1HttpPatch" + }, + "type": "array" + }, + "v1CloudAccountsSummary": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1CloudAccountSummary" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1CloudCategory": { + "default": "cloud", + "description": "Cloud category description", + "enum": [ + "datacenter", + "cloud", + "edge" + ], + "type": "string" + }, + "v1CloudConfigMeta": { + "properties": { + "cloudType": { + "type": "string" + }, + "machinePools": { + "description": "Machine pool meta information", + "items": { + "$ref": "#/definitions/v1MachinePoolMeta" + }, + "type": "array" + }, + "uid": { + "description": "Cluster's cloud config uid", + "type": "string" + } + }, + "type": "object" + }, + "v1CloudCost": { + "description": "Cloud cost information", + "properties": { + "compute": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "storage": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "total": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1CloudCostDataPoint": { + "description": "Cloud cost data point information", + "properties": { + "compute": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "storage": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "timestamp": { + "format": "int64", + "type": "number" + }, + "total": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1CloudInstanceRateConfig": { + "description": "Cloud instance rate config", + "properties": { + "computeRateProportion": { + "format": "float", + "type": "number" + }, + "memoryRateProportion": { + "format": "float", + "type": "number" + } + } + }, + "v1CloudMachineStatus": { + "description": "cloud machine status", + "properties": { + "health": { + "$ref": "#/definitions/v1MachineHealth" + }, + "instanceState": { + "enum": [ + "Pending", + "Provisioning", + "Provisioned", + "Running", + "Deleting", + "Deleted", + "Failed", + "Unknown" + ], + "type": "string" + }, + "maintenanceStatus": { + "$ref": "#/definitions/v1MachineMaintenanceStatus" + } + }, + "type": "object" + }, + "v1CloudRate": { + "description": "Cloud estimated rate information", + "properties": { + "compute": { + "$ref": "#/definitions/v1ComputeRate" + }, + "storage": { + "items": { + "$ref": "#/definitions/v1StorageRate" + }, + "type": "array" + }, + "total": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1CloudResourceMetadata": { + "description": "Cloud resource metadata", + "properties": { + "instanceTypes": { + "additionalProperties": { + "$ref": "#/definitions/v1InstanceType" + }, + "type": "object" + }, + "storageTypes": { + "additionalProperties": { + "$ref": "#/definitions/v1StorageType" + }, + "type": "object" + } + }, + "type": "object" + }, + "v1CloudSpotPrice": { + "description": "Spot price entity of a particular cloud type", + "properties": { + "spotPrice": { + "description": "Spot price of a resource for a particular cloud", + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1CloudWatch": { + "properties": { + "credentials": { + "$ref": "#/definitions/v1AwsCloudAccount" + }, + "group": { + "type": "string" + }, + "region": { + "type": "string" + }, + "stream": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterBackup": { + "description": "Cluster Backup", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterBackupSpec" + }, + "status": { + "$ref": "#/definitions/v1ClusterBackupStatus" + } + } + }, + "v1ClusterBackupConfig": { + "description": "Cluster backup config", + "properties": { + "backupLocationName": { + "type": "string" + }, + "backupLocationUid": { + "type": "string" + }, + "backupName": { + "type": "string" + }, + "backupPrefix": { + "type": "string" + }, + "durationInHours": { + "format": "int64", + "type": "number" + }, + "includeAllDisks": { + "type": "boolean" + }, + "includeClusterResources": { + "type": "boolean" + }, + "locationType": { + "type": "string" + }, + "namespaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "schedule": { + "$ref": "#/definitions/v1ClusterFeatureSchedule" + } + } + }, + "v1ClusterBackupLocationType": { + "description": "Cluster backup location type", + "properties": { + "locationType": { + "type": "string" + } + }, + "required": [ + "locationType" + ] + }, + "v1ClusterBackupSpec": { + "description": "Cluster Backup Spec", + "properties": { + "clusterUid": { + "type": "string" + }, + "config": { + "$ref": "#/definitions/v1ClusterBackupConfig" + } + } + }, + "v1ClusterBackupStatus": { + "description": "Cluster Backup Status", + "properties": { + "clusterBackupStatuses": { + "items": { + "$ref": "#/definitions/v1ClusterBackupStatusMeta" + }, + "type": "array" + } + } + }, + "v1ClusterBackupStatusMeta": { + "description": "Cluster Backup Status Meta", + "properties": { + "actor": { + "$ref": "#/definitions/v1ClusterFeatureActor" + }, + "backupConfig": { + "$ref": "#/definitions/v1BackupStatusConfig" + }, + "backupLocationConfig": { + "$ref": "#/definitions/v1BackupLocationConfig" + }, + "backupRequestUid": { + "type": "string" + }, + "backupStatusMeta": { + "items": { + "$ref": "#/definitions/v1BackupStatusMeta" + }, + "type": "array" + }, + "restoreStatusMeta": { + "items": { + "$ref": "#/definitions/v1BackupRestoreStatusMeta" + }, + "type": "array" + }, + "state": { + "type": "string" + } + } + }, + "v1ClusterComplianceOnDemandConfig": { + "description": "Cluster compliance scan on demand configuration", + "properties": { + "kubeBench": { + "$ref": "#/definitions/v1ClusterComplianceScanKubeBenchConfig" + }, + "kubeHunter": { + "$ref": "#/definitions/v1ClusterComplianceScanKubeHunterConfig" + }, + "sonobuoy": { + "$ref": "#/definitions/v1ClusterComplianceScanSonobuoyConfig" + }, + "syft": { + "$ref": "#/definitions/v1ClusterComplianceScanSyftConfig" + } + } + }, + "v1ClusterComplianceScan": { + "description": "Cluster Compliance Scan", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterComplianceScanSpec" + } + } + }, + "v1ClusterComplianceScanKubeBenchConfig": { + "description": "Cluster compliance scan config for kube bench driver", + "properties": { + "runScan": { + "type": "boolean" + } + } + }, + "v1ClusterComplianceScanKubeBenchScheduleConfig": { + "description": "Cluster compliance scan schedule config for kube bench driver", + "properties": { + "schedule": { + "$ref": "#/definitions/v1ClusterFeatureSchedule" + } + } + }, + "v1ClusterComplianceScanKubeHunterConfig": { + "description": "Cluster compliance scan config for kube hunter driver", + "properties": { + "runScan": { + "type": "boolean" + } + } + }, + "v1ClusterComplianceScanKubeHunterScheduleConfig": { + "description": "Cluster compliance scan schedule config for kube hunter driver", + "properties": { + "schedule": { + "$ref": "#/definitions/v1ClusterFeatureSchedule" + } + } + }, + "v1ClusterComplianceScanLogSpec": { + "description": "Cluster compliance scan logs spec", + "properties": { + "clusterUid": { + "type": "string" + }, + "driverType": { + "type": "string" + } + } + }, + "v1ClusterComplianceScanLogs": { + "description": "Cluster compliance scan Logs", + "properties": { + "kubeBenchLogs": { + "items": { + "$ref": "#/definitions/v1ClusterScanLogKubeBench" + }, + "type": "array" + }, + "kubeHunterLogs": { + "items": { + "$ref": "#/definitions/v1ClusterScanLogKubeHunter" + }, + "type": "array" + }, + "sonobuoyLogs": { + "items": { + "$ref": "#/definitions/v1ClusterScanLogSonobuoy" + }, + "type": "array" + }, + "syftLogs": { + "items": { + "$ref": "#/definitions/v1ClusterScanLogSyft" + }, + "type": "array" + } + } + }, + "v1ClusterComplianceScanSonobuoyConfig": { + "description": "Cluster compliance scan config for sonobuoy driver", + "properties": { + "runScan": { + "type": "boolean" + } + } + }, + "v1ClusterComplianceScanSonobuoyScheduleConfig": { + "description": "Cluster compliance scan schedule config for sonobuoy driver", + "properties": { + "schedule": { + "$ref": "#/definitions/v1ClusterFeatureSchedule" + } + } + }, + "v1ClusterComplianceScanSpec": { + "description": "Cluster compliance scan Spec", + "properties": { + "clusterUid": { + "type": "string" + }, + "driverSpec": { + "additionalProperties": { + "$ref": "#/definitions/v1ComplianceScanDriverSpec" + }, + "type": "object" + } + } + }, + "v1ClusterComplianceScanSyftConfig": { + "description": "Cluster compliance scan config for syft driver", + "properties": { + "config": { + "$ref": "#/definitions/v1ClusterComplianceScanSyftDriverConfig" + }, + "runScan": { + "type": "boolean" + } + } + }, + "v1ClusterComplianceScanSyftDriverConfig": { + "description": "Cluster compliance scan specification", + "properties": { + "format": { + "enum": [ + "cyclonedx-json", + "github-json", + "spdx-json", + "syft-json" + ], + "type": "string" + }, + "labelSelector": { + "type": "string" + }, + "location": { + "$ref": "#/definitions/v1ObjectEntity" + }, + "namespace": { + "type": "string" + }, + "podName": { + "type": "string" + }, + "scope": { + "enum": [ + "cluster", + "namespace", + "label-selector", + "pod" + ], + "type": "string" + } + } + }, + "v1ClusterComplianceScheduleConfig": { + "description": "Cluster compliance scan schedule configuration", + "properties": { + "kubeBench": { + "$ref": "#/definitions/v1ClusterComplianceScanKubeBenchScheduleConfig" + }, + "kubeHunter": { + "$ref": "#/definitions/v1ClusterComplianceScanKubeHunterScheduleConfig" + }, + "sonobuoy": { + "$ref": "#/definitions/v1ClusterComplianceScanSonobuoyScheduleConfig" + } + } + }, + "v1ClusterCondition": { + "properties": { + "lastProbeTime": { + "$ref": "#/definitions/v1Time" + }, + "lastTransitionTime": { + "$ref": "#/definitions/v1Time" + }, + "message": { + "description": "Human-readable message indicating details about last transition.", + "type": "string" + }, + "reason": { + "description": "Unique, one-word, CamelCase reason for the condition's last transition.", + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "type", + "status" + ], + "type": "object" + }, + "v1ClusterConfig": { + "properties": { + "clusterMetaAttribute": { + "description": "ClusterMetaAttribute contains additional cluster metadata information.", + "type": "string" + }, + "clusterRbac": { + "description": "Deprecated. Use clusterResources", + "items": { + "$ref": "#/definitions/v1ResourceReference" + }, + "type": "array" + }, + "clusterResources": { + "$ref": "#/definitions/v1ClusterResources", + "description": "ClusterResources defines the managment of namespace resource allocations, role bindings." + }, + "controlPlaneHealthCheckTimeout": { + "description": "ControlPlaneHealthCheckTimeout is the timeout to check for ready state of the control plane nodes. If the node is not ready within the time out set, the node will be deleted and a new node will be launched.", + "type": "string" + }, + "hostClusterConfig": { + "$ref": "#/definitions/v1HostClusterConfig", + "description": "HostClusterConfiguration defines the configuration of host clusters, where virtual clusters be deployed" + }, + "lifecycleConfig": { + "$ref": "#/definitions/v1LifecycleConfig" + }, + "machineHealthConfig": { + "$ref": "#/definitions/v1MachineHealthCheckConfig", + "description": "MachineHealthCheckConfig defines the healthcheck timeouts for the node. The timeouts are configured by the user to overide the default healthchecks." + }, + "machineManagementConfig": { + "$ref": "#/definitions/v1MachineManagementConfig", + "description": "MachineManagementConfig defines the management configurations for the node. Patching OS security updates etc can be configured by user." + }, + "updateWorkerPoolsInParallel": { + "description": "UpdateWorkerPoolsInParallel is used to decide if the update of workerpools happen in parallel. When this flag is false, the workerpools are updated sequentially.", + "type": "boolean" + } + }, + "type": "object" + }, + "v1ClusterConfigEntity": { + "properties": { + "clusterMetaAttribute": { + "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", + "type": "string" + }, + "controlPlaneHealthCheckTimeout": { + "type": "string" + }, + "hostClusterConfig": { + "$ref": "#/definitions/v1HostClusterConfig" + }, + "lifecycleConfig": { + "$ref": "#/definitions/v1LifecycleConfig" + }, + "location": { + "$ref": "#/definitions/v1ClusterLocation" + }, + "machineManagementConfig": { + "$ref": "#/definitions/v1MachineManagementConfig" + }, + "resources": { + "$ref": "#/definitions/v1ClusterResourcesEntity" + }, + "updateWorkerPoolsInParallel": { + "type": "boolean" + } + }, + "type": "object" + }, + "v1ClusterConfigParamEntity": { + "properties": { + "clusterMetaAttribute": { + "description": "ClusterMetaAttribute can be used to set additional cluster metadata information.", + "type": "string" + }, + "controlPlaneHealthCheckTimeout": { + "type": "string" + }, + "hostClusterConfig": { + "$ref": "#/definitions/v1HostClusterConfig" + }, + "location": { + "$ref": "#/definitions/v1ClusterLocation" + }, + "resources": { + "$ref": "#/definitions/v1ClusterResourcesEntity" + }, + "updateWorkerPoolsInParallel": { + "type": "boolean" + } + }, + "type": "object" + }, + "v1ClusterConfigResponse": { + "properties": { + "hostClusterConfig": { + "$ref": "#/definitions/v1HostClusterConfigResponse", + "description": "HostClusterConfig defines the configuration entity of host clusters config entity" + } + }, + "type": "object" + }, + "v1ClusterDefinitionEntity": { + "description": "Cluster definition entity", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "$ref": "#/definitions/v1ClusterDefinitionSpecEntity" + } + }, + "type": "object" + }, + "v1ClusterDefinitionProfileEntity": { + "description": "Cluster definition profile entity", + "properties": { + "packs": { + "description": "Cluster profile packs array", + "items": { + "$ref": "#/definitions/v1PackValuesEntity" + }, + "type": "array", + "uniqueItems": true + }, + "uid": { + "description": "Cluster profile uid", + "type": "string" + } + }, + "required": [ + "uid" + ], + "type": "object" + }, + "v1ClusterDefinitionSpecEntity": { + "description": "Cluster definition spec entity", + "properties": { + "cloudType": { + "type": "string" + }, + "profiles": { + "description": "Cluster definition profiles", + "items": { + "$ref": "#/definitions/v1ClusterDefinitionProfileEntity" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "profiles", + "cloudType" + ], + "type": "object" + }, + "v1ClusterEdgeInstallerConfig": { + "properties": { + "installerDownloadLinks": { + "additionalProperties": { + "type": "string" + } + } + } + }, + "v1ClusterFeatureActor": { + "description": "Compliance Scan actor", + "properties": { + "actorType": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "v1ClusterFeatureSchedule": { + "description": "Cluster feature schedule", + "properties": { + "scheduledRunTime": { + "type": "string" + } + } + }, + "v1ClusterFips": { + "properties": { + "mode": { + "$ref": "#/definitions/v1ClusterFipsMode" + } + } + }, + "v1ClusterFipsMode": { + "default": "none", + "enum": [ + "full", + "none", + "partial", + "unknown" + ], + "type": "string" + }, + "v1ClusterGroup": { + "description": "Cluster group information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterGroupSpec" + }, + "status": { + "$ref": "#/definitions/v1ClusterGroupStatus" + } + } + }, + "v1ClusterGroupClusterRef": { + "description": "Cluster group cluster reference", + "properties": { + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + }, + "v1ClusterGroupClustersConfig": { + "description": "Clusters config of cluster group", + "properties": { + "endpointType": { + "description": "Host cluster endpoint type", + "enum": [ + "Ingress", + "LoadBalancer" + ], + "type": "string" + }, + "hostClustersConfig": { + "items": { + "$ref": "#/definitions/v1ClusterGroupHostClusterConfig" + }, + "type": "array", + "uniqueItems": true + }, + "kubernetesDistroType": { + "$ref": "#/definitions/v1ClusterKubernetesDistroType" + }, + "limitConfig": { + "$ref": "#/definitions/v1ClusterGroupLimitConfig" + }, + "values": { + "type": "string" + } + } + }, + "v1ClusterGroupEntity": { + "description": "Cluster group information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterGroupSpecEntity" + } + } + }, + "v1ClusterGroupHostClusterConfig": { + "properties": { + "clusterUid": { + "type": "string" + }, + "endpointConfig": { + "$ref": "#/definitions/v1HostClusterEndpointConfig", + "description": "host cluster endpoint configuration" + } + } + }, + "v1ClusterGroupHostClusterEntity": { + "description": "Clusters and clusters config of cluster group", + "properties": { + "clusterRefs": { + "items": { + "$ref": "#/definitions/v1ClusterGroupClusterRef" + }, + "type": "array", + "uniqueItems": true + }, + "clustersConfig": { + "$ref": "#/definitions/v1ClusterGroupClustersConfig" + } + } + }, + "v1ClusterGroupLimitConfig": { + "description": "Cluster group limit config", + "properties": { + "cpu": { + "description": "Deprecated. Use field cpuMilliCore", + "format": "int32", + "type": "integer" + }, + "cpuMilliCore": { + "description": "CPU in milli cores", + "format": "int32", + "type": "integer" + }, + "memory": { + "description": "Deprecated. Use field memoryMiB", + "format": "int32", + "type": "integer" + }, + "memoryMiB": { + "description": "Memory in MiB", + "format": "int32", + "type": "integer" + }, + "overSubscription": { + "description": "Over subscription percentage", + "format": "int32", + "type": "integer" + }, + "storageGiB": { + "description": "Storage in GiB", + "format": "int32", + "type": "integer" + } + } + }, + "v1ClusterGroupResource": { + "description": "Cluster group resource allocated and usage information", + "properties": { + "allocated": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "used": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + } + }, + "v1ClusterGroupSpec": { + "description": "Cluster group specifications", + "properties": { + "clusterProfileTemplates": { + "description": "ClusterProfileTemplate is a copy of the draft version or latest published version of the clusterprofileSpec. It consists of list of add on profiles at a cluster group level which will be enforced on all virtual cluster. ClusterProfileTemplate will be updated from the clusterprofile pointed by ClusterProfileRef", + "items": { + "$ref": "#/definitions/v1ClusterProfileTemplate" + }, + "type": "array" + }, + "clusterRefs": { + "items": { + "$ref": "#/definitions/v1ClusterGroupClusterRef" + }, + "type": "array", + "uniqueItems": true + }, + "clustersConfig": { + "$ref": "#/definitions/v1ClusterGroupClustersConfig" + }, + "type": { + "enum": [ + "hostCluster" + ], + "type": "string" + } + } + }, + "v1ClusterGroupSpecEntity": { + "description": "Cluster group specifications request entity", + "properties": { + "clusterRefs": { + "items": { + "$ref": "#/definitions/v1ClusterGroupClusterRef" + }, + "type": "array", + "uniqueItems": true + }, + "clustersConfig": { + "$ref": "#/definitions/v1ClusterGroupClustersConfig" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + }, + "type": { + "enum": [ + "hostCluster" + ], + "type": "string" + } + } + }, + "v1ClusterGroupStatus": { + "description": "Cluster group status", + "properties": { + "isActive": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1ClusterGroupSummary": { + "description": "Cluster group summay", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterGroupSummarySpec" + } + } + }, + "v1ClusterGroupSummarySpec": { + "description": "Cluster group summay spec", + "properties": { + "clusterProfileTemplates": { + "items": { + "$ref": "#/definitions/v1ClusterProfileTemplateMeta" + }, + "type": "array" + }, + "cpu": { + "$ref": "#/definitions/v1ClusterGroupResource", + "description": "Deprecated" + }, + "endpointType": { + "enum": [ + "Ingress", + "LoadBalancer" + ], + "type": "string" + }, + "hostClusters": { + "items": { + "$ref": "#/definitions/v1ObjectResReference" + }, + "type": "array", + "uniqueItems": true + }, + "hostClustersCount": { + "type": "integer", + "x-omitempty": false + }, + "memory": { + "$ref": "#/definitions/v1ClusterGroupResource", + "description": "Deprecated" + }, + "scope": { + "type": "string" + }, + "virtualClustersCount": { + "type": "integer", + "x-omitempty": false + } + } + }, + "v1ClusterGroupsDeveloperCreditUsage": { + "description": "Cluster group resource allocated and usage information", + "properties": { + "allocatedCredit": { + "$ref": "#/definitions/v1DeveloperCredit" + }, + "usedCredit": { + "$ref": "#/definitions/v1DeveloperCredit" + } + } + }, + "v1ClusterGroupsHostClusterMetadata": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1ObjectScopeEntity" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1ClusterGroupsHostClusterSummary": { + "properties": { + "summaries": { + "items": { + "$ref": "#/definitions/v1ClusterGroupSummary" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "summaries" + ], + "type": "object" + }, + "v1ClusterHelmChart": { + "description": "Cluster helm chart metadata", + "properties": { + "localName": { + "type": "string" + }, + "matchedRegistries": { + "items": { + "$ref": "#/definitions/v1ClusterHelmRegistry" + }, + "type": "array", + "uniqueItems": true + }, + "name": { + "type": "string" + }, + "values": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "v1ClusterHelmCharts": { + "description": "Cluster helm charts metadata", + "properties": { + "charts": { + "items": { + "$ref": "#/definitions/v1ClusterHelmChart" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1ClusterHelmRegistry": { + "description": "Cluster helm registry information", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "v1ClusterImport": { + "properties": { + "importLink": { + "description": "import link to download and install ally-lite, palette-lite", + "type": "string" + }, + "isBrownfield": { + "description": "Deprecated. Use the 'spec.clusterType'", + "type": "boolean", + "x-omitempty": false + }, + "state": { + "description": "cluster import status", + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterKubeBenchLogStatus": { + "description": "Cluster compliance scan KubeBench Log Status", + "properties": { + "actor": { + "$ref": "#/definitions/v1ClusterFeatureActor" + }, + "message": { + "type": "string" + }, + "reports": { + "additionalProperties": { + "$ref": "#/definitions/v1KubeBenchReport" + }, + "type": "object" + }, + "requestUid": { + "type": "string" + }, + "scanTime": { + "$ref": "#/definitions/v1ClusterScanTime" + }, + "state": { + "type": "string" + } + } + }, + "v1ClusterKubeHunterLogStatus": { + "description": "Cluster compliance scan KubeHunter Log Status", + "properties": { + "actor": { + "$ref": "#/definitions/v1ClusterFeatureActor" + }, + "message": { + "type": "string" + }, + "reports": { + "additionalProperties": { + "$ref": "#/definitions/v1KubeHunterReport" + }, + "type": "object" + }, + "requestUid": { + "type": "string" + }, + "scanTime": { + "$ref": "#/definitions/v1ClusterScanTime" + }, + "state": { + "type": "string" + } + } + }, + "v1ClusterKubernetesDistroType": { + "default": "k3s", + "enum": [ + "k3s", + "cncf_k8s" + ], + "type": "string" + }, + "v1ClusterLocation": { + "description": "Cluster location information", + "properties": { + "countryCode": { + "description": "country code for cluster location", + "type": "string" + }, + "countryName": { + "description": "country name for cluster location", + "type": "string" + }, + "geoLoc": { + "$ref": "#/definitions/v1GeolocationLatlong" + }, + "regionCode": { + "description": "region code for cluster location", + "type": "string" + }, + "regionName": { + "description": "region name for cluster location", + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterLogFetcher": { + "description": "Cluster Log Fetcher", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterLogFetcherSpec" + }, + "status": { + "$ref": "#/definitions/v1ClusterLogFetcherStatus" + } + } + }, + "v1ClusterLogFetcherK8sRequest": { + "description": "Cluster Log Fetcher K8s", + "properties": { + "labelSelector": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "namespaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1ClusterLogFetcherNodeRequest": { + "description": "Cluster Log Fetcher Node Request", + "properties": { + "logs": { + "description": "Array of logs", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1ClusterLogFetcherRequest": { + "description": "Cluster Log Fetcher Request", + "properties": { + "duration": { + "default": 10, + "description": "Duration for which log is requested", + "format": "int64", + "type": "integer" + }, + "k8s": { + "$ref": "#/definitions/v1ClusterLogFetcherK8sRequest" + }, + "mode": { + "default": "cluster", + "description": "Accepted Values - [\"cluster\", \"app\"]. if \"app\" then logs will be fetched from the virtual cluster", + "enum": [ + "cluster", + "app" + ], + "type": "string" + }, + "noOfLines": { + "default": 1000, + "description": "No of lines of logs requested", + "format": "int64", + "type": "integer" + }, + "node": { + "$ref": "#/definitions/v1ClusterLogFetcherNodeRequest" + } + } + }, + "v1ClusterLogFetcherSpec": { + "description": "Cluster Log Fetcher Spec", + "properties": { + "clusterUid": { + "type": "string" + }, + "log": { + "type": "string" + } + } + }, + "v1ClusterLogFetcherStatus": { + "description": "Cluster Log Fetcher Status", + "properties": { + "state": { + "type": "string" + } + } + }, + "v1ClusterManifest": { + "description": "Cluster manifest information", + "properties": { + "content": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "v1ClusterManifests": { + "description": "Cluster manifests information", + "properties": { + "manifests": { + "items": { + "$ref": "#/definitions/v1ClusterManifest" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1ClusterMeta": { + "description": "Active cluster meta", + "properties": { + "cloudType": { + "type": "string" + }, + "clusterType": { + "type": "string" + }, + "creationTimestamp": { + "$ref": "#/definitions/v1Time" + }, + "duration": { + "type": "string" + }, + "name": { + "type": "string" + }, + "projectName": { + "type": "string" + }, + "state": { + "$ref": "#/definitions/v1ClusterState" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterMetaAttributeEntity": { + "description": "Cluster additional metadata entity", + "properties": { + "clusterMetaAttribute": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterMetaSpecLocation": { + "description": "Cluster location information", + "properties": { + "coordinates": { + "items": { + "format": "float64", + "type": "number" + }, + "type": "array" + }, + "countryCode": { + "type": "string" + }, + "countryName": { + "type": "string" + }, + "regionCode": { + "type": "string" + }, + "regionName": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterMetaStatusCost": { + "description": "Cluster meta Cost information", + "properties": { + "total": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1ClusterMetaStatusHealth": { + "description": "Cluster meta health information", + "properties": { + "isHeartBeatFailed": { + "type": "boolean", + "x-omitempty": false + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterMetaStatusUpdates": { + "description": "Cluster meta updates information", + "properties": { + "isUpdatesPending": { + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1ClusterNamespace": { + "description": "Cluster's namespace", + "properties": { + "namespace": { + "type": "string" + }, + "pvcCount": { + "format": "int32", + "type": "number" + } + } + }, + "v1ClusterNamespaceResource": { + "description": "Cluster Namespace resource defintion", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterNamespaceSpec" + }, + "status": { + "$ref": "#/definitions/v1ClusterNamespaceStatus" + } + }, + "type": "object" + }, + "v1ClusterNamespaceResourceAllocation": { + "description": "Cluster namespace resource allocation", + "properties": { + "cpuCores": { + "exclusiveMinimum": true, + "minimum": 0, + "type": "number" + }, + "memoryMiB": { + "exclusiveMinimum": true, + "minimum": 0, + "type": "number" + } + } + }, + "v1ClusterNamespaceResourceInputEntity": { + "description": "Cluster Namespace resource defintion", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaUpdateEntity" + }, + "spec": { + "$ref": "#/definitions/v1ClusterNamespaceSpec" + } + }, + "type": "object" + }, + "v1ClusterNamespaceResources": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1ClusterNamespaceResource" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1ClusterNamespaceResourcesUpdateEntity": { + "properties": { + "namespaces": { + "items": { + "$ref": "#/definitions/v1ClusterNamespaceResourceInputEntity" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1ClusterNamespaceSpec": { + "description": "Cluster namespace spec", + "properties": { + "isRegex": { + "type": "boolean", + "x-omitempty": false + }, + "relatedObject": { + "$ref": "#/definitions/v1RelatedObject" + }, + "resourceAllocation": { + "$ref": "#/definitions/v1ClusterNamespaceResourceAllocation" + } + } + }, + "v1ClusterNamespaceStatus": { + "description": "Cluster namespace status", + "properties": { + "errors": { + "items": { + "$ref": "#/definitions/v1ClusterResourceError" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1ClusterNamespaces": { + "description": "Cluster's available namespaces", + "properties": { + "namespaces": { + "items": { + "$ref": "#/definitions/v1ClusterNamespace" + }, + "type": "array" + } + } + }, + "v1ClusterNotificationUpdateEntity": { + "description": "Cluster input for notification update", + "properties": { + "profiles": { + "items": { + "$ref": "#/definitions/v1ClusterProfileNotificationUpdateEntity" + }, + "type": "array", + "uniqueItems": true + }, + "spcApplySettings": { + "$ref": "#/definitions/v1SpcApplySettings" + } + }, + "type": "object" + }, + "v1ClusterPackManifestStatus": { + "properties": { + "condition": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterPackStatus": { + "properties": { + "condition": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "endTime": { + "$ref": "#/definitions/v1Time" + }, + "manifests": { + "items": { + "$ref": "#/definitions/v1ClusterPackManifestStatus" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "profileUid": { + "type": "string" + }, + "services": { + "items": { + "$ref": "#/definitions/v1LoadBalancerService" + }, + "type": "array" + }, + "startTime": { + "$ref": "#/definitions/v1Time" + }, + "type": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterPreference": { + "description": "cluster preference", + "properties": { + "archivalIntervalInHour": { + "description": "clusters cleanup interval post deletion", + "type": "integer" + }, + "deletePeriodInHour": { + "description": "clusters deleted before delete period are eligible for cleanup", + "type": "integer" + }, + "healthPollIntervalInMinutes": { + "description": "clusters health poll interval", + "maximum": 60, + "minimum": 3, + "type": "integer" + }, + "monitorIntervalInMinutes": { + "description": "clusters state and consistency monitor", + "type": "integer" + } + } + }, + "v1ClusterProfile": { + "description": "ClusterProfile is the Schema for the clusterprofiles API", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterProfileSpec" + }, + "status": { + "$ref": "#/definitions/v1ClusterProfileStatus" + } + }, + "type": "object" + }, + "v1ClusterProfileCloneEntity": { + "description": "Cluster profile clone request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ClusterProfileCloneMetaInputEntity" + } + }, + "type": "object" + }, + "v1ClusterProfileCloneMetaInputEntity": { + "description": "Cluster profile clone metadata", + "properties": { + "name": { + "description": "Cloned cluster profile name", + "type": "string" + }, + "target": { + "$ref": "#/definitions/v1ClusterProfileCloneTarget" + }, + "version": { + "description": "Cloned cluster profile version", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1ClusterProfileCloneTarget": { + "description": "Cluster profile clone meta input entity", + "properties": { + "projectUid": { + "description": "Cloned cluster profile project uid", + "type": "string" + }, + "scope": { + "$ref": "#/definitions/v1Scope" + } + }, + "required": [ + "scope" + ], + "type": "object" + }, + "v1ClusterProfileEntity": { + "description": "Cluster profile request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "template": { + "$ref": "#/definitions/v1ClusterProfileTemplateDraft" + }, + "variables": { + "description": "List of unique variable fields defined for a cluster profile with schema constraints", + "items": { + "$ref": "#/definitions/v1Variable" + }, + "type": "array", + "uniqueItems": true + }, + "version": { + "description": "Cluster profile version", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1ClusterProfileFilterSpec": { + "description": "Cluster profile filter spec", + "properties": { + "environment": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "fips": { + "$ref": "#/definitions/v1ClusterFipsMode" + }, + "profileName": { + "$ref": "#/definitions/v1FilterString" + }, + "profileType": { + "items": { + "$ref": "#/definitions/v1ProfileType" + }, + "type": "array", + "uniqueItems": true + }, + "scope": { + "$ref": "#/definitions/v1ClusterProfileScope" + }, + "tags": { + "$ref": "#/definitions/v1FilterArray" + }, + "version": { + "$ref": "#/definitions/v1FilterVersionString" + } + } + }, + "v1ClusterProfileFips": { + "description": "Cluster profile fips compliance status", + "properties": { + "mode": { + "$ref": "#/definitions/v1ClusterFipsMode" + } + } + }, + "v1ClusterProfileImportEntity": { + "description": "Cluster profile import request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ClusterProfileMetadataImportEntity" + }, + "spec": { + "$ref": "#/definitions/v1ClusterProfileSpecImportEntity" + } + }, + "type": "object" + }, + "v1ClusterProfileMetadata": { + "description": "Cluster profile filter spec", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectEntity" + }, + "spec": { + "properties": { + "cloudType": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } + }, + "v1ClusterProfileMetadataImportEntity": { + "description": "Cluster profile import metadata", + "properties": { + "description": { + "description": "Cluster profile description", + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Cluster profile labels", + "type": "object" + }, + "name": { + "description": "Cluster profile name", + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterProfileNotificationUpdateEntity": { + "description": "Cluster profile notification update request payload", + "properties": { + "packs": { + "description": "Cluster profile packs array", + "items": { + "$ref": "#/definitions/v1PackManifestUpdateEntity" + }, + "type": "array", + "uniqueItems": true + }, + "uid": { + "description": "Cluster profile uid", + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterProfilePackConfigList": { + "properties": { + "items": { + "description": "Cluster profile packs array", + "items": { + "$ref": "#/definitions/v1PackConfig" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1ClusterProfilePackManifests": { + "description": "Cluster profile pack manifests", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1PackManifestsSpec" + }, + "status": { + "$ref": "#/definitions/v1PackSummaryStatus" + } + }, + "type": "object" + }, + "v1ClusterProfilePackSummary": { + "description": "Cluster profile packs summary about the deprecated, disabled, deleted packs count", + "properties": { + "deleted": { + "description": "Total count of deleted packs in a cluster profile", + "type": "number", + "x-omitempty": false + }, + "deprecated": { + "description": "Total count of deprecated packs in a cluster profile", + "type": "number", + "x-omitempty": false + }, + "disabled": { + "description": "Total count of disabled packs in a cluster profile", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1ClusterProfilePacksEntities": { + "description": "List of cluster profile packs", + "properties": { + "items": { + "description": "Cluster profile packs array", + "items": { + "$ref": "#/definitions/v1ClusterProfilePacksEntity" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1ClusterProfilePacksEntity": { + "description": "Cluster profile packs object", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1PackSummarySpec" + }, + "status": { + "$ref": "#/definitions/v1PackSummaryStatus" + } + }, + "type": "object" + }, + "v1ClusterProfilePacksManifests": { + "description": "Cluster profile pack manifests", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "packs": { + "description": "Cluster profile packs array", + "items": { + "$ref": "#/definitions/v1ClusterProfilePackManifests" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1ClusterProfileScope": { + "enum": [ + "system", + "tenant", + "project" + ], + "type": "string" + }, + "v1ClusterProfileSortFields": { + "enum": [ + "profileName", + "environment", + "profileType", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "type": "string", + "x-nullable": true + }, + "v1ClusterProfileSortSpec": { + "properties": { + "field": { + "$ref": "#/definitions/v1ClusterProfileSortFields" + }, + "order": { + "$ref": "#/definitions/v1SortOrder" + } + } + }, + "v1ClusterProfileSpec": { + "description": "ClusterProfileTemplate can be in draft mode, or published mode User only see the latest published template, and (or) the draft template User can apply either the draft version or the latest published version to a cluster when user create a draft version, just copy the Published template, increment the version, and keep changing the draft template without increment the draft version when user publish a draft, the version is fixed, and won't be able to make any modification on published template For each clusterprofile that has a published version, there will be a ClusterProfileArchive automatically created when user publish a draft, the published version will also be copied over to the corresponding ClusterProfileArchive it is just in case in the future for whatever reason we may want to expose earlier versions", + "properties": { + "draft": { + "$ref": "#/definitions/v1ClusterProfileTemplate" + }, + "published": { + "$ref": "#/definitions/v1ClusterProfileTemplate" + }, + "version": { + "type": "string" + }, + "versions": { + "description": "Cluster profile's list of all the versions", + "items": { + "$ref": "#/definitions/v1ClusterProfileVersion" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ClusterProfileSpecEntity": { + "description": "Cluster profile update spec", + "properties": { + "version": { + "description": "Cluster profile version", + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterProfileSpecImportEntity": { + "description": "Cluster profile import spec", + "properties": { + "template": { + "$ref": "#/definitions/v1ClusterProfileTemplateImportEntity" + }, + "variables": { + "description": "List of unique variable fields defined for a cluster profile with schema constraints", + "items": { + "$ref": "#/definitions/v1Variable" + }, + "type": "array", + "uniqueItems": true + }, + "version": { + "description": "Cluster profile version", + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterProfileStatus": { + "description": "ClusterProfileStatus defines the observed state of ClusterProfile", + "properties": { + "hasUserMacros": { + "description": "If it is true then profile pack values has a reference to user defined macros", + "type": "boolean", + "x-omitempty": false + }, + "inUseClusterUids": { + "description": "Deprecated. Use inUseClusters", + "items": { + "type": "string" + }, + "type": "array" + }, + "inUseClusters": { + "items": { + "$ref": "#/definitions/v1ObjectResReference" + }, + "type": "array" + }, + "isPublished": { + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1ClusterProfileStatusSummary": { + "description": "ClusterProfileStatusSummary defines the observed state of ClusterProfile", + "properties": { + "fips": { + "$ref": "#/definitions/v1ClusterProfileFips" + }, + "inUseClusterUids": { + "description": "Deprecated. Use inUseClusters", + "items": { + "type": "string" + }, + "type": "array" + }, + "inUseClusters": { + "items": { + "$ref": "#/definitions/v1ObjectEntity" + }, + "type": "array" + }, + "isPublished": { + "type": "boolean", + "x-omitempty": false + }, + "pack": { + "$ref": "#/definitions/v1ClusterProfilePackSummary" + } + }, + "type": "object" + }, + "v1ClusterProfileSummary": { + "description": "Cluster profile summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "specSummary": { + "description": "Cluster profile spec summary", + "properties": { + "draft": { + "$ref": "#/definitions/v1ClusterProfileTemplateSummary" + }, + "published": { + "$ref": "#/definitions/v1ClusterProfileTemplateSummary" + }, + "version": { + "description": "Cluster profile's latest version", + "type": "string" + }, + "versions": { + "description": "Cluster profile's list of all the versions", + "items": { + "$ref": "#/definitions/v1ClusterProfileVersion" + }, + "type": "array" + } + }, + "type": "object" + }, + "status": { + "$ref": "#/definitions/v1ClusterProfileStatusSummary" + } + }, + "type": "object" + }, + "v1ClusterProfileTemplate": { + "description": "ClusterProfileTemplate contains details of a clusterprofile definition", + "properties": { + "cloudType": { + "type": "string" + }, + "name": { + "type": "string" + }, + "packServerRefs": { + "description": "PackServerRefs is only used on Hubble side it is reference to pack registry servers which PackRef belongs to in hubble, pack server is a top level object, so use a reference to point to it packs within a clusterprofile can come from different pack servers, so this is an array", + "items": { + "$ref": "#/definitions/v1ObjectReference" + }, + "type": "array" + }, + "packServerSecret": { + "description": "This secret is used only on Palette side use case is similar to k8s image pull secret this single secret internally should contains all the pack servers in PackServerRefs if empty, means no credential is needed to access the pack server For spectro saas, Ally will set this field before pass to palette", + "type": "string" + }, + "packs": { + "description": "Packs definitions here are final definitions. If ClonedFrom and ParamsOverwrite is present, then Packs are the final merge result of ClonedFrom and ParamsOverwrite So orchestration engine will just take the Packs and do the work, no need to worry about parameters merge", + "items": { + "$ref": "#/definitions/v1PackRef" + }, + "type": "array" + }, + "profileVersion": { + "description": "version start from 1.0.0, matching the index of ClusterProfileSpec.Versions[] will be used by clusterSpec to identify which version is applied to the cluster", + "type": "string" + }, + "relatedObject": { + "$ref": "#/definitions/v1ObjectReference", + "description": "RelatedObject refers to the type of object(clustergroup, cluster or edgeHost) the cluster profile is associated with" + }, + "type": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "version": { + "description": "Deprecated. Use profileVersion", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1ClusterProfileTemplateDraft": { + "description": "Cluster profile template spec", + "properties": { + "cloudType": { + "type": "string" + }, + "packs": { + "description": "Cluster profile packs array", + "items": { + "$ref": "#/definitions/v1PackManifestEntity" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "$ref": "#/definitions/v1ProfileType" + } + }, + "type": "object" + }, + "v1ClusterProfileTemplateImportEntity": { + "description": "Cluster profile import template", + "properties": { + "cloudType": { + "description": "Cluster profile cloud type", + "type": "string" + }, + "packs": { + "description": "Cluster profile packs array", + "items": { + "$ref": "#/definitions/v1PackImportEntity" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterProfileTemplateMeta": { + "description": "Cluster profile template meta information", + "properties": { + "cloudType": { + "type": "string" + }, + "name": { + "description": "Cluster profile name", + "type": "string" + }, + "packs": { + "description": "Cluster profile packs array", + "items": { + "$ref": "#/definitions/v1PackRef" + }, + "type": "array" + }, + "scope": { + "description": "scope or context(system, tenant or project)", + "type": "string" + }, + "type": { + "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", + "type": "string" + }, + "uid": { + "description": "Cluster profile uid", + "type": "string" + }, + "version": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1ClusterProfileTemplateSummary": { + "description": "Cluster profile template summary", + "properties": { + "cloudType": { + "type": "string" + }, + "packs": { + "items": { + "$ref": "#/definitions/v1PackRefSummary" + }, + "type": "array" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterProfileTemplateUpdate": { + "description": "Cluster profile template update spec", + "properties": { + "packs": { + "description": "Cluster profile packs array", + "items": { + "$ref": "#/definitions/v1PackManifestUpdateEntity" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "$ref": "#/definitions/v1ProfileType" + } + }, + "type": "object" + }, + "v1ClusterProfileUpdateEntity": { + "description": "Cluster profile update request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "description": "Cluster profile update spec", + "properties": { + "template": { + "$ref": "#/definitions/v1ClusterProfileTemplateUpdate" + }, + "version": { + "description": "Cluster profile version", + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1ClusterProfileValidatorResponse": { + "description": "Cluster profile validator response", + "properties": { + "packs": { + "$ref": "#/definitions/v1ConstraintValidatorResponse" + } + }, + "type": "object" + }, + "v1ClusterProfileVersion": { + "description": "Cluster profile with version", + "properties": { + "uid": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "v1ClusterProfiles": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1ClusterProfile" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1ClusterProfilesFilterSpec": { + "description": "Spectro cluster filter summary spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1ClusterProfileFilterSpec" + }, + "sort": { + "items": { + "$ref": "#/definitions/v1ClusterProfileSortSpec" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1ClusterProfilesMetadata": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1ClusterProfileMetadata" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1ClusterProfilesSummary": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1ClusterProfileSummary" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1ClusterProxySpec": { + "description": "cluster proxy config spec", + "properties": { + "caContainerMountPath": { + "description": "Location to mount Proxy CA cert inside container", + "type": "string" + }, + "caHostPath": { + "description": "Location for Proxy CA cert on host nodes", + "type": "string" + }, + "httpProxy": { + "description": "URL for HTTP requests unless overridden by NoProxy", + "type": "string" + }, + "httpsProxy": { + "description": "HTTPS requests unless overridden by NoProxy", + "type": "string" + }, + "noProxy": { + "description": "NoProxy represents the NO_PROXY or no_proxy environment", + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterRbac": { + "description": "Cluster RBAC role binding defintion", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterRbacSpec" + }, + "status": { + "$ref": "#/definitions/v1ClusterRbacStatus" + } + }, + "type": "object" + }, + "v1ClusterRbacBinding": { + "description": "Cluster RBAC binding", + "properties": { + "namespace": { + "type": "string" + }, + "role": { + "$ref": "#/definitions/v1ClusterRoleRef" + }, + "subjects": { + "items": { + "$ref": "#/definitions/v1ClusterRbacSubjects" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "enum": [ + "RoleBinding", + "ClusterRoleBinding" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterRbacEntity": { + "properties": { + "clusterRbac": { + "description": "Cluster RBAC role bindings", + "items": { + "$ref": "#/definitions/v1ResourceReference" + }, + "type": "array" + } + } + }, + "v1ClusterRbacInputEntity": { + "description": "Cluster RBAC role binding defintion", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaUpdateEntity" + }, + "spec": { + "$ref": "#/definitions/v1ClusterRbacSpec" + } + }, + "type": "object" + }, + "v1ClusterRbacResourcesUpdateEntity": { + "properties": { + "rbacs": { + "items": { + "$ref": "#/definitions/v1ClusterRbacInputEntity" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1ClusterRbacSpec": { + "description": "Cluster RBAC spec", + "properties": { + "bindings": { + "items": { + "$ref": "#/definitions/v1ClusterRbacBinding" + }, + "type": "array", + "uniqueItems": true + }, + "relatedObject": { + "$ref": "#/definitions/v1RelatedObject" + } + }, + "type": "object" + }, + "v1ClusterRbacStatus": { + "description": "Cluster rbac status", + "properties": { + "errors": { + "items": { + "$ref": "#/definitions/v1ClusterResourceError" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1ClusterRbacSubjects": { + "description": "Cluster role ref", + "properties": { + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "type": { + "enum": [ + "User", + "Group", + "ServiceAccount" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterRbacs": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1ClusterRbac" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1ClusterRefs": { + "description": "Cluster Object References", + "properties": { + "clusters": { + "items": { + "$ref": "#/definitions/v1ObjectReference" + }, + "type": "array" + } + } + }, + "v1ClusterRepaveSource": { + "enum": [ + "user", + "hubble", + "palette", + "stylus" + ], + "type": "string" + }, + "v1ClusterRepaveState": { + "default": "Pending", + "enum": [ + "Pending", + "Approved", + "Reverted" + ], + "type": "string" + }, + "v1ClusterRepaveStatus": { + "description": "Cluster repave status", + "properties": { + "state": { + "$ref": "#/definitions/v1ClusterRepaveState" + } + } + }, + "v1ClusterResourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "clusterUid": { + "type": "string" + }, + "resourceAllocation": { + "$ref": "#/definitions/v1WorkspaceResourceAllocation" + } + } + }, + "v1ClusterResourceError": { + "description": "Cluster resource error", + "properties": { + "msg": { + "type": "string" + }, + "name": { + "type": "string" + }, + "resourceType": { + "type": "string" + } + } + }, + "v1ClusterResources": { + "properties": { + "namespaces": { + "description": "Cluster namespaces", + "items": { + "$ref": "#/definitions/v1ResourceReference" + }, + "type": "array" + }, + "rbacs": { + "description": "Cluster RBAC role bindings", + "items": { + "$ref": "#/definitions/v1ResourceReference" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ClusterResourcesEntity": { + "properties": { + "namespaces": { + "items": { + "$ref": "#/definitions/v1ClusterNamespaceResourceInputEntity" + }, + "type": "array", + "uniqueItems": true + }, + "rbacs": { + "items": { + "$ref": "#/definitions/v1ClusterRbacInputEntity" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1ClusterRestore": { + "description": "Cluster Restore", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterRestoreSpec" + }, + "status": { + "$ref": "#/definitions/v1ClusterRestoreStatus" + } + } + }, + "v1ClusterRestoreConfig": { + "description": "Cluster restore config", + "properties": { + "backupName": { + "type": "string" + }, + "backupRequestUid": { + "type": "string" + }, + "destinationClusterUid": { + "type": "string" + }, + "includeClusterResources": { + "type": "boolean" + }, + "includeNamespaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "preserveNodePorts": { + "type": "boolean" + }, + "restorePVs": { + "type": "boolean" + } + }, + "required": [ + "backupRequestUid", + "backupName", + "destinationClusterUid" + ] + }, + "v1ClusterRestoreSpec": { + "description": "Cluster Restore Spec", + "properties": { + "clusterUid": { + "type": "string" + } + } + }, + "v1ClusterRestoreStatus": { + "description": "Cluster Restore Status", + "properties": { + "clusterRestoreStatuses": { + "items": { + "$ref": "#/definitions/v1ClusterRestoreStatusMeta" + }, + "type": "array" + } + } + }, + "v1ClusterRestoreStatusMeta": { + "description": "Cluster Restore Status Meta", + "properties": { + "actor": { + "$ref": "#/definitions/v1ClusterFeatureActor" + }, + "backupName": { + "type": "string" + }, + "backupRequestUid": { + "type": "string" + }, + "restoreRequestUid": { + "type": "string" + }, + "restoreStatusMeta": { + "$ref": "#/definitions/v1RestoreStatusMeta" + }, + "sourceClusterRef": { + "$ref": "#/definitions/v1ResourceReference" + }, + "state": { + "type": "string" + } + } + }, + "v1ClusterRoleRef": { + "description": "Cluster role ref", + "properties": { + "kind": { + "enum": [ + "Role", + "ClusterRole" + ], + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterScanLogKubeBench": { + "description": "Cluster compliance scan KubeBench Log", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterComplianceScanLogSpec" + }, + "status": { + "$ref": "#/definitions/v1ClusterKubeBenchLogStatus" + } + } + }, + "v1ClusterScanLogKubeHunter": { + "description": "Cluster compliance scan KubeHunter Log", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterComplianceScanLogSpec" + }, + "status": { + "$ref": "#/definitions/v1ClusterKubeHunterLogStatus" + } + } + }, + "v1ClusterScanLogSonobuoy": { + "description": "Cluster compliance scan Sonobuoy Log", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterComplianceScanLogSpec" + }, + "status": { + "$ref": "#/definitions/v1ClusterSonobuoyLogStatus" + } + } + }, + "v1ClusterScanLogSyft": { + "description": "Cluster Compliance Scan Syft Log", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterComplianceScanLogSpec" + }, + "status": { + "$ref": "#/definitions/v1ClusterSyftLogStatus" + } + } + }, + "v1ClusterScanTime": { + "description": "Cluster compliance scan Time", + "properties": { + "endTime": { + "$ref": "#/definitions/v1Time" + }, + "startTime": { + "$ref": "#/definitions/v1Time" + } + } + }, + "v1ClusterSearchInputSpec": { + "properties": { + "inputs": { + "additionalProperties": { + "$ref": "#/definitions/v1ClusterSearchInputSpecProperty" + }, + "type": "object" + } + } + }, + "v1ClusterSearchInputSpecProperty": { + "properties": { + "values": { + "items": { + "$ref": "#/definitions/v1ObjectEntity" + }, + "type": "array", + "x-omitempty": true + } + } + }, + "v1ClusterSonobuoyLogStatus": { + "description": "Cluster compliance scan Sonobuoy Log Status", + "properties": { + "actor": { + "$ref": "#/definitions/v1ClusterFeatureActor" + }, + "message": { + "type": "string" + }, + "reports": { + "additionalProperties": { + "$ref": "#/definitions/v1SonobuoyReport" + }, + "type": "object" + }, + "requestUid": { + "type": "string" + }, + "scanTime": { + "$ref": "#/definitions/v1ClusterScanTime" + }, + "state": { + "type": "string" + } + } + }, + "v1ClusterState": { + "enum": [ + "Pending", + "Provisioning", + "Running", + "Deleting", + "Deleted", + "Error", + "Importing" + ], + "type": "string" + }, + "v1ClusterSyftLogStatus": { + "description": "Cluster compliance scan Syft Log Status", + "properties": { + "actor": { + "$ref": "#/definitions/v1ClusterFeatureActor" + }, + "location": { + "$ref": "#/definitions/v1ObjectEntity" + }, + "message": { + "type": "string" + }, + "reports": { + "items": { + "$ref": "#/definitions/v1SyftReport" + }, + "type": "array" + }, + "requestUid": { + "type": "string" + }, + "scanContext": { + "$ref": "#/definitions/v1SyftScanContext" + }, + "scanTime": { + "$ref": "#/definitions/v1ClusterScanTime" + }, + "state": { + "type": "string" + } + } + }, + "v1ClusterUpgradeSettingsEntity": { + "properties": { + "spectroComponents": { + "enum": [ + "lock", + "unlock" + ], + "type": "string" + } + } + }, + "v1ClusterUsageSummary": { + "description": "Cluster usage summary", + "properties": { + "cpuCores": { + "type": "number", + "x-omitempty": false + }, + "isAlloy": { + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterVirtualMachine": { + "description": "VirtualMachine handles the VirtualMachines that are not running\nor are in a stopped state\nThe VirtualMachine contains the template to create the\nVirtualMachineInstance. It also mirrors the running state of the created\nVirtualMachineInstance in its status.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values.", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1VmObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ClusterVirtualMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1ClusterVirtualMachineStatus" + } + }, + "required": [ + "spec" + ] + }, + "v1ClusterVirtualMachineList": { + "description": "VirtualMachineList is a list of virtual machines", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values.", + "type": "string" + }, + "items": { + "items": { + "$ref": "#/definitions/v1ClusterVirtualMachine" + }, + "type": "array" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1VmListMeta" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1ClusterVirtualMachineSpec": { + "description": "VirtualMachineSpec describes how the proper VirtualMachine should look like", + "properties": { + "dataVolumeTemplates": { + "description": "dataVolumeTemplates is a list of dataVolumes that the VirtualMachineInstance template can reference. DataVolumes in this list are dynamically created for the VirtualMachine and are tied to the VirtualMachine's life-cycle.", + "items": { + "$ref": "#/definitions/v1VmDataVolumeTemplateSpec" + }, + "type": "array" + }, + "instancetype": { + "$ref": "#/definitions/v1VmInstancetypeMatcher" + }, + "preference": { + "$ref": "#/definitions/v1VmPreferenceMatcher" + }, + "runStrategy": { + "description": "Running state indicates the requested running state of the VirtualMachineInstance mutually exclusive with Running", + "type": "string" + }, + "running": { + "description": "Running controls whether the associatied VirtualMachineInstance is created or not Mutually exclusive with RunStrategy", + "type": "boolean" + }, + "template": { + "$ref": "#/definitions/v1VmVirtualMachineInstanceTemplateSpec" + } + }, + "required": [ + "template" + ], + "type": "object" + }, + "v1ClusterVirtualMachineStatus": { + "description": "VirtualMachineStatus represents the status returned by the controller to describe how the VirtualMachine is doing", + "properties": { + "conditions": { + "description": "Hold the state information of the VirtualMachine and its VirtualMachineInstance", + "items": { + "$ref": "#/definitions/v1VmVirtualMachineCondition" + }, + "type": "array" + }, + "created": { + "description": "Created indicates if the virtual machine is created in the cluster", + "type": "boolean" + }, + "memoryDumpRequest": { + "$ref": "#/definitions/v1VmVirtualMachineMemoryDumpRequest" + }, + "printableStatus": { + "description": "PrintableStatus is a human readable, high-level representation of the status of the virtual machine", + "type": "string" + }, + "ready": { + "description": "Ready indicates if the virtual machine is running and ready", + "type": "boolean" + }, + "restoreInProgress": { + "description": "RestoreInProgress is the name of the VirtualMachineRestore currently executing", + "type": "string" + }, + "snapshotInProgress": { + "description": "SnapshotInProgress is the name of the VirtualMachineSnapshot currently executing", + "type": "string" + }, + "startFailure": { + "$ref": "#/definitions/v1VmVirtualMachineStartFailure" + }, + "stateChangeRequests": { + "description": "StateChangeRequests indicates a list of actions that should be taken on a VMI e.g. stop a specific VMI then start a new one.", + "items": { + "$ref": "#/definitions/v1VmVirtualMachineStateChangeRequest" + }, + "type": "array" + }, + "volumeRequests": { + "description": "VolumeRequests indicates a list of volumes add or remove from the VMI template and hotplug on an active running VMI.", + "items": { + "$ref": "#/definitions/v1VmVirtualMachineVolumeRequest" + }, + "type": "array", + "x-kubernetes-list-type": "atomic" + }, + "volumeSnapshotStatuses": { + "description": "VolumeSnapshotStatuses indicates a list of statuses whether snapshotting is supported by each volume.", + "items": { + "$ref": "#/definitions/v1VmVolumeSnapshotStatus" + }, + "type": "array" + } + }, + "type": "object", + "x-nullable": true + }, + "v1ClusterVirtualPacksValue": { + "description": "Virtual cluster packs value", + "properties": { + "distroType": { + "type": "string" + }, + "layer": { + "type": "string" + }, + "values": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterVirtualPacksValues": { + "description": "Virtual cluster packs values", + "properties": { + "packs": { + "items": { + "$ref": "#/definitions/v1ClusterVirtualPacksValue" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ClusterWorkload": { + "description": "Cluster workload summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "$ref": "#/definitions/v1ClusterWorkloadSpec" + } + }, + "type": "object" + }, + "v1ClusterWorkloadCondition": { + "description": "Cluster workload condition", + "properties": { + "lastTransitionTime": { + "$ref": "#/definitions/v1Time" + }, + "lastUpdateTime": { + "$ref": "#/definitions/v1Time" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterWorkloadCronJob": { + "description": "Cluster workload cronjob summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ClusterWorkloadMetadata" + }, + "spec": { + "$ref": "#/definitions/v1ClusterWorkloadCronJobSpec" + }, + "status": { + "$ref": "#/definitions/v1ClusterWorkloadCronJobStatus" + } + }, + "type": "object" + }, + "v1ClusterWorkloadCronJobSpec": { + "description": "Cluster workload cronjob spec", + "properties": { + "schedule": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterWorkloadCronJobStatus": { + "description": "Cluster workload cronjob status", + "properties": { + "lastScheduleTime": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1ClusterWorkloadCronJobs": { + "description": "Cluster workload cronjobs summary", + "properties": { + "cronJobs": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadCronJob" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ClusterWorkloadDaemonSet": { + "description": "Cluster workload daemonset summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ClusterWorkloadMetadata" + }, + "status": { + "$ref": "#/definitions/v1ClusterWorkloadDaemonSetStatus" + } + }, + "type": "object" + }, + "v1ClusterWorkloadDaemonSetStatus": { + "description": "Cluster workload daemonset status", + "properties": { + "available": { + "format": "int32", + "type": "integer" + }, + "currentScheduled": { + "format": "int32", + "type": "integer" + }, + "desiredScheduled": { + "format": "int32", + "type": "integer" + }, + "misScheduled": { + "format": "int32", + "type": "integer" + }, + "ready": { + "format": "int32", + "type": "integer" + }, + "updatedScheduled": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1ClusterWorkloadDaemonSets": { + "description": "Cluster workload daemonset summary", + "properties": { + "daemonSets": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadDaemonSet" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ClusterWorkloadDeployment": { + "description": "Cluster workload deployment summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ClusterWorkloadMetadata" + }, + "status": { + "$ref": "#/definitions/v1ClusterWorkloadDeploymentStatus" + } + }, + "type": "object" + }, + "v1ClusterWorkloadDeploymentStatus": { + "description": "Cluster workload deployment status", + "properties": { + "replicas": { + "$ref": "#/definitions/v1ClusterWorkloadReplicaStatus" + } + }, + "type": "object" + }, + "v1ClusterWorkloadDeployments": { + "description": "Cluster workload deployments summary", + "properties": { + "deployments": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadDeployment" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ClusterWorkloadJob": { + "description": "Cluster workload job summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ClusterWorkloadMetadata" + }, + "status": { + "$ref": "#/definitions/v1ClusterWorkloadJobStatus" + } + }, + "type": "object" + }, + "v1ClusterWorkloadJobStatus": { + "description": "Cluster workload job status", + "properties": { + "completionTime": { + "$ref": "#/definitions/v1Time" + }, + "conditions": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadCondition" + }, + "type": "array" + }, + "startTime": { + "$ref": "#/definitions/v1Time" + }, + "succeeded": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1ClusterWorkloadJobs": { + "description": "Cluster workload jobs summary", + "properties": { + "jobs": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadJob" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ClusterWorkloadMetadata": { + "description": "Cluster workload metadata", + "properties": { + "creationTimestamp": { + "$ref": "#/definitions/v1Time" + }, + "entity": { + "$ref": "#/definitions/v1ClusterWorkloadRef" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "namespace": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterWorkloadNamespace": { + "description": "Cluster workload namespace summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ClusterWorkloadMetadata" + }, + "status": { + "$ref": "#/definitions/v1ClusterWorkloadNamespaceStatus" + } + }, + "type": "object" + }, + "v1ClusterWorkloadNamespaceStatus": { + "description": "Cluster workload namespace status", + "properties": { + "phase": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterWorkloadNamespaces": { + "description": "Cluster workload namespaces summary", + "properties": { + "namespaces": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadNamespace" + }, + "type": "array" + } + } + }, + "v1ClusterWorkloadPod": { + "description": "Cluster workload pod summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ClusterWorkloadPodMetadata" + }, + "spec": { + "$ref": "#/definitions/v1ClusterWorkloadPodSpec" + }, + "status": { + "$ref": "#/definitions/v1ClusterWorkloadPodStatus" + } + }, + "type": "object" + }, + "v1ClusterWorkloadPodContainer": { + "description": "Cluster workload pod container", + "properties": { + "image": { + "type": "string" + }, + "name": { + "type": "string" + }, + "resources": { + "$ref": "#/definitions/v1ClusterWorkloadPodContainerResources" + } + }, + "type": "object" + }, + "v1ClusterWorkloadPodContainerResource": { + "description": "Cluster workload pod container resource", + "properties": { + "cpu": { + "format": "int32", + "type": "integer", + "x-omitempty": false + }, + "cpuUnit": { + "type": "string" + }, + "memory": { + "format": "int64", + "type": "integer", + "x-omitempty": false + }, + "memoryUnit": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterWorkloadPodContainerResources": { + "description": "Cluster workload pod container resources", + "properties": { + "limits": { + "$ref": "#/definitions/v1ClusterWorkloadPodContainerResource" + }, + "requests": { + "$ref": "#/definitions/v1ClusterWorkloadPodContainerResource" + } + }, + "type": "object" + }, + "v1ClusterWorkloadPodContainerState": { + "description": "Cluster workload pod container state", + "properties": { + "exitCode": { + "format": "int32", + "type": "integer", + "x-omitempty": false + }, + "finishedAt": { + "$ref": "#/definitions/v1Time" + }, + "reason": { + "type": "string" + }, + "startedAt": { + "$ref": "#/definitions/v1Time" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterWorkloadPodContainerStatus": { + "description": "Cluster workload pod container status", + "properties": { + "image": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ready": { + "type": "boolean", + "x-omitempty": false + }, + "restartCount": { + "format": "int32", + "type": "integer", + "x-omitempty": false + }, + "started": { + "type": "boolean", + "x-omitempty": false + }, + "state": { + "$ref": "#/definitions/v1ClusterWorkloadPodContainerState" + } + }, + "type": "object" + }, + "v1ClusterWorkloadPodMetadata": { + "description": "Cluster workload pod metadata", + "properties": { + "associatedRefs": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadRef" + }, + "type": "array" + }, + "creationTimestamp": { + "$ref": "#/definitions/v1Time" + }, + "entity": { + "$ref": "#/definitions/v1ClusterWorkloadRef" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "machineUid": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "nodename": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterWorkloadPodSpec": { + "description": "Cluster workload pod spec", + "properties": { + "containers": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadPodContainer" + }, + "type": "array" + }, + "volumes": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadPodVolume" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ClusterWorkloadPodStatus": { + "description": "Cluster workload pod status", + "properties": { + "containers": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadPodContainerStatus" + }, + "type": "array" + }, + "phase": { + "type": "string" + }, + "podIp": { + "type": "string" + }, + "qosClass": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterWorkloadPodVolume": { + "description": "Cluster workload pod volume", + "properties": { + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterWorkloadPods": { + "description": "Cluster workload pods summary", + "properties": { + "pods": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadPod" + }, + "type": "array" + } + } + }, + "v1ClusterWorkloadRef": { + "description": "Cluster workload ref", + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1ClusterWorkloadReplicaStatus": { + "description": "Cluster workload replica status", + "properties": { + "available": { + "format": "int32", + "type": "integer", + "x-omitempty": false + }, + "ready": { + "format": "int32", + "type": "integer", + "x-omitempty": false + }, + "total": { + "format": "int32", + "type": "integer", + "x-omitempty": false + }, + "updated": { + "format": "int32", + "type": "integer", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1ClusterWorkloadRoleBinding": { + "description": "Cluster workload rbac binding summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ClusterWorkloadMetadata" + }, + "spec": { + "$ref": "#/definitions/v1ClusterRbacBinding" + } + }, + "type": "object" + }, + "v1ClusterWorkloadRoleBindings": { + "description": "Cluster workload rbac bindings summary", + "properties": { + "bindings": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadRoleBinding" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ClusterWorkloadSpec": { + "description": "Cluster workload spec", + "properties": { + "clusterroleBindings": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadRoleBinding" + }, + "type": "array" + }, + "cronJobs": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadCronJob" + }, + "type": "array" + }, + "daemonSets": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadDaemonSet" + }, + "type": "array" + }, + "deployments": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadDeployment" + }, + "type": "array" + }, + "jobs": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadJob" + }, + "type": "array" + }, + "pods": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadPod" + }, + "type": "array" + }, + "roleBindings": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadRoleBinding" + }, + "type": "array" + }, + "statefulSets": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadStatefulSet" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ClusterWorkloadStatefulSet": { + "description": "Cluster workload statefulset summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ClusterWorkloadMetadata" + }, + "status": { + "$ref": "#/definitions/v1ClusterWorkloadStatefulSetStatus" + } + }, + "type": "object" + }, + "v1ClusterWorkloadStatefulSetStatus": { + "description": "Cluster workload statefulset status", + "properties": { + "replicas": { + "$ref": "#/definitions/v1ClusterWorkloadReplicaStatus" + } + }, + "type": "object" + }, + "v1ClusterWorkloadStatefulSets": { + "description": "Cluster workload statefulsets summary", + "properties": { + "statefulSets": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadStatefulSet" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ClusterWorkloadsFilter": { + "description": "Cluster workloads filter", + "properties": { + "namespaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1ClusterWorkloadsSpec": { + "description": "Cluster workloads spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1ClusterWorkloadsFilter" + } + }, + "type": "object" + }, + "v1ClustersInfo": { + "description": "Active clusters information", + "properties": { + "clustersMeta": { + "items": { + "$ref": "#/definitions/v1ClusterMeta" + }, + "type": "array", + "uniqueItems": true + }, + "totalActiveClusters": { + "format": "int64", + "type": "number" + }, + "totalActiveGreenFieldClusters": { + "format": "int64", + "type": "number" + }, + "totalActiveImportedClusters": { + "format": "int64", + "type": "number" + }, + "totalClustersDeleted": { + "format": "int64", + "type": "number" + }, + "totalClustersDeployed": { + "format": "int64", + "type": "number" + } + }, + "type": "object" + }, + "v1ComplianceScanConfig": { + "description": "Compliance Scan config", + "properties": { + "schedule": { + "$ref": "#/definitions/v1ClusterFeatureSchedule" + } + } + }, + "v1ComplianceScanDriverSpec": { + "description": "Compliance Scan driver spec", + "properties": { + "config": { + "$ref": "#/definitions/v1ComplianceScanConfig" + }, + "isClusterConfig": { + "type": "boolean" + } + } + }, + "v1ComputeMetrics": { + "description": "Compute metrics", + "properties": { + "lastUpdatedTime": { + "$ref": "#/definitions/v1Time" + }, + "limit": { + "type": "number", + "x-omitempty": false + }, + "request": { + "type": "number", + "x-omitempty": false + }, + "total": { + "type": "number", + "x-omitempty": false + }, + "unit": { + "type": "string" + }, + "usage": { + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1ComputeRate": { + "description": "Compute estimated rate information", + "properties": { + "rate": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "v1ConfigReverseProxy": { + "description": "Describes the reverse proxy configuration", + "properties": { + "caCert": { + "description": "Describes the ca certificate for system's reverse proxy", + "type": "string" + }, + "clientCert": { + "description": "Describes the client certificate for system's reverse proxy", + "type": "string" + }, + "clientKey": { + "description": "Describes the client certificate key for system's reverse proxy", + "type": "string" + }, + "port": { + "description": "Describes the system's reverse proxy server port", + "type": "integer" + }, + "protocol": { + "description": "Describes the system's reverse proxy server protocol. Possible values [https, http]", + "enum": [ + "http", + "https" + ], + "type": "string" + }, + "server": { + "description": "Describes the system's reverse proxy server", + "type": "string" + } + } + }, + "v1ConstraintError": { + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "type": "object" + }, + "v1ConstraintValidatorResponse": { + "description": "Constraint validator response", + "properties": { + "results": { + "items": { + "$ref": "#/definitions/v1ConstraintValidatorResult" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1ConstraintValidatorResult": { + "description": "Constraint validator result", + "properties": { + "displayName": { + "type": "string" + }, + "errors": { + "items": { + "$ref": "#/definitions/v1ConstraintError" + }, + "type": "array", + "uniqueItems": true + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1ControlPlaneEndPoint": { + "properties": { + "ddnsSearchDomain": { + "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", + "type": "string" + }, + "host": { + "description": "IP or FQDN(External/DDNS)", + "type": "string" + }, + "type": { + "description": "VIP or External", + "enum": [ + "VIP", + "External", + "DDNS" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1ControlPlaneHealthCheckTimeoutEntity": { + "properties": { + "controlPlaneHealthCheckTimeout": { + "description": "ControlPlaneHealthCheckTimeout is the timeout to check for ready state of the control plane nodes", + "type": "string" + } + }, + "type": "object" + }, + "v1CoxEdgeAccount": { + "description": "CoxEdge cloud account information", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the account.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1CoxEdgeCloudAccount" + }, + "status": { + "$ref": "#/definitions/v1CloudAccountStatus" + } + }, + "type": "object" + }, + "v1CoxEdgeAccounts": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1CoxEdgeAccount" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1CoxEdgeBaseUrls": { + "description": "List of CoxEdge base urls", + "properties": { + "baseUrls": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "baseUrls" + ], + "type": "object" + }, + "v1CoxEdgeCloudAccount": { + "description": "CoxEdge cloud account", + "properties": { + "apiBaseUrl": { + "description": "The base url - used to make api calls", + "type": "string" + }, + "apiKey": { + "description": "CoxEdge cloud account ApiKey", + "type": "string" + }, + "environment": { + "description": "The environment belonging to the organization", + "type": "string" + }, + "organizationId": { + "description": "The Id of organization", + "type": "string" + }, + "service": { + "description": "The service for which the organization is allowed to provision resources", + "type": "string" + } + }, + "required": [ + "apiBaseUrl", + "apiKey" + ], + "type": "object" + }, + "v1CoxEdgeCloudClusterConfigEntity": { + "description": "CoxEdge cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1CoxEdgeClusterConfig" + } + }, + "type": "object" + }, + "v1CoxEdgeCloudConfig": { + "description": "CoxEdgeCloudConfig is the Schema for the coxedgecloudconfigs API", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1CoxEdgeCloudConfigSpec" + }, + "status": { + "$ref": "#/definitions/v1CoxEdgeCloudConfigStatus" + } + }, + "type": "object" + }, + "v1CoxEdgeCloudConfigSpec": { + "description": "CoxEdgeCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", + "properties": { + "cloudAccountRef": { + "$ref": "#/definitions/v1ObjectReference", + "description": "cloudAccountRef should point to the secret which contains GcpCloudAccount" + }, + "clusterConfig": { + "$ref": "#/definitions/v1CoxEdgeClusterConfig" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1CoxEdgeMachinePoolConfig" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1CoxEdgeCloudConfigStatus": { + "description": "CoxEdgeCloudConfigStatus defines the observed state of CoxEdgeCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", + "properties": { + "conditions": { + "description": "spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`", + "items": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "type": "array" + }, + "imageID": { + "description": "For mold controller to identify if is there any changes in Pack", + "type": "string" + } + }, + "type": "object" + }, + "v1CoxEdgeClusterConfig": { + "description": "Cluster level configuration for coxedge cloud and applicable for all the machine pools", + "properties": { + "coxEdgeLoadBalancerConfig": { + "$ref": "#/definitions/v1CoxEdgeLoadBalancerConfig" + }, + "coxEdgeWorkerLoadBalancerConfig": { + "$ref": "#/definitions/v1CoxEdgeLoadBalancerConfig" + }, + "environment": { + "type": "string" + }, + "organizationId": { + "type": "string" + }, + "sshAuthorizedKeys": { + "description": "CoxEdge ssh authorized keys", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "sshAuthorizedKeys", + "coxEdgeLoadBalancerConfig" + ], + "type": "object" + }, + "v1CoxEdgeCredentials": { + "description": "CoxEdge credentials to get organizations", + "properties": { + "apiBaseUrl": { + "description": "CoxEdge baseUrl - for api calls", + "type": "string" + }, + "apiKey": { + "description": "CoxEdge ApiKey - secret for api calls", + "type": "string" + } + }, + "type": "object" + }, + "v1CoxEdgeDeployment": { + "properties": { + "cpuUtilization": { + "format": "int32", + "type": "integer" + }, + "enableAutoScaling": { + "type": "boolean" + }, + "instancesPerPop": { + "format": "int32", + "type": "integer" + }, + "maxInstancesPerPop": { + "format": "int32", + "type": "integer" + }, + "minInstancesPerPop": { + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "pops": { + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "v1CoxEdgeEnvironment": { + "description": "CoxEdge environment entity", + "properties": { + "id": { + "description": "CoxEdge environment id", + "type": "string" + }, + "isDeleted": { + "description": "CoxEdge environment state", + "type": "boolean" + }, + "name": { + "description": "CoxEdge environment name", + "type": "string" + } + }, + "type": "object" + }, + "v1CoxEdgeEnvironments": { + "description": "List of CoxEdge environments", + "properties": { + "environments": { + "items": { + "$ref": "#/definitions/v1CoxEdgeEnvironment" + }, + "type": "array" + } + }, + "required": [ + "environments" + ], + "type": "object" + }, + "v1CoxEdgeEnvironmentsRequest": { + "description": "Request payload to get CoxEdge environments", + "properties": { + "credentials": { + "$ref": "#/definitions/v1CoxEdgeCredentials" + }, + "organizationId": { + "description": "CoxEdge organizationId", + "type": "string" + } + }, + "type": "object" + }, + "v1CoxEdgeInstanceTypes": { + "description": "List of CoxEdge instance types", + "properties": { + "instanceTypes": { + "items": { + "$ref": "#/definitions/v1InstanceType" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1CoxEdgeLoadBalancerConfig": { + "description": "CoxEdge loadbalancer config", + "properties": { + "pops": { + "description": "CoxEdge PoPs - geographical location for the loadbalancer", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1CoxEdgeLoadPersistentStorage": { + "description": "CoxEdge load persistent storage", + "properties": { + "path": { + "description": "Coxedge load persistent storage path", + "type": "string" + }, + "size": { + "description": "Coxedge load persistent storage size", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "v1CoxEdgeMachine": { + "description": "CoxEdge cloud VM definition", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the machine.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1CoxEdgeMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudMachineStatus" + } + }, + "type": "object" + }, + "v1CoxEdgeMachinePoolCloudConfigEntity": { + "properties": { + "deployments": { + "items": { + "$ref": "#/definitions/v1CoxEdgeDeployment" + }, + "type": "array" + }, + "persistentStorages": { + "description": "Array of coxedge load persistent storages", + "items": { + "$ref": "#/definitions/v1CoxEdgeLoadPersistentStorage" + }, + "type": "array", + "uniqueItems": true + }, + "securityGroupRules": { + "items": { + "$ref": "#/definitions/v1CoxEdgeSecurityGroupRule" + }, + "type": "array" + }, + "spec": { + "type": "string" + } + }, + "type": "object" + }, + "v1CoxEdgeMachinePoolConfig": { + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "additionalLabels", + "type": "object" + }, + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", + "type": "object" + }, + "deployments": { + "items": { + "$ref": "#/definitions/v1CoxEdgeDeployment" + }, + "type": "array" + }, + "instanceConfig": { + "$ref": "#/definitions/v1InstanceConfig" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean" + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "machinePoolProperties": { + "$ref": "#/definitions/v1MachinePoolProperties" + }, + "maxSize": { + "description": "max size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "minSize": { + "description": "min size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "nodeRepaveInterval": { + "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", + "format": "int32", + "type": "integer" + }, + "persistentStorages": { + "description": "Array of coxedge load persistent storages", + "items": { + "$ref": "#/definitions/v1CoxEdgeLoadPersistentStorage" + }, + "type": "array", + "uniqueItems": true + }, + "securityGroupRules": { + "items": { + "$ref": "#/definitions/v1CoxEdgeSecurityGroupRule" + }, + "type": "array" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "spec": { + "type": "string" + }, + "taints": { + "description": "master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array", + "uniqueItems": true + }, + "updateStrategy": { + "$ref": "#/definitions/v1UpdateStrategy", + "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" + } + }, + "required": [ + "isControlPlane" + ], + "type": "object" + }, + "v1CoxEdgeMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1CoxEdgeMachinePoolCloudConfigEntity" + }, + "poolConfig": { + "$ref": "#/definitions/v1MachinePoolConfigEntity" + } + }, + "required": [ + "cloudConfig" + ], + "type": "object" + }, + "v1CoxEdgeMachineSpec": { + "description": "CoxEdge cloud VM definition spec", + "properties": { + "addAnycastIpAddress": { + "type": "boolean" + }, + "deployments": { + "items": { + "$ref": "#/definitions/v1CoxEdgeDeployment" + }, + "type": "array" + }, + "image": { + "type": "string" + }, + "persistentStorages": { + "items": { + "$ref": "#/definitions/v1CoxEdgeLoadPersistentStorage" + }, + "type": "array" + }, + "ports": { + "items": { + "$ref": "#/definitions/v1CoxEdgePort" + }, + "type": "array" + }, + "providerId": { + "type": "string" + }, + "specs": { + "type": "string" + }, + "sshAuthorizedKeys": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1CoxEdgeMachines": { + "description": "CoxEdge machine list", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1CoxEdgeMachine" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1CoxEdgeOrganization": { + "description": "CoxEdge Organization entity", + "properties": { + "id": { + "description": "CoxEdge organization id", + "type": "string" + }, + "isDeleted": { + "description": "CoxEdge organization state", + "type": "boolean" + }, + "name": { + "description": "CoxEdge organization name", + "type": "string" + } + }, + "type": "object" + }, + "v1CoxEdgeOrganizations": { + "description": "List of CoxEdge organizations", + "properties": { + "organizations": { + "items": { + "$ref": "#/definitions/v1CoxEdgeOrganization" + }, + "type": "array" + } + }, + "required": [ + "organizations" + ], + "type": "object" + }, + "v1CoxEdgePort": { + "description": "CoxEdge network port", + "properties": { + "protocol": { + "type": "string" + }, + "publicPort": { + "type": "string" + }, + "publicPortDesc": { + "type": "string" + } + }, + "type": "object" + }, + "v1CoxEdgeRegion": { + "description": "CoxEdge region entity", + "properties": { + "code": { + "description": "Code of the CoxEdge region", + "type": "string" + }, + "location": { + "$ref": "#/definitions/v1ClusterLocation" + }, + "name": { + "description": "Name of the CoxEdge region", + "type": "string" + } + }, + "type": "object" + }, + "v1CoxEdgeRegions": { + "description": "List of CoxEdge regions", + "properties": { + "regions": { + "items": { + "$ref": "#/definitions/v1CoxEdgeRegion" + }, + "type": "array" + } + }, + "required": [ + "regions" + ], + "type": "object" + }, + "v1CoxEdgeSecurityGroupRule": { + "properties": { + "action": { + "enum": [ + "block", + "allow" + ], + "type": "string" + }, + "description": { + "type": "string" + }, + "portRange": { + "type": "string" + }, + "protocol": { + "enum": [ + "TCP", + "UDP", + "TCP_UDP", + "ESP", + "AH", + "ICMP", + "GRE" + ], + "type": "string" + }, + "source": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "v1CoxEdgeService": { + "description": "CoxEdge service entity", + "properties": { + "code": { + "description": "CoxEdge service code", + "type": "string" + }, + "id": { + "description": "CoxEdge service id", + "type": "string" + }, + "name": { + "description": "CoxEdge service name", + "type": "string" + } + }, + "type": "object" + }, + "v1CoxEdgeServices": { + "description": "List of CoxEdge services", + "properties": { + "services": { + "items": { + "$ref": "#/definitions/v1CoxEdgeService" + }, + "type": "array" + } + }, + "required": [ + "services" + ], + "type": "object" + }, + "v1CustomAccount": { + "description": "Custom account information", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the account.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1CustomCloudAccount" + }, + "status": { + "$ref": "#/definitions/v1CloudAccountStatus" + } + }, + "type": "object" + }, + "v1CustomAccountEntity": { + "description": "Custom account information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "$ref": "#/definitions/v1CustomCloudAccount" + } + }, + "type": "object" + }, + "v1CustomAccounts": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1CustomAccount" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1CustomCloudAccount": { + "properties": { + "credentials": { + "additionalProperties": { + "type": "string" + }, + "description": "Cloud account credentials", + "type": "object" + } + }, + "required": [ + "credentials" + ], + "type": "object" + }, + "v1CustomCloudClusterConfigEntity": { + "description": "Custom cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1CustomClusterConfig" + } + }, + "type": "object" + }, + "v1CustomCloudConfig": { + "description": "CustomCloudConfig is the Schema for the custom cloudconfigs API", + "properties": { + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1CustomCloudConfigSpec" + } + }, + "type": "object" + }, + "v1CustomCloudConfigSpec": { + "description": "CustomCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", + "properties": { + "cloudAccountRef": { + "$ref": "#/definitions/v1ObjectReference", + "description": "cloudAccountRef should point to the secret which contains CustomCloudAccount" + }, + "clusterConfig": { + "$ref": "#/definitions/v1CustomClusterConfig" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1CustomMachinePoolConfig" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1CustomCloudMetaEntity": { + "description": "Custom cloud meta entity", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta", + "description": "Custom cloud metadata" + }, + "spec": { + "$ref": "#/definitions/v1CustomCloudMetaSpecEntity" + } + }, + "type": "object" + }, + "v1CustomCloudMetaSpecEntity": { + "description": "Custom cloud spec response entity", + "properties": { + "cloudCategory": { + "$ref": "#/definitions/v1CloudCategory" + }, + "displayName": { + "description": "Custom cloud displayName", + "type": "string" + }, + "isManaged": { + "description": "If the custom cloud is a managed cluster", + "type": "boolean" + }, + "logo": { + "description": "Custom cloud logo", + "type": "string" + } + }, + "type": "object" + }, + "v1CustomCloudRateConfig": { + "description": "Private cloud rate config", + "properties": { + "cloudType": { + "type": "string" + }, + "rateConfig": { + "$ref": "#/definitions/v1PrivateCloudRateConfig" + } + } + }, + "v1CustomCloudRequestEntity": { + "description": "Custom cloud request entity", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity", + "description": "Custom cloud metadata" + }, + "spec": { + "$ref": "#/definitions/v1CustomCloudSpecEntity" + } + }, + "type": "object" + }, + "v1CustomCloudSpecEntity": { + "description": "Custom cloud request entity spec", + "properties": { + "cloudCategory": { + "$ref": "#/definitions/v1CloudCategory" + }, + "displayName": { + "description": "Custom cloud displayName", + "type": "string" + }, + "isControlPlaneManaged": { + "description": "If the custom cloud is a managed cluster", + "type": "boolean" + }, + "logo": { + "description": "Custom cloud logo", + "type": "string" + } + }, + "type": "object" + }, + "v1CustomCloudType": { + "properties": { + "cloudCategory": { + "$ref": "#/definitions/v1CloudCategory" + }, + "cloudFamily": { + "description": "Cloud grouping as family", + "type": "string" + }, + "displayName": { + "description": "Custom cloudtype displayName", + "type": "string" + }, + "isCustom": { + "description": "If it is a custom cloudtype", + "type": "boolean", + "x-omitempty": false + }, + "isManaged": { + "description": "If custom cloudtype is managed", + "type": "boolean", + "x-omitempty": false + }, + "isVertex": { + "description": "If cloud is support for Vertex env", + "type": "boolean", + "x-omitempty": false + }, + "logo": { + "description": "Custom cloudtype logo", + "type": "string" + }, + "name": { + "description": "Custom cloudtype name", + "type": "string" + } + }, + "type": "object" + }, + "v1CustomCloudTypeCloudAccountKeys": { + "description": "Custom cloudType custom cloud account keys", + "properties": { + "keys": { + "description": "Array of custom cloud type cloud account keys", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1CustomCloudTypeContentResponse": { + "description": "Custom cloudType content response", + "properties": { + "yaml": { + "description": "custom cloud type content", + "type": "string" + } + }, + "type": "object" + }, + "v1CustomCloudTypes": { + "description": "Custom cloudType content response", + "properties": { + "cloudTypes": { + "description": "Array of custom cloud types", + "items": { + "$ref": "#/definitions/v1CustomCloudType" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1CustomClusterConfig": { + "description": "Cluster level configuration for Custom cloud and applicable for all the machine pools", + "properties": { + "values": { + "description": "YAML string for Cluster and CloudCluster", + "type": "string" + } + }, + "required": [ + "values" + ], + "type": "object" + }, + "v1CustomClusterConfigEntity": { + "properties": { + "location": { + "$ref": "#/definitions/v1ClusterLocation" + }, + "machineManagementConfig": { + "$ref": "#/definitions/v1MachineManagementConfig" + }, + "resources": { + "$ref": "#/definitions/v1ClusterResourcesEntity" + } + }, + "type": "object" + }, + "v1CustomInstanceType": { + "properties": { + "diskGiB": { + "description": "DiskGiB is the size of a custom machine's disk, in GiB", + "format": "int32", + "type": "integer" + }, + "memoryMiB": { + "description": "MemoryMiB is the size of a custom machine's memory, in MiB", + "format": "int64", + "type": "integer" + }, + "name": { + "type": "string" + }, + "numCPUs": { + "description": "NumCPUs is the number in a custom machine", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1CustomMachine": { + "description": "Custom cloud VM definition", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the machine.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1CustomMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudMachineStatus" + } + }, + "type": "object" + }, + "v1CustomMachinePoolBaseConfigEntity": { + "description": "Machine pool configuration for the custom cluster", + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "Additional labels to be part of the machine pool", + "type": "object" + }, + "isControlPlane": { + "description": "Whether this pool is for control plane", + "type": "boolean", + "x-omitempty": false + }, + "taints": { + "description": "Master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array", + "uniqueItems": true + }, + "useControlPlaneAsWorker": { + "description": "If IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1CustomMachinePoolCloudConfigEntity": { + "properties": { + "values": { + "description": "Machine pool configuration as yaml content", + "type": "string" + } + }, + "type": "object" + }, + "v1CustomMachinePoolConfig": { + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "additionalLabels", + "type": "object" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "taints": { + "description": "master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array", + "uniqueItems": true + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean", + "x-omitempty": false + }, + "values": { + "description": "YAML string for machine", + "type": "string" + } + }, + "required": [ + "isControlPlane" + ], + "type": "object" + }, + "v1CustomMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1CustomMachinePoolCloudConfigEntity" + }, + "poolConfig": { + "$ref": "#/definitions/v1CustomMachinePoolBaseConfigEntity" + } + }, + "required": [ + "cloudConfig" + ], + "type": "object" + }, + "v1CustomMachineSpec": { + "description": "Custom cloud VM definition spec", + "properties": { + "cloudType": { + "type": "string" + }, + "hostName": { + "type": "string" + }, + "imageId": { + "type": "string" + }, + "instanceType": { + "$ref": "#/definitions/v1CustomInstanceType" + }, + "nics": { + "items": { + "$ref": "#/definitions/v1CustomNic" + }, + "type": "array" + }, + "sshKeyName": { + "type": "string" + } + } + }, + "v1CustomMachines": { + "description": "List of Custom machines", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1CustomMachine" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1CustomNic": { + "description": "Custom network interface", + "properties": { + "index": { + "format": "int8", + "type": "integer" + }, + "networkName": { + "type": "string" + }, + "privateIPs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "publicIp": { + "type": "string" + } + }, + "type": "object" + }, + "v1DashboardWorkspace": { + "description": "Workspace information", + "properties": { + "meta": { + "$ref": "#/definitions/v1DashboardWorkspaceMeta" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1DashboardWorkspaceSpec" + }, + "status": { + "$ref": "#/definitions/v1DashboardWorkspaceStatus" + } + } + }, + "v1DashboardWorkspaceAllocation": { + "description": "Workspace allocation", + "properties": { + "cpu": { + "$ref": "#/definitions/v1DashboardWorkspaceResourceAllocation" + }, + "memory": { + "$ref": "#/definitions/v1DashboardWorkspaceResourceAllocation" + } + } + }, + "v1DashboardWorkspaceClusterRef": { + "description": "Workspace cluster reference", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "v1DashboardWorkspaceMeta": { + "description": "Deprecated. Workspace meta data", + "properties": { + "clusterNames": { + "description": "Deprecated. Use clusterRefs", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "clusterRefs": { + "items": { + "$ref": "#/definitions/v1DashboardWorkspaceClusterRef" + }, + "type": "array", + "uniqueItems": true + }, + "creationTime": { + "$ref": "#/definitions/v1Time" + }, + "name": { + "type": "string" + }, + "namespaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "uid": { + "type": "string" + } + } + }, + "v1DashboardWorkspaceNamespaceAllocation": { + "description": "Workspace namespace allocation", + "properties": { + "name": { + "type": "string" + }, + "total": { + "$ref": "#/definitions/v1DashboardWorkspaceAllocation" + } + } + }, + "v1DashboardWorkspaceQuota": { + "description": "Workspace resource quota", + "properties": { + "resourceAllocation": { + "$ref": "#/definitions/v1DashboardWorkspaceQuotaResourceAllocation" + } + } + }, + "v1DashboardWorkspaceQuotaResourceAllocation": { + "description": "Workspace quota resource allocation", + "properties": { + "cpu": { + "exclusiveMinimum": true, + "minimum": 0, + "type": "number" + }, + "memory": { + "exclusiveMinimum": true, + "minimum": 0, + "type": "number" + } + } + }, + "v1DashboardWorkspaceResourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "allocated": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "usage": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + } + }, + "v1DashboardWorkspaceSpec": { + "description": "Workspace spec summary", + "properties": { + "clusterRefs": { + "items": { + "$ref": "#/definitions/v1DashboardWorkspaceClusterRef" + }, + "type": "array", + "uniqueItems": true + }, + "namespaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "quota": { + "$ref": "#/definitions/v1DashboardWorkspaceQuota" + } + } + }, + "v1DashboardWorkspaceStatus": { + "description": "Workspace status", + "properties": { + "namespaces": { + "items": { + "$ref": "#/definitions/v1DashboardWorkspaceNamespaceAllocation" + }, + "type": "array", + "uniqueItems": true + }, + "total": { + "$ref": "#/definitions/v1DashboardWorkspaceAllocation" + } + } + }, + "v1DashboardWorkspaces": { + "properties": { + "cpuUnit": { + "type": "string" + }, + "items": { + "items": { + "$ref": "#/definitions/v1DashboardWorkspace" + }, + "type": "array", + "uniqueItems": true + }, + "memoryUnit": { + "type": "string" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1DataSinkConfig": { + "description": "Data sink", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1DataSinkSpec" + } + }, + "type": "object" + }, + "v1DataSinkSpec": { + "properties": { + "auditDataSinks": { + "items": { + "$ref": "#/definitions/v1DataSinkableSpec" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1DataSinkableSpec": { + "properties": { + "cloudWatch": { + "$ref": "#/definitions/v1CloudWatch" + }, + "type": { + "enum": [ + "cloudwatch" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1DatabaseTransferJob": { + "description": "database transfer job details", + "properties": { + "backupStatus": { + "$ref": "#/definitions/v1TransferJob" + }, + "backupUid": { + "type": "string" + }, + "mode": { + "enum": [ + "FileSystem", + "Ftp" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1DatabaseTransferStatus": { + "description": "database transfer status", + "properties": { + "backups": { + "items": { + "$ref": "#/definitions/v1DatabaseTransferJob" + }, + "type": "array" + }, + "isActive": { + "type": "boolean" + } + }, + "type": "object" + }, + "v1DeleteMeta": { + "description": "Properties to send back after deletion operation", + "properties": { + "count": { + "format": "int64", + "type": "integer" + }, + "items": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + } + } + }, + "v1DeletedMsg": { + "description": "Deleted response with message", + "properties": { + "msg": { + "type": "string" + } + } + }, + "v1DeveloperCredit": { + "description": "Credits allocated for each tenant/user", + "properties": { + "cpu": { + "description": "cpu in cores", + "format": "int32", + "type": "number", + "x-omitempty": false + }, + "memoryGiB": { + "description": "memory in GiB", + "format": "int32", + "type": "number", + "x-omitempty": false + }, + "storageGiB": { + "description": "storage in GiB", + "format": "int32", + "type": "integer", + "x-omitempty": false + }, + "virtualClustersLimit": { + "description": "number of active virtual clusters", + "format": "int32", + "type": "number", + "x-omitempty": false + } + } + }, + "v1DeviceSpec": { + "description": "DeviceSpec defines the desired state of Device", + "properties": { + "archType": { + "default": "amd64", + "description": "Architecture type of the edge host", + "enum": [ + "arm64", + "amd64" + ], + "type": "string" + }, + "cpu": { + "$ref": "#/definitions/v1CPU" + }, + "disks": { + "items": { + "$ref": "#/definitions/v1Disk" + }, + "type": "array" + }, + "gpus": { + "items": { + "$ref": "#/definitions/v1GPUDeviceSpec" + }, + "type": "array" + }, + "memory": { + "$ref": "#/definitions/v1Memory" + }, + "nics": { + "items": { + "$ref": "#/definitions/v1Nic" + }, + "type": "array" + }, + "os": { + "$ref": "#/definitions/v1OS" + } + }, + "type": "object" + }, + "v1Disk": { + "properties": { + "controller": { + "type": "string" + }, + "partitions": { + "items": { + "$ref": "#/definitions/v1Partition" + }, + "type": "array" + }, + "size": { + "description": "Size in GB", + "format": "int32", + "type": "integer" + }, + "vendor": { + "type": "string" + } + }, + "type": "object" + }, + "v1DomainHost": { + "description": "update domain host for application. RootDomain gets dervied from domain host url", + "properties": { + "host": { + "type": "string" + } + }, + "type": "object" + }, + "v1EcrAuthorizationRequestEntity": { + "description": "Ecr registry credentials entity", + "properties": { + "awsCloudAccount": { + "$ref": "#/definitions/v1AwsCloudAccount" + }, + "endpoint": { + "description": "Endpoint url to make the request", + "type": "string" + }, + "isPrivate": { + "description": "If it is public or private", + "type": "boolean" + }, + "region": { + "description": "Name of the region", + "type": "string" + } + }, + "type": "object" + }, + "v1EcrImageEntity": { + "properties": { + "name": { + "description": "Image name", + "type": "string" + }, + "tag": { + "description": "Image tag", + "type": "string" + } + }, + "type": "object" + }, + "v1EcrImageValidateEntity": { + "description": "Ecr registry image meta", + "properties": { + "authEntity": { + "$ref": "#/definitions/v1EcrAuthorizationRequestEntity" + }, + "imageTag": { + "description": "Name of the image tag", + "type": "string" + }, + "images": { + "description": "Ecr Image Entity", + "items": { + "$ref": "#/definitions/v1EcrImageEntity" + }, + "type": "array" + }, + "repoName": { + "description": "Name of the repo", + "type": "string" + } + }, + "type": "object" + }, + "v1EcrRegistry": { + "description": "Ecr registry information", + "properties": { + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1EcrRegistrySpec" + } + }, + "type": "object" + }, + "v1EcrRegistrySpec": { + "description": "Ecr registry spec", + "properties": { + "baseContentPath": { + "description": "OCI ecr registry content base path", + "type": "string" + }, + "credentials": { + "$ref": "#/definitions/v1AwsCloudAccount" + }, + "defaultRegion": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "isPrivate": { + "type": "boolean" + }, + "providerType": { + "default": "helm", + "enum": [ + "helm", + "pack" + ], + "type": "string" + }, + "registryUid": { + "description": "Ecr registry uid", + "type": "string" + }, + "scope": { + "type": "string" + }, + "tls": { + "$ref": "#/definitions/v1TlsConfiguration" + } + }, + "required": [ + "endpoint", + "isPrivate" + ], + "type": "object" + }, + "v1EdgeCloudClusterConfigEntity": { + "description": "Edge cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1EdgeClusterConfig" + } + }, + "type": "object" + }, + "v1EdgeCloudConfig": { + "description": "EdgeCloudConfig is the Schema for the Edgecloudconfigs API", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1EdgeCloudConfigSpec" + }, + "status": { + "$ref": "#/definitions/v1EdgeCloudConfigStatus" + } + }, + "type": "object" + }, + "v1EdgeCloudConfigSpec": { + "description": "EdgeCloudConfigSpec defines the desired state of EdgeCloudConfig", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1EdgeClusterConfig" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1EdgeMachinePoolConfig" + }, + "type": "array" + } + }, + "required": [ + "clusterConfig", + "machinePoolConfig" + ], + "type": "object" + }, + "v1EdgeCloudConfigStatus": { + "properties": { + "conditions": { + "items": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "type": "array" + }, + "nodeImage": { + "type": "string" + }, + "sourceImageId": { + "description": "SourceImageId can be from packref's annotations or from pack.json", + "type": "string" + }, + "useCapiImage": { + "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", + "type": "boolean" + } + }, + "type": "object" + }, + "v1EdgeClusterConfig": { + "description": "EdgeClusterConfig defines Edge Cluster specific Spec", + "properties": { + "sshKeys": { + "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1EdgeHost": { + "description": "EdgeHost is the underlying appliance", + "properties": { + "disableAutoRegister": { + "description": "Set to true if auto register is disabled for the device", + "type": "boolean", + "x-omitempty": false + }, + "hostAddress": { + "description": "HostAddress is a FQDN or IP address of the Host", + "type": "string" + }, + "hostAuthToken": { + "description": "HostAuthToken to authorize auto registration", + "type": "string", + "x-omitempty": false + }, + "hostChecksum": { + "description": "HostChecksum is the checksum provided by the edge host, to be persisted in SaaS", + "type": "string", + "x-omitempty": false + }, + "hostIdentity": { + "$ref": "#/definitions/v1EdgeHostIdentity", + "description": "HostIdentity is the identity to access the edge host" + }, + "hostPairingKey": { + "description": "HostPairingKey is the one-time pairing key to pair the edge host with the device registered in SaaS", + "format": "password", + "type": "string", + "x-omitempty": false + }, + "hostUid": { + "description": "HostUid is the ID of the EdgeHost", + "type": "string" + }, + "macAddress": { + "description": "Mac address of edgehost", + "type": "string", + "x-omitempty": false + }, + "project": { + "$ref": "#/definitions/v1ObjectEntity", + "description": "ProjectUid where the edgehost will be placed during auto registration", + "x-omitempty": false + } + }, + "required": [ + "hostUid", + "hostAddress" + ], + "type": "object" + }, + "v1EdgeHostCloudProperties": { + "description": "Additional cloud properties of the edge host (applicable based on the cloud type)", + "properties": { + "vsphere": { + "$ref": "#/definitions/v1EdgeHostVsphereCloudProperties" + } + }, + "type": "object" + }, + "v1EdgeHostClusterEntity": { + "properties": { + "clusterUid": { + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeHostDevice": { + "properties": { + "aclmeta": { + "$ref": "#/definitions/v1AclMeta" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1EdgeHostDeviceSpec" + }, + "status": { + "$ref": "#/definitions/v1EdgeHostDeviceStatus" + } + } + }, + "v1EdgeHostDeviceEntity": { + "description": "Edge host device information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectTagsEntity" + }, + "spec": { + "$ref": "#/definitions/v1EdgeHostDeviceSpecEntity" + } + }, + "type": "object" + }, + "v1EdgeHostDeviceHostCheckSum": { + "properties": { + "hostCheckSum": { + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeHostDeviceHostPairingKey": { + "properties": { + "hostPairingKey": { + "format": "password", + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeHostDeviceMetaUpdateEntity": { + "description": "Edge host device uid and name", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectTagsEntity" + } + }, + "type": "object" + }, + "v1EdgeHostDeviceSpec": { + "description": "EdgeHostDeviceSpec defines the desired state of EdgeHostDevice", + "properties": { + "cloudProperties": { + "$ref": "#/definitions/v1EdgeHostCloudProperties" + }, + "clusterProfileTemplates": { + "items": { + "$ref": "#/definitions/v1ClusterProfileTemplate" + }, + "type": "array" + }, + "device": { + "$ref": "#/definitions/v1DeviceSpec" + }, + "host": { + "$ref": "#/definitions/v1EdgeHost" + }, + "properties": { + "$ref": "#/definitions/v1EdgeHostProperties" + }, + "service": { + "$ref": "#/definitions/v1ServiceSpec" + }, + "type": { + "description": "Cloudtype of the provisioned edge host", + "enum": [ + "libvirt", + "vsphere", + "edge-native" + ], + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeHostDeviceSpecEntity": { + "description": "Edge host device spec", + "properties": { + "archType": { + "$ref": "#/definitions/v1ArchType" + }, + "hostPairingKey": { + "format": "password", + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeHostDeviceStatus": { + "description": "EdgeHostDeviceStatus defines the observed state of EdgeHostDevice", + "properties": { + "health": { + "$ref": "#/definitions/v1EdgeHostHealth" + }, + "inUseClusters": { + "items": { + "$ref": "#/definitions/v1ObjectEntity" + }, + "type": "array" + }, + "packs": { + "items": { + "$ref": "#/definitions/v1ClusterPackStatus" + }, + "type": "array" + }, + "profileStatus": { + "$ref": "#/definitions/v1ProfileStatus" + }, + "serviceAuthToken": { + "type": "string" + }, + "state": { + "enum": [ + "ready", + "unpaired", + "in-use" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeHostDevices": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1EdgeHostDevice" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1EdgeHostHealth": { + "description": "EdgeHostHealth defines the desired health state of EdgeHostDevice", + "properties": { + "agentVersion": { + "type": "string" + }, + "message": { + "type": "string" + }, + "state": { + "enum": [ + "healthy", + "unhealthy" + ], + "type": "string" + } + } + }, + "v1EdgeHostIdentity": { + "properties": { + "caCert": { + "description": "CACert is the client CA certificate", + "type": "string" + }, + "mode": { + "description": "Mode indicates a system or session connection to the host", + "type": "string" + }, + "socketPath": { + "description": "SocketPath is an optional path to the socket on the host, if not using defaults", + "type": "string" + }, + "sshSecret": { + "$ref": "#/definitions/v1EdgeHostSSHSecret", + "description": "SSHSecret to the secret containing ssh-username" + } + } + }, + "v1EdgeHostMeta": { + "properties": { + "archType": { + "$ref": "#/definitions/v1ArchType" + }, + "edgeHostType": { + "enum": [ + "libvirt", + "edge-native", + "vsphere" + ], + "type": "string" + }, + "healthState": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeHostNetwork": { + "description": "Network defines the network configuration for a virtual machine", + "properties": { + "networkName": { + "description": "NetworkName of the network where this machine will be connected", + "type": "string" + }, + "networkType": { + "description": "NetworkType specifies the type of network", + "enum": [ + "default", + "bridge" + ], + "type": "string" + } + }, + "required": [ + "networkName", + "networkType" + ], + "type": "object" + }, + "v1EdgeHostProperties": { + "description": "Additional properties of edge host", + "properties": { + "networks": { + "items": { + "$ref": "#/definitions/v1EdgeHostNetwork" + }, + "type": "array" + }, + "storagePools": { + "items": { + "$ref": "#/definitions/v1EdgeHostStoragePool" + }, + "type": "array" + } + } + }, + "v1EdgeHostSSHSecret": { + "properties": { + "name": { + "description": "SSH secret name", + "type": "string" + }, + "privateKey": { + "description": "Private Key to access the host", + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeHostSpecHost": { + "description": "Host specifications", + "properties": { + "hostAddress": { + "description": "HostAddress is a FQDN or IP address of the Host", + "type": "string" + }, + "macAddress": { + "type": "string" + } + } + }, + "v1EdgeHostState": { + "enum": [ + "ready", + "unpaired", + "in-use" + ], + "type": "string" + }, + "v1EdgeHostStoragePool": { + "description": "StoragePool is the storage pool for the vm image", + "properties": { + "name": { + "type": "string" + } + } + }, + "v1EdgeHostVsphereCloudProperties": { + "description": "Vsphere cloud properties of edge host", + "properties": { + "datacenters": { + "items": { + "$ref": "#/definitions/v1VsphereCloudDatacenter" + }, + "type": "array" + } + } + }, + "v1EdgeHostsMeta": { + "properties": { + "edgeHosts": { + "items": { + "$ref": "#/definitions/v1EdgeHostMeta" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1EdgeHostsMetadata": { + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1EdgeHostsMetadataSpec" + }, + "status": { + "$ref": "#/definitions/v1EdgeHostsMetadataStatus" + } + }, + "type": "object" + }, + "v1EdgeHostsMetadataFilter": { + "description": "Edge host metadata spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1EdgeHostsMetadataFilterSpec" + }, + "sort": { + "items": { + "$ref": "#/definitions/v1EdgeHostsMetadataSortSpec" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1EdgeHostsMetadataFilterSpec": { + "description": "Edge hosts metadata filter spec", + "properties": { + "name": { + "$ref": "#/definitions/v1FilterString" + }, + "states": { + "items": { + "$ref": "#/definitions/v1EdgeHostState" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1EdgeHostsMetadataSortFields": { + "enum": [ + "name", + "state", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "type": "string", + "x-nullable": true + }, + "v1EdgeHostsMetadataSortSpec": { + "properties": { + "field": { + "$ref": "#/definitions/v1EdgeHostsMetadataSortFields" + }, + "order": { + "$ref": "#/definitions/v1SortOrder" + } + } + }, + "v1EdgeHostsMetadataSpec": { + "properties": { + "clusterProfileTemplates": { + "items": { + "$ref": "#/definitions/v1ProfileTemplateSummary" + }, + "type": "array" + }, + "device": { + "$ref": "#/definitions/v1DeviceSpec" + }, + "host": { + "$ref": "#/definitions/v1EdgeHostSpecHost" + }, + "projectMeta": { + "$ref": "#/definitions/v1ProjectMeta" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeHostsMetadataStatus": { + "properties": { + "health": { + "$ref": "#/definitions/v1EdgeHostHealth" + }, + "inUseClusters": { + "items": { + "$ref": "#/definitions/v1ObjectEntity" + }, + "type": "array" + }, + "state": { + "$ref": "#/definitions/v1EdgeHostState" + } + }, + "type": "object" + }, + "v1EdgeHostsMetadataSummary": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1EdgeHostsMetadata" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1EdgeHostsSearchSummary": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1EdgeHostsMetadata" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1EdgeInstanceType": { + "description": "EdgeInstanceType defines the instance configuration for a docker container node", + "properties": { + "memoryInMB": { + "description": "MemoryinMB is the memory in megabytes", + "format": "int32", + "type": "integer" + }, + "numCPUs": { + "description": "NumCPUs is the number of CPUs", + "format": "int32", + "type": "integer" + } + }, + "required": [ + "numCPUs", + "memoryInMB" + ], + "type": "object" + }, + "v1EdgeMachine": { + "description": "Edge cloud VM definition", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the machine.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1EdgeMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudMachineStatus" + } + }, + "type": "object" + }, + "v1EdgeMachinePoolCloudConfigEntity": { + "properties": { + "edgeHosts": { + "items": { + "$ref": "#/definitions/v1EdgeMachinePoolHostEntity" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "edgeHosts" + ] + }, + "v1EdgeMachinePoolConfig": { + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "additionalLabels", + "type": "object" + }, + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", + "type": "object" + }, + "hosts": { + "items": { + "$ref": "#/definitions/v1EdgeMachinePoolHost" + }, + "type": "array" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean" + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "machinePoolProperties": { + "$ref": "#/definitions/v1MachinePoolProperties" + }, + "maxSize": { + "description": "max size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "minSize": { + "description": "min size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "nodeRepaveInterval": { + "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", + "format": "int32", + "type": "integer" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "taints": { + "description": "master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array", + "uniqueItems": true + }, + "updateStrategy": { + "$ref": "#/definitions/v1UpdateStrategy", + "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" + } + }, + "required": [ + "hosts" + ], + "type": "object" + }, + "v1EdgeMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1EdgeMachinePoolCloudConfigEntity" + }, + "poolConfig": { + "$ref": "#/definitions/v1MachinePoolConfigEntity" + } + }, + "type": "object" + }, + "v1EdgeMachinePoolHost": { + "description": "EdgeHost of Edge clusters", + "properties": { + "hostAddress": { + "description": "HostAddress is a FQDN or IP address of the Host", + "type": "string" + }, + "hostIdentity": { + "$ref": "#/definitions/v1EdgeMachinePoolHostIdentity", + "description": "HostIdentity is the identity to access the edge host" + }, + "hostName": { + "description": "HostName is the name of the EdgeHost", + "type": "string" + }, + "hostUid": { + "description": "HostUid is the ID of the EdgeHost", + "type": "string" + } + }, + "required": [ + "hostUid", + "hostAddress" + ], + "type": "object" + }, + "v1EdgeMachinePoolHostEntity": { + "properties": { + "hostUid": { + "type": "string" + } + }, + "required": [ + "hostUid" + ] + }, + "v1EdgeMachinePoolHostIdentity": { + "properties": { + "caCert": { + "description": "CACert is the client CA certificate", + "type": "string" + }, + "socketPath": { + "description": "SocketPath is an optional path to the socket on the host, if not using defaults", + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeMachineSpec": { + "description": "Edge cloud VM definition spec", + "properties": { + "bootstrapped": { + "type": "boolean" + }, + "customImage": { + "type": "string" + }, + "edgeHostUid": { + "type": "string" + }, + "instanceType": { + "$ref": "#/definitions/v1EdgeInstanceType" + }, + "loadBalancerConfigured": { + "type": "boolean" + }, + "mounts": { + "items": { + "$ref": "#/definitions/v1EdgeMount" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1EdgeMachines": { + "description": "Edge machine list", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1EdgeMachine" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1EdgeMount": { + "description": "Edge mounts", + "properties": { + "containerPath": { + "type": "string" + }, + "hostPath": { + "type": "string" + }, + "readonly": { + "type": "boolean" + } + }, + "type": "object" + }, + "v1EdgeNativeCloudClusterConfigEntity": { + "description": "EdgeNative cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1EdgeNativeClusterConfig" + } + }, + "type": "object" + }, + "v1EdgeNativeCloudConfig": { + "description": "EdgeNativeCloudConfig is the Schema for the edgenativecloudconfigs API", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1EdgeNativeCloudConfigSpec" + }, + "status": { + "$ref": "#/definitions/v1EdgeNativeCloudConfigStatus" + } + }, + "type": "object" + }, + "v1EdgeNativeCloudConfigSpec": { + "description": "EdgeNativeCloudConfigSpec defines the desired state of EdgeNativeCloudConfig", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1EdgeNativeClusterConfig" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1EdgeNativeMachinePoolConfig" + }, + "type": "array" + } + }, + "required": [ + "clusterConfig", + "machinePoolConfig" + ], + "type": "object" + }, + "v1EdgeNativeCloudConfigStatus": { + "description": "EdgeNativeCloudConfigStatus defines the observed state of EdgeNativeCloudConfig", + "properties": { + "conditions": { + "items": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "type": "array" + }, + "nodeImage": { + "type": "string" + }, + "sourceImageId": { + "description": "SourceImageId can be from packref's annotations or from pack.json", + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeNativeClusterConfig": { + "description": "EdgeNativeClusterConfig definnes Edge Native Cluster specific Spec", + "properties": { + "controlPlaneEndpoint": { + "$ref": "#/definitions/v1EdgeNativeControlPlaneEndPoint", + "description": "ControlPlaneEndpoint is the control plane endpoint, which can be an IP or FQDN" + }, + "ntpServers": { + "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", + "items": { + "default": "", + "type": "string" + }, + "type": "array" + }, + "overlayNetworkConfiguration": { + "$ref": "#/definitions/v1EdgeNativeOverlayNetworkConfiguration", + "description": "OverlayNetworkConfiguration is the configuration for the overlay network" + }, + "sshKeys": { + "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", + "items": { + "default": "", + "type": "string" + }, + "type": "array" + }, + "staticIp": { + "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", + "type": "boolean" + } + }, + "type": "object" + }, + "v1EdgeNativeControlPlaneEndPoint": { + "properties": { + "ddnsSearchDomain": { + "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", + "type": "string" + }, + "host": { + "description": "Host is FQDN(DDNS) or IP", + "type": "string" + }, + "type": { + "description": "Type indicates DDNS or VIP", + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeNativeHost": { + "description": "EdgeNativeHost is the underlying appliance", + "properties": { + "IsCandidateCaption": { + "default": false, + "description": "Is Edge host nominated as candidate", + "type": "boolean", + "x-omitempty": false + }, + "caCert": { + "description": "CACert for TLS connections", + "type": "string" + }, + "hostAddress": { + "default": "", + "description": "HostAddress is a FQDN or IP address of the Host", + "type": "string" + }, + "hostName": { + "default": "", + "description": "Qualified name of host", + "type": "string" + }, + "hostUid": { + "default": "", + "description": "HostUid is the ID of the EdgeHost", + "type": "string" + }, + "nic": { + "$ref": "#/definitions/v1Nic", + "description": "Edge native nic" + }, + "nicName": { + "description": "Deprecated. Edge host nic name", + "type": "string" + }, + "staticIP": { + "description": "Deprecated. Edge host static IP", + "type": "string" + }, + "twoNodeCandidatePriority": { + "description": "Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate", + "enum": [ + "primary", + "secondary" + ], + "type": "string" + } + }, + "required": [ + "hostUid", + "hostAddress" + ], + "type": "object" + }, + "v1EdgeNativeInstanceType": { + "description": "EdgeNativeInstanceType defines the instance configuration for a docker container node", + "properties": { + "diskGiB": { + "description": "DiskGiB is the size of a virtual machine's disk", + "format": "int32", + "type": "integer" + }, + "memoryMiB": { + "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", + "format": "int32", + "type": "integer" + }, + "name": { + "description": "Name is the instance name", + "type": "string" + }, + "numCPUs": { + "description": "NumCPUs is the number of CPUs", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1EdgeNativeMachine": { + "description": "EdgeNative cloud VM definition", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the machine.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1EdgeNativeMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudMachineStatus" + } + } + }, + "v1EdgeNativeMachinePoolCloudConfigEntity": { + "properties": { + "edgeHosts": { + "items": { + "$ref": "#/definitions/v1EdgeNativeMachinePoolHostEntity" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "edgeHosts" + ] + }, + "v1EdgeNativeMachinePoolConfig": { + "properties": { + "additionalLabels": { + "additionalProperties": { + "default": "", + "type": "string" + }, + "description": "AdditionalLabels", + "type": "object" + }, + "additionalTags": { + "additionalProperties": { + "default": "", + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", + "type": "object" + }, + "hosts": { + "items": { + "$ref": "#/definitions/v1EdgeNativeHost" + }, + "type": "array" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean" + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "default": "", + "type": "string" + }, + "type": "array" + }, + "machinePoolProperties": { + "$ref": "#/definitions/v1MachinePoolProperties" + }, + "maxSize": { + "description": "max size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "minSize": { + "description": "min size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "nodeRepaveInterval": { + "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", + "format": "int32", + "type": "integer" + }, + "osType": { + "description": "the os type for the pool, must be supported by the provider", + "type": "string" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "taints": { + "description": "master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array" + }, + "updateStrategy": { + "$ref": "#/definitions/v1UpdateStrategy", + "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" + } + }, + "required": [ + "hosts" + ], + "type": "object" + }, + "v1EdgeNativeMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1EdgeNativeMachinePoolCloudConfigEntity" + }, + "poolConfig": { + "$ref": "#/definitions/v1MachinePoolConfigEntity" + } + }, + "type": "object" + }, + "v1EdgeNativeMachinePoolHostEntity": { + "properties": { + "hostName": { + "description": "Edge host name", + "type": "string" + }, + "hostUid": { + "description": "Edge host id", + "type": "string" + }, + "nic": { + "$ref": "#/definitions/v1Nic", + "description": "Edge native nic" + }, + "nicName": { + "description": "Deprecated - Edge host nic name", + "type": "string" + }, + "staticIP": { + "description": "Deprecated - Edge host static IP", + "type": "string" + }, + "twoNodeCandidatePriority": { + "description": "Set the edgehost candidate priority as primary or secondary, if the edgehost is nominated as two node candidate", + "enum": [ + "primary", + "secondary" + ], + "type": "string" + } + }, + "required": [ + "hostUid" + ] + }, + "v1EdgeNativeMachineSpec": { + "description": "EdgeNative cloud VM definition spec", + "properties": { + "edgeHostUid": { + "type": "string" + }, + "instanceType": { + "$ref": "#/definitions/v1EdgeNativeInstanceType" + }, + "nics": { + "items": { + "$ref": "#/definitions/v1EdgeNativeNic" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1EdgeNativeMachines": { + "description": "EdgeNative machine list", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1EdgeNativeMachine" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1EdgeNativeNic": { + "description": "Generic network interface", + "properties": { + "index": { + "format": "int8", + "type": "integer" + }, + "networkName": { + "type": "string" + }, + "privateIPs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "publicIp": { + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeNativeOverlayNetworkConfiguration": { + "properties": { + "cidr": { + "description": "CIDR is the CIDR of the overlay network", + "type": "string" + }, + "enable": { + "description": "Enable is a flag to enable overlay network", + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1EdgeNativeTwoNodeCandidateEntity": { + "properties": { + "primaryEdgeHost": { + "type": "string" + }, + "secondaryEdgeHost": { + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeServiceLogin": { + "description": "System service login input", + "properties": { + "authToken": { + "description": "authToken helps in two step verification for the authorization.", + "type": "string" + }, + "edgeHostUid": { + "type": "string" + }, + "serviceName": { + "type": "string" + }, + "serviceVersion": { + "type": "string" + }, + "spectroClusterUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeToken": { + "description": "Edge token information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1EdgeTokenSpec" + }, + "status": { + "$ref": "#/definitions/v1EdgeTokenStatus" + } + }, + "type": "object" + }, + "v1EdgeTokenActiveState": { + "description": "Edge token active state", + "properties": { + "isActive": { + "description": "Set to 'true', if the token is active", + "type": "boolean" + } + } + }, + "v1EdgeTokenEntity": { + "description": "Edge token request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1EdgeTokenSpecEntity" + } + }, + "type": "object" + }, + "v1EdgeTokenProject": { + "description": "Edge token project information", + "properties": { + "name": { + "description": "Project name", + "type": "string" + }, + "uid": { + "description": "Project uid", + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeTokenSpec": { + "description": "Edge token specification", + "properties": { + "defaultProject": { + "$ref": "#/definitions/v1EdgeTokenProject", + "description": "Default project where the edgehost will be placed on the token authorization" + }, + "expiry": { + "$ref": "#/definitions/v1Time", + "description": "Edge token expiry date" + }, + "token": { + "description": "Edge token", + "type": "string" + } + }, + "type": "object" + }, + "v1EdgeTokenSpecEntity": { + "description": "Edge token specification", + "properties": { + "defaultProjectUid": { + "description": "Default project where the edgehost will be placed on the token authorization", + "type": "string" + }, + "expiry": { + "$ref": "#/definitions/v1Time", + "description": "Edge token expiry date" + } + }, + "type": "object" + }, + "v1EdgeTokenSpecUpdate": { + "description": "Edge token spec to be updated", + "properties": { + "defaultProjectUid": { + "description": "Default project where the edgehost will be placed on the token authorization", + "type": "string" + }, + "expiry": { + "$ref": "#/definitions/v1Time" + } + } + }, + "v1EdgeTokenStatus": { + "description": "Edge token status", + "properties": { + "isActive": { + "description": "Set to 'true', if the token is active", + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1EdgeTokenUpdate": { + "description": "Edge token update request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1EdgeTokenSpecUpdate" + } + }, + "type": "object" + }, + "v1EdgeTokens": { + "properties": { + "items": { + "description": "List of edge tokens", + "items": { + "$ref": "#/definitions/v1EdgeToken" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1EksAddon": { + "description": "EksAddon represents a EKS addon", + "properties": { + "conflictResolution": { + "description": "ConflictResolution is used to declare what should happen if there are parameter conflicts.", + "type": "string" + }, + "name": { + "description": "Name is the name of the addon", + "type": "string" + }, + "serviceAccountRoleARN": { + "description": "ServiceAccountRoleArn is the ARN of an IAM role to bind to the addons service account", + "type": "string" + }, + "version": { + "description": "Version is the version of the addon to use", + "type": "string" + } + }, + "required": [ + "name", + "version" + ], + "type": "object" + }, + "v1EksCloudClusterConfigEntity": { + "description": "EKS cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1EksClusterConfig" + } + }, + "type": "object" + }, + "v1EksCloudConfig": { + "description": "EksCloudConfig is the Schema for the ekscloudconfigs API", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1EksCloudConfigSpec" + } + }, + "type": "object" + }, + "v1EksCloudConfigSpec": { + "description": "EksCloudConfigSpec defines the cloud configuration input by user", + "properties": { + "cloudAccountRef": { + "$ref": "#/definitions/v1ObjectReference", + "description": "cloudAccountRef should point to the secret which contains EksCloudAccount" + }, + "clusterConfig": { + "$ref": "#/definitions/v1EksClusterConfig" + }, + "fargateProfiles": { + "items": { + "$ref": "#/definitions/v1FargateProfile" + }, + "type": "array" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1EksMachinePoolConfig" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1EksClusterConfig": { + "description": "EksClusterConfig defines EKS specific config", + "properties": { + "addons": { + "description": "Addons defines the EKS addons to enable with the EKS cluster. This may be required for brownfield clusters", + "items": { + "$ref": "#/definitions/v1EksAddon" + }, + "type": "array" + }, + "bastionDisabled": { + "description": "BastionDisabled is the option to disable bastion node", + "type": "boolean" + }, + "controlPlaneLoadBalancer": { + "description": "ControlPlaneLoadBalancer specifies how API server elb will be configured, this field is optional, not provided, \"\", default => \"Internet-facing\" \"Internet-facing\" => \"Internet-facing\" \"internal\" => \"internal\" For spectro saas setup we require to talk to the apiserver from our cluster so ControlPlaneLoadBalancer should be \"\", not provided or \"Internet-facing\"", + "type": "string" + }, + "encryptionConfig": { + "$ref": "#/definitions/v1EncryptionConfig", + "description": "EncryptionConfig specifies the encryption configuration for the cluster" + }, + "endpointAccess": { + "$ref": "#/definitions/v1EksClusterConfigEndpointAccess", + "description": "Endpoints specifies access to this cluster's control plane endpoints" + }, + "region": { + "description": "The AWS Region the cluster lives in.", + "type": "string" + }, + "sshKeyName": { + "description": "SSHKeyName specifies which EC2 SSH key can be used to access machines.", + "type": "string" + }, + "vpcId": { + "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", + "type": "string" + } + }, + "required": [ + "region" + ], + "type": "object" + }, + "v1EksClusterConfigEndpointAccess": { + "description": "EndpointAccess specifies how control plane endpoints are accessible", + "properties": { + "private": { + "description": "Private points VPC-internal control plane access to the private endpoint", + "type": "boolean" + }, + "privateCIDRs": { + "description": "PrivateCIDRs specifies which blocks can access the private endpoint", + "items": { + "type": "string" + }, + "type": "array" + }, + "public": { + "description": "Public controls whether control plane endpoints are publicly accessible", + "type": "boolean" + }, + "publicCIDRs": { + "description": "PublicCIDRs specifies which blocks can access the public endpoint", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1EksFargateProfiles": { + "description": "Fargate profiles", + "properties": { + "fargateProfiles": { + "items": { + "$ref": "#/definitions/v1FargateProfile" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1EksMachineCloudConfigEntity": { + "properties": { + "awsLaunchTemplate": { + "$ref": "#/definitions/v1AwsLaunchTemplate" + }, + "azs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "capacityType": { + "default": "on-demand", + "description": "EC2 instance capacity type", + "enum": [ + "on-demand", + "spot" + ], + "type": "string" + }, + "enableAwsLaunchTemplate": { + "description": "flag to know if aws launch template is enabled", + "type": "boolean" + }, + "instanceType": { + "description": "instance type", + "type": "string" + }, + "rootDeviceSize": { + "description": "rootDeviceSize in GBs", + "format": "int64", + "maximum": 2000, + "minimum": 1, + "type": "integer" + }, + "spotMarketOptions": { + "$ref": "#/definitions/v1SpotMarketOptions", + "description": "SpotMarketOptions allows users to configure instances to be run using AWS Spot instances." + }, + "subnets": { + "items": { + "$ref": "#/definitions/v1EksSubnetEntity" + }, + "type": "array" + } + } + }, + "v1EksMachinePoolConfig": { + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "additionalLabels", + "type": "object" + }, + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", + "type": "object" + }, + "awsLaunchTemplate": { + "$ref": "#/definitions/v1AwsLaunchTemplate" + }, + "azs": { + "description": "AZs is only used for dynamic placement", + "items": { + "type": "string" + }, + "type": "array" + }, + "capacityType": { + "default": "on-demand", + "description": "EC2 instance capacity type", + "enum": [ + "on-demand", + "spot" + ], + "type": "string" + }, + "enableAwsLaunchTemplate": { + "description": "flag to know if aws launch template is enabled", + "type": "boolean" + }, + "instanceConfig": { + "$ref": "#/definitions/v1InstanceConfig" + }, + "instanceType": { + "description": "instance type", + "type": "string" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean", + "x-omitempty": false + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "machinePoolProperties": { + "$ref": "#/definitions/v1MachinePoolProperties" + }, + "maxSize": { + "description": "max size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "minSize": { + "description": "min size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "nodeRepaveInterval": { + "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", + "format": "int32", + "type": "integer" + }, + "rootDeviceSize": { + "description": "rootDeviceSize in GBs", + "format": "int64", + "type": "integer" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "spotMarketOptions": { + "$ref": "#/definitions/v1SpotMarketOptions", + "description": "SpotMarketOptions allows users to configure instances to be run using AWS Spot instances." + }, + "subnetIds": { + "additionalProperties": { + "type": "string" + }, + "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment", + "type": "object" + }, + "taints": { + "description": "master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array", + "uniqueItems": true + }, + "updateStrategy": { + "$ref": "#/definitions/v1UpdateStrategy", + "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean", + "x-omitempty": false + } + }, + "required": [ + "isControlPlane" + ], + "type": "object" + }, + "v1EksMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1EksMachineCloudConfigEntity" + }, + "poolConfig": { + "$ref": "#/definitions/v1MachinePoolConfigEntity" + } + } + }, + "v1EksSubnetEntity": { + "properties": { + "az": { + "type": "string" + }, + "id": { + "type": "string" + } + } + }, + "v1EncryptionConfig": { + "description": "EncryptionConfig specifies the encryption configuration for the EKS clsuter.", + "properties": { + "isEnabled": { + "description": "Is encryption configuration enabled for the cluster", + "type": "boolean" + }, + "provider": { + "description": "Provider specifies the ARN or alias of the CMK (in AWS KMS)", + "type": "string" + }, + "resources": { + "description": "Resources specifies the resources to be encrypted", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1Event": { + "description": "Describes the component event details", + "properties": { + "involvedObject": { + "$ref": "#/definitions/v1ObjectReference", + "description": "Describes object involved in event generation", + "type": "object" + }, + "message": { + "description": "Describes message associated with the event", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta", + "type": "object" + }, + "reason": { + "description": "Describes the reason for the event", + "type": "string" + }, + "relatedObject": { + "$ref": "#/definitions/v1EventRelatedObject", + "description": "Describes object related to the event", + "type": "object" + }, + "severity": { + "description": "Describes the gravitas for the event", + "type": "string" + }, + "source": { + "$ref": "#/definitions/v1EventSource", + "description": "Describes the origin for the event", + "type": "object" + } + }, + "type": "object" + }, + "v1EventRelatedObject": { + "description": "Object for which the event is related", + "properties": { + "kind": { + "enum": [ + "spectrocluster", + "edgehost" + ], + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1EventSource": { + "description": "Describes the origin for the event", + "properties": { + "component": { + "description": "Describes the component where event originated", + "type": "string" + }, + "host": { + "description": "Describes the host where event originated", + "type": "string" + } + }, + "type": "object" + }, + "v1Events": { + "description": "An array of component events items", + "properties": { + "items": { + "description": "Describes a list of returned component events", + "items": { + "$ref": "#/definitions/v1Event" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData", + "description": "Describes the meta information about the component event lists" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1EventsRelatedObjectsEntity": { + "properties": { + "relatedObjectUids": { + "description": "List of uids of the related object", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "relatedObjectUids" + ], + "type": "object" + }, + "v1FargateProfile": { + "description": "FargateProfile defines the desired state of FargateProfile", + "properties": { + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to AWS resources managed by the AWS provider, in addition to the ones added by default.", + "type": "object" + }, + "name": { + "description": "name specifies the profile name.", + "type": "string" + }, + "selectors": { + "description": "Selectors specify fargate pod selectors.", + "items": { + "$ref": "#/definitions/v1FargateSelector" + }, + "type": "array" + }, + "subnetIds": { + "description": "SubnetIDs specifies which subnets are used for the auto scaling group of this nodegroup.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1FargateSelector": { + "description": "FargateSelector specifies a selector for pods that should run on this fargate pool", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels specifies which pod labels this selector should match.", + "type": "object" + }, + "namespace": { + "description": "Namespace specifies which namespace this selector should match.", + "type": "string" + } + }, + "required": [ + "namespace" + ], + "type": "object" + }, + "v1FileUploadResponse": { + "description": "File upload response", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1FilterArray": { + "properties": { + "beginsWith": { + "items": { + "type": "string" + }, + "type": "array", + "x-nullable": true + }, + "eq": { + "items": { + "type": "string" + }, + "type": "array", + "x-nullable": true + }, + "ignoreCase": { + "default": true, + "type": "boolean" + }, + "ne": { + "items": { + "type": "string" + }, + "type": "array", + "x-nullable": true + } + }, + "type": "object" + }, + "v1FilterIntRange": { + "properties": { + "eq": { + "format": "int32", + "type": "integer", + "x-nullable": true + }, + "gt": { + "format": "int32", + "type": "integer", + "x-nullable": true + }, + "gte": { + "format": "int32", + "type": "integer", + "x-nullable": true + }, + "lt": { + "format": "int32", + "type": "integer", + "x-nullable": true + }, + "lte": { + "format": "int32", + "type": "integer", + "x-nullable": true + }, + "ne": { + "format": "int32", + "type": "integer", + "x-nullable": true + } + }, + "type": "object" + }, + "v1FilterMetadata": { + "description": "Filter metadata object", + "properties": { + "filterType": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1FilterNumberRange": { + "properties": { + "eq": { + "type": "number", + "x-nullable": true + }, + "gt": { + "type": "number", + "x-nullable": true + }, + "gte": { + "type": "number", + "x-nullable": true + }, + "lt": { + "type": "number", + "x-nullable": true + }, + "lte": { + "type": "number", + "x-nullable": true + }, + "ne": { + "type": "number", + "x-nullable": true + } + }, + "type": "object" + }, + "v1FilterString": { + "properties": { + "beginsWith": { + "type": "string", + "x-nullable": true + }, + "contains": { + "type": "string", + "x-nullable": true + }, + "eq": { + "type": "string", + "x-nullable": true + }, + "ignoreCase": { + "default": true, + "type": "boolean" + }, + "ne": { + "type": "string", + "x-nullable": true + } + }, + "type": "object" + }, + "v1FilterSummary": { + "description": "Filter summary object", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1FilterSummarySpec" + } + }, + "type": "object" + }, + "v1FilterSummarySpec": { + "properties": { + "filterType": { + "type": "string" + } + } + }, + "v1FilterVersionString": { + "properties": { + "beginsWith": { + "type": "string", + "x-nullable": true + }, + "eq": { + "type": "string", + "x-nullable": true + }, + "gt": { + "type": "string", + "x-nullable": true + }, + "lt": { + "type": "string", + "x-nullable": true + }, + "ne": { + "type": "string", + "x-nullable": true + } + }, + "type": "object" + }, + "v1FiltersMetadata": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1FilterMetadata" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1FiltersSummary": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1FilterSummary" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1FipsSettings": { + "description": "FIPS configuration", + "properties": { + "fipsClusterFeatureConfig": { + "$ref": "#/definitions/v1NonFipsConfig" + }, + "fipsClusterImportConfig": { + "$ref": "#/definitions/v1NonFipsConfig" + }, + "fipsPackConfig": { + "$ref": "#/definitions/v1NonFipsConfig" + } + } + }, + "v1FreemiumUsage": { + "properties": { + "usage": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1FreemiumUsageLimit": { + "properties": { + "activeClusters": { + "type": "integer", + "x-omitempty": false + }, + "overageUsage": { + "type": "number", + "x-omitempty": false + }, + "usage": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1GPUConfig": { + "properties": { + "addresses": { + "additionalProperties": { + "type": "string" + }, + "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- > 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", + "type": "object" + }, + "deviceModel": { + "description": "DeviceModel is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", + "type": "string" + }, + "numGPUs": { + "description": "NumGPUs is the number of GPUs", + "format": "int32", + "type": "integer" + }, + "vendorName": { + "description": "VendorName is the GPU vendor, for eg., NVIDIA or AMD", + "type": "string" + } + }, + "type": "object" + }, + "v1GPUDeviceSpec": { + "properties": { + "addresses": { + "additionalProperties": { + "type": "string" + }, + "description": "Addresses is a map of PCI device entry name to its addresses.\nExample entry would be \"11:00.0 VGA compatible controller [0300]: NVIDIA\nCorporation Device [10de:1eb1] (rev a1)\"- > 0000_11_00_0\" The address is\nBDF (Bus Device Function) identifier format seperated by underscores. The\nfirst 4 bits are almost always 0000. In the above example 11 is Bus, 00\nis Device,0 is function. The values of these addreses are expected in hexadecimal\nformat\n", + "type": "object" + }, + "model": { + "description": "Model is the model of GPU, for a given vendor, for eg., TU104GL [Tesla T4]", + "type": "string" + }, + "vendor": { + "description": "Vendor is the GPU vendor, for eg., NVIDIA or AMD", + "type": "string" + } + }, + "type": "object" + }, + "v1GcpAccount": { + "description": "GCP account information", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the account.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1GcpAccountSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudAccountStatus" + } + }, + "type": "object" + }, + "v1GcpAccountEntity": { + "description": "GCP account information", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the account.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1GcpAccountEntitySpec" + }, + "status": { + "$ref": "#/definitions/v1CloudAccountStatus" + } + }, + "type": "object" + }, + "v1GcpAccountEntitySpec": { + "properties": { + "jsonCredentials": { + "description": "Gcp cloud account json credentials", + "type": "string" + }, + "jsonCredentialsFileUid": { + "description": "Reference of the credentials stored in the file", + "type": "string" + } + }, + "type": "object" + }, + "v1GcpAccountNameValidateSpec": { + "description": "Gcp cloud account name validate spec", + "properties": { + "bucketName": { + "description": "Bucket name in the GCP", + "type": "string" + }, + "credentials": { + "$ref": "#/definitions/v1GcpAccountValidateSpec" + }, + "projectId": { + "description": "ProjectId in the GCP", + "type": "string" + } + }, + "required": [ + "credentials", + "bucketName" + ], + "type": "object" + }, + "v1GcpAccountSpec": { + "properties": { + "jsonCredentials": { + "description": "Gcp cloud account json credentials", + "type": "string" + }, + "jsonCredentialsFileName": { + "description": "Reference of the credentials stored in the file", + "type": "string" + } + }, + "type": "object" + }, + "v1GcpAccountValidateSpec": { + "description": "Gcp cloud account entity which takes json credentials or reference to the file where credentials are stored", + "properties": { + "jsonCredentials": { + "description": "Gcp cloud account json credentials", + "type": "string" + }, + "jsonCredentialsFileUid": { + "description": "Reference of the credentials stored in the file", + "type": "string" + } + }, + "type": "object" + }, + "v1GcpAccounts": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1GcpAccount" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1GcpCloudAccountValidateEntity": { + "description": "Gcp cloud account spec", + "properties": { + "spec": { + "$ref": "#/definitions/v1GcpAccountValidateSpec" + } + }, + "type": "object" + }, + "v1GcpCloudClusterConfigEntity": { + "description": "Gcp cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1GcpClusterConfig" + } + }, + "type": "object" + }, + "v1GcpCloudConfig": { + "description": "GcpCloudConfig is the Schema for the gcpcloudconfigs API", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1GcpCloudConfigSpec" + }, + "status": { + "$ref": "#/definitions/v1GcpCloudConfigStatus" + } + }, + "type": "object" + }, + "v1GcpCloudConfigSpec": { + "description": "GcpCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", + "properties": { + "cloudAccountRef": { + "$ref": "#/definitions/v1ObjectReference", + "description": "cloudAccountRef should point to the secret which contains GcpCloudAccount" + }, + "clusterConfig": { + "$ref": "#/definitions/v1GcpClusterConfig" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1GcpMachinePoolConfig" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1GcpCloudConfigStatus": { + "description": "GcpCloudConfigStatus defines the observed state of GcpCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", + "properties": { + "ansibleRoleDigest": { + "description": "For mold controller to identify if is there any changes in Pack", + "type": "string" + }, + "conditions": { + "description": "spectroAnsibleProvisioner: should be added only once, subsequent recocile will use the same provisioner SpectroAnsiblePacker bool `json:\"spectroAnsiblePacker,omitempty\"`", + "items": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "type": "array" + }, + "images": { + "$ref": "#/definitions/v1GcpImage", + "description": "Images array items should be 1-to-1 mapping to Spec.MachinePoolConfig" + }, + "isAddonLayer": { + "description": "addon layers present in spc", + "type": "boolean" + }, + "roleDigest": { + "additionalProperties": { + "type": "string" + }, + "description": "this map will be for ansible roles present in each pack", + "type": "object" + }, + "sourceImageId": { + "description": "sourceImageId, it can be from packref's annotations or from pack.json", + "type": "string" + }, + "useCapiImage": { + "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", + "type": "boolean" + } + }, + "type": "object" + }, + "v1GcpClusterConfig": { + "description": "Cluster level configuration for gcp cloud and applicable for all the machine pools", + "properties": { + "managedClusterConfig": { + "$ref": "#/definitions/v1GcpManagedClusterConfig" + }, + "network": { + "description": "NetworkName if empty would create VPC Network in auto mode. If provided, custom VPC network will be used", + "type": "string" + }, + "project": { + "description": "Name of the project in which cluster is to be deployed", + "type": "string" + }, + "region": { + "description": "GCP region for the cluster", + "type": "string" + } + }, + "required": [ + "project", + "region" + ], + "type": "object" + }, + "v1GcpImage": { + "description": "Refers to GCP image", + "properties": { + "name": { + "type": "string" + }, + "os": { + "type": "string" + }, + "region": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1GcpImageUrlEntity": { + "description": "Gcp image url entity", + "properties": { + "imageFamily": { + "description": "The name of the image family to which this image belongs", + "type": "string" + }, + "imageUrl": { + "description": "Server-defined URL for the resource", + "type": "string" + }, + "name": { + "description": "Name of the resource", + "type": "string" + } + }, + "type": "object" + }, + "v1GcpInstanceTypes": { + "description": "Retrieves a list of GCP instance types", + "properties": { + "instanceTypes": { + "description": "List of GCP instance types", + "items": { + "$ref": "#/definitions/v1InstanceType" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1GcpMachine": { + "description": "GCP cloud VM definition", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the machine.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1GcpMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudMachineStatus" + } + }, + "type": "object" + }, + "v1GcpMachinePoolCloudConfigEntity": { + "properties": { + "azs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "instanceType": { + "type": "string" + }, + "rootDeviceSize": { + "description": "Size of root volume in GB. Default is 30GB", + "format": "int64", + "type": "integer" + }, + "subnet": { + "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used", + "type": "string" + }, + "subnets": { + "items": { + "$ref": "#/definitions/v1GcpSubnetEntity" + }, + "type": "array" + } + }, + "required": [ + "instanceType" + ], + "type": "object" + }, + "v1GcpMachinePoolConfig": { + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "additionalLabels", + "type": "object" + }, + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", + "type": "object" + }, + "azs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "instanceConfig": { + "$ref": "#/definitions/v1InstanceConfig" + }, + "instanceType": { + "type": "string" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean" + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "machinePoolProperties": { + "$ref": "#/definitions/v1MachinePoolProperties" + }, + "maxSize": { + "description": "max size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "minSize": { + "description": "min size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "nodeRepaveInterval": { + "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", + "format": "int32", + "type": "integer" + }, + "rootDeviceSize": { + "description": "Size of root volume in GB. Default is 30GB", + "format": "int64", + "type": "integer" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "subnet": { + "description": "Subnet specifies the subnetwork to use for given instance. If not specified, the first subnet from the cluster region and network is used", + "type": "string" + }, + "subnetIds": { + "additionalProperties": { + "type": "string" + }, + "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"us-west-2d\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first private subnet from the AZ will be picked up for deployment", + "type": "object" + }, + "taints": { + "description": "master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array", + "uniqueItems": true + }, + "updateStrategy": { + "$ref": "#/definitions/v1UpdateStrategy", + "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" + } + }, + "required": [ + "isControlPlane", + "instanceType" + ], + "type": "object" + }, + "v1GcpMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1GcpMachinePoolCloudConfigEntity" + }, + "poolConfig": { + "$ref": "#/definitions/v1MachinePoolConfigEntity" + } + }, + "required": [ + "cloudConfig" + ], + "type": "object" + }, + "v1GcpMachineSpec": { + "description": "GCP cloud VM definition spec", + "properties": { + "image": { + "type": "string" + }, + "instanceConfig": { + "$ref": "#/definitions/v1InstanceConfig" + }, + "instanceType": { + "type": "string" + }, + "nics": { + "items": { + "$ref": "#/definitions/v1GcpNic" + }, + "type": "array" + }, + "project": { + "type": "string" + }, + "region": { + "type": "string" + }, + "rootDeviceSize": { + "format": "int64", + "type": "integer" + }, + "zone": { + "type": "string" + } + }, + "required": [ + "instanceType" + ], + "type": "object" + }, + "v1GcpMachines": { + "description": "GCP machine list", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1GcpMachine" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1GcpManagedClusterConfig": { + "description": "GCP managed cluster config", + "properties": { + "enableAutoPilot": { + "description": "EnableAutopilot indicates whether to enable autopilot for this GKE cluster", + "type": "boolean" + }, + "location": { + "description": "Can be Region or Zone", + "type": "string" + } + }, + "type": "object" + }, + "v1GcpNetwork": { + "description": "GCP network enity is a virtual version of a physical network", + "properties": { + "name": { + "description": "GCP network name", + "type": "string" + }, + "subnets": { + "description": "List of GCP subnet", + "items": { + "$ref": "#/definitions/v1GcpSubnet" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1GcpNetworks": { + "description": "List of GCP networks", + "properties": { + "networks": { + "items": { + "$ref": "#/definitions/v1GcpNetwork" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1GcpNic": { + "description": "GCP network interface", + "properties": { + "index": { + "format": "int8", + "type": "integer" + }, + "networkName": { + "type": "string" + }, + "privateIPs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "publicIp": { + "type": "string" + } + }, + "type": "object" + }, + "v1GcpProject": { + "description": "GCP project organizes all Google Cloud resources", + "properties": { + "id": { + "description": "GCP project id", + "type": "string" + }, + "name": { + "description": "GCP project name", + "type": "string" + } + }, + "type": "object" + }, + "v1GcpProjects": { + "description": "List of GCP Projects", + "properties": { + "projects": { + "description": "List of GCP Projects", + "items": { + "$ref": "#/definitions/v1GcpProject" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1GcpRegion": { + "description": "Geographical region made up of zones where you can host your GCP resources", + "properties": { + "name": { + "description": "GCP region name", + "type": "string" + }, + "status": { + "description": "GCP region status", + "type": "string" + } + }, + "type": "object" + }, + "v1GcpRegions": { + "description": "List of GCP Regions", + "properties": { + "regions": { + "items": { + "$ref": "#/definitions/v1GcpRegion" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1GcpStorageConfig": { + "description": "GCP storage config object", + "properties": { + "bucketName": { + "description": "GCP storage bucket name", + "type": "string" + }, + "credentials": { + "$ref": "#/definitions/v1.GcpAccountEntitySpec", + "description": "GCP cloud account credentials" + } + }, + "required": [ + "bucketName", + "credentials" + ], + "type": "object" + }, + "v1GcpStorageTypes": { + "description": "List of GCP storage types", + "properties": { + "storageTypes": { + "items": { + "$ref": "#/definitions/v1StorageType" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1GcpSubnet": { + "description": "Subnets are regional resources, and have IP address ranges associated with them", + "properties": { + "id": { + "description": "GCP subnet id", + "type": "string" + }, + "name": { + "description": "GCP subnet name", + "type": "string" + } + }, + "type": "object" + }, + "v1GcpSubnetEntity": { + "properties": { + "az": { + "type": "string" + }, + "id": { + "type": "string" + } + } + }, + "v1GcpZone": { + "description": "A zone is a deployment area for Google Cloud resources within a region", + "properties": { + "name": { + "description": "GCP zone name", + "type": "string" + } + }, + "type": "object" + }, + "v1GcpZones": { + "description": "List of GCP zones", + "properties": { + "zones": { + "items": { + "$ref": "#/definitions/v1GcpZone" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1GenericCloudClusterConfigEntity": { + "description": "Generic cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1GenericClusterConfig" + } + }, + "type": "object" + }, + "v1GenericCloudConfig": { + "description": "Generic CloudConfig for all cloud types", + "properties": { + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1GenericCloudConfigSpec" + } + } + }, + "v1GenericCloudConfigSpec": { + "description": "Generic CloudConfig spec for all cloud types", + "properties": { + "cloudAccountRef": { + "$ref": "#/definitions/v1ObjectReference", + "description": "Cloud account reference is optional and dynamically handled based on the kind" + }, + "clusterConfig": { + "$ref": "#/definitions/v1GenericClusterConfig" + }, + "edgeHostRefs": { + "description": "Appliances (Edge Host) uids", + "items": { + "$ref": "#/definitions/v1ObjectReference" + }, + "type": "array" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1GenericMachinePoolConfig" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1GenericClusterConfig": { + "description": "Generic cluster config", + "properties": { + "instanceType": { + "$ref": "#/definitions/v1GenericInstanceType" + }, + "region": { + "description": "cluster region information", + "type": "string" + } + }, + "type": "object" + }, + "v1GenericInstanceType": { + "properties": { + "diskGiB": { + "description": "DiskGiB is the size of a virtual machine's disk, in GiB", + "format": "int32", + "type": "integer" + }, + "memoryMiB": { + "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", + "format": "int64", + "type": "integer" + }, + "name": { + "type": "string" + }, + "numCPUs": { + "description": "NumCPUs is the number of virtual processors in a virtual machine", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1GenericMachine": { + "description": "Generic cloud VM definition", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the machine.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1GenericMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudMachineStatus" + } + } + }, + "v1GenericMachinePoolConfig": { + "properties": { + "instanceType": { + "type": "string" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean" + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "rootDeviceSize": { + "description": "Size of root volume in GB. Default is 30GB", + "format": "int64", + "type": "integer" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" + } + }, + "required": [ + "isControlPlane" + ], + "type": "object" + }, + "v1GenericMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1GenericClusterConfig" + }, + "poolConfig": { + "$ref": "#/definitions/v1MachinePoolConfigEntity" + } + } + }, + "v1GenericMachineSpec": { + "description": "Generic cloud VM definition spec", + "properties": { + "hostName": { + "type": "string" + }, + "imageId": { + "type": "string" + }, + "instanceType": { + "$ref": "#/definitions/v1GenericInstanceType" + }, + "nics": { + "items": { + "$ref": "#/definitions/v1GenericNic" + }, + "type": "array" + }, + "sshKeyName": { + "type": "string" + } + } + }, + "v1GenericMachines": { + "description": "Generic machine list", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1GenericMachine" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1GenericNic": { + "description": "Generic network interface", + "properties": { + "index": { + "format": "int8", + "type": "integer" + }, + "networkName": { + "type": "string" + }, + "privateIPs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "publicIp": { + "type": "string" + } + }, + "type": "object" + }, + "v1GeolocationLatlong": { + "description": "Geolocation Latlong entity", + "properties": { + "latitude": { + "description": "Latitude of a resource", + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "longitude": { + "description": "Longitude of a resource", + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1GitRepoFileContent": { + "properties": { + "content": { + "type": "string" + }, + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "repoName": { + "type": "string" + }, + "sha": { + "type": "string" + } + }, + "type": "object" + }, + "v1GrpcClientMonitoringData": { + "properties": { + "clientUid": { + "type": "string" + }, + "receivedBroadcastCount": { + "type": "integer" + }, + "receivedPublishedCount": { + "type": "integer" + }, + "sentBroadcastCount": { + "type": "integer" + }, + "sentPublishedCount": { + "type": "integer" + }, + "subjects": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1GrpcConfiguration": { + "description": "Describes the response that contains the grpc configuration to establish connection", + "properties": { + "preferredServer": { + "$ref": "#/definitions/v1GrpcEndpoint" + }, + "servers": { + "items": { + "$ref": "#/definitions/v1GrpcEndpoint" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1GrpcEndpoint": { + "properties": { + "endpoint": { + "description": "Describes the URL where the client has to connect to the grpc server", + "type": "string" + }, + "tls": { + "description": "Describes the Grpc tls config which client will use to make a request to the grpc server", + "properties": { + "caCert": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "insecureSkipVerify": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1GrpcServerMonitoringData": { + "properties": { + "clients": { + "additionalProperties": { + "$ref": "#/definitions/v1GrpcClientMonitoringData" + }, + "type": "object" + }, + "isError": { + "type": "boolean" + }, + "messageLogs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "subjects": { + "additionalProperties": { + "$ref": "#/definitions/v1GrpcSubjectMonitoringData" + }, + "type": "object" + }, + "totalClients": { + "type": "integer" + }, + "totalSubjects": { + "type": "integer" + } + }, + "type": "object" + }, + "v1GrpcServersMonitoringData": { + "properties": { + "servers": { + "additionalProperties": { + "$ref": "#/definitions/v1GrpcServerMonitoringData" + }, + "type": "object" + } + }, + "type": "object" + }, + "v1GrpcSubjectMonitoringData": { + "properties": { + "broadcastCount": { + "type": "integer" + }, + "clients": { + "items": { + "type": "string" + }, + "type": "array" + }, + "publishedCount": { + "type": "integer" + }, + "subject": { + "type": "string" + } + }, + "type": "object" + }, + "v1HealthCheck": { + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1HealthLocks": { + "properties": { + "expiredLocks": { + "items": { + "$ref": "#/definitions/v1Lock" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1HealthPing": { + "properties": { + "msg": { + "type": "string" + } + }, + "type": "object" + }, + "v1HelmChartOption": { + "description": "If chart options are provided then the specified chart is validated first and synced immediately. If the specified chart is not found in the specified registry then creation is cancelled.", + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1HelmRegistries": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1HelmRegistry" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1HelmRegistriesSummary": { + "description": "Helm Registries Summary", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1HelmRegistrySummary" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1HelmRegistry": { + "description": "Helm registry information", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1HelmRegistrySpec" + }, + "status": { + "$ref": "#/definitions/v1HelmRegistryStatus" + } + }, + "type": "object" + }, + "v1HelmRegistryCreateOption": { + "description": "Helm registry create options", + "properties": { + "charts": { + "items": { + "$ref": "#/definitions/v1HelmChartOption" + }, + "type": "array", + "uniqueItems": true + }, + "skipSync": { + "type": "boolean" + } + }, + "type": "object" + }, + "v1HelmRegistryEntity": { + "description": "Helm registry information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1HelmRegistrySpecEntity" + } + }, + "type": "object" + }, + "v1HelmRegistrySpec": { + "description": "Helm registry credentials spec", + "properties": { + "auth": { + "$ref": "#/definitions/v1RegistryAuth" + }, + "endpoint": { + "type": "string" + }, + "isPrivate": { + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "registryUid": { + "description": "Helm registry uid", + "type": "string" + }, + "scope": { + "type": "string" + } + }, + "required": [ + "endpoint", + "auth" + ], + "type": "object" + }, + "v1HelmRegistrySpecEntity": { + "description": "Helm registry credentials spec", + "properties": { + "auth": { + "$ref": "#/definitions/v1RegistryAuth" + }, + "createOption": { + "$ref": "#/definitions/v1HelmRegistryCreateOption" + }, + "endpoint": { + "type": "string" + }, + "isPrivate": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string" + } + }, + "required": [ + "endpoint", + "auth" + ], + "type": "object" + }, + "v1HelmRegistrySpecSummary": { + "description": "Helm Registry spec summary", + "properties": { + "endpoint": { + "type": "string" + }, + "isPrivate": { + "type": "boolean", + "x-omitempty": false + }, + "scope": { + "type": "string" + } + }, + "type": "object" + }, + "v1HelmRegistryStatus": { + "description": "Status of the helm registry", + "properties": { + "helmSyncStatus": { + "$ref": "#/definitions/v1RegistrySyncStatus" + } + }, + "type": "object" + }, + "v1HelmRegistryStatusSummary": { + "description": "Helm registry status summary", + "properties": { + "sync": { + "$ref": "#/definitions/v1RegistrySyncStatus" + } + } + }, + "v1HelmRegistrySummary": { + "description": "Helm Registry summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1HelmRegistrySpecSummary" + }, + "status": { + "$ref": "#/definitions/v1HelmRegistryStatusSummary" + } + }, + "type": "object" + }, + "v1HostClusterConfig": { + "properties": { + "clusterEndpoint": { + "$ref": "#/definitions/v1HostClusterEndpoint", + "description": "host cluster configuration" + }, + "clusterGroup": { + "$ref": "#/definitions/v1ObjectReference", + "description": "cluster group reference" + }, + "hostCluster": { + "$ref": "#/definitions/v1ObjectReference", + "description": "host cluster reference" + }, + "isHostCluster": { + "default": false, + "description": "is enabled as host cluster", + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1HostClusterConfigEntity": { + "properties": { + "hostClusterConfig": { + "$ref": "#/definitions/v1HostClusterConfig" + } + }, + "type": "object" + }, + "v1HostClusterConfigResponse": { + "properties": { + "clusterGroup": { + "$ref": "#/definitions/v1ObjectReference", + "description": "cluster group reference" + } + } + }, + "v1HostClusterEndpoint": { + "properties": { + "config": { + "$ref": "#/definitions/v1HostClusterEndpointConfig" + }, + "type": { + "description": "is enabled as host cluster", + "enum": [ + "Ingress", + "LoadBalancer" + ], + "type": "string" + } + } + }, + "v1HostClusterEndpointConfig": { + "properties": { + "ingressConfig": { + "$ref": "#/definitions/v1IngressConfig" + }, + "loadBalancerConfig": { + "$ref": "#/definitions/v1LoadBalancerConfig" + } + } + }, + "v1HttpPatch": { + "properties": { + "from": { + "description": "A path to the pointer from which reference will be taken", + "type": "string" + }, + "op": { + "description": "The operation to be performed", + "enum": [ + "add", + "remove", + "replace", + "move", + "copy" + ], + "type": "string" + }, + "path": { + "description": "A path to the pointer on which operation will be done", + "type": "string" + }, + "value": { + "description": "The value to be used within the operations.", + "type": "object" + } + }, + "required": [ + "op", + "path" + ], + "type": "object" + }, + "v1HubbleInfo": { + "properties": { + "apiEndpoint": { + "type": "string" + }, + "apiPort": { + "type": "string" + }, + "natsEndpoint": { + "type": "string" + }, + "uiEndpoint": { + "type": "string" + }, + "uiPort": { + "type": "string" + } + }, + "type": "object" + }, + "v1IPPool": { + "description": "IPPool defines static IPs available. Gateway, Prefix, Nameserver, if defined, will be default values for all Pools", + "properties": { + "gateway": { + "description": "Gateway is the gateway ip address", + "type": "string" + }, + "nameserver": { + "$ref": "#/definitions/v1Nameserver", + "description": "Nameserver provide information for dns resolvation" + }, + "pools": { + "description": "Pools contains the list of IP addresses pools", + "items": { + "$ref": "#/definitions/v1Pool" + }, + "type": "array" + }, + "prefix": { + "description": "Prefix is the mask of the network as integer (max 128)", + "format": "int32", + "type": "integer" + }, + "uid": { + "description": "UID is the UID of this IPPool, used by Hubble", + "type": "string" + } + }, + "type": "object" + }, + "v1IdentityProvider": { + "description": "Describes a predefined Identity Provider (IDP)", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1IdentityProviders": { + "description": "Describes a list of predefined Identity Provider (IDP)", + "items": { + "$ref": "#/definitions/v1IdentityProvider" + }, + "type": "array", + "uniqueItems": true + }, + "v1ImportClusterConfig": { + "properties": { + "importMode": { + "description": "If the importMode is empty then cluster is imported with full permission mode. By default importMode is empty and cluster is imported in full permission mode.", + "enum": [ + "read-only" + ], + "type": "string" + }, + "proxy": { + "$ref": "#/definitions/v1ClusterProxySpec", + "description": "Cluster proxy settings" + } + }, + "type": "object" + }, + "v1ImportEdgeHostConfig": { + "properties": { + "edgeHostUid": { + "description": "Deprecated. Use 'edgeHostUids' field", + "type": "string" + }, + "edgeHostUids": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1InfraLBConfig": { + "properties": { + "apiServerLB": { + "$ref": "#/definitions/v1LoadBalancerSpec", + "description": "APIServerLB is the configuration for the control-plane load balancer." + } + }, + "type": "object" + }, + "v1IngressConfig": { + "description": "Ingress configuration for exposing the virtual cluster's kube-apiserver", + "properties": { + "host": { + "type": "string" + }, + "port": { + "format": "int64", + "type": "integer" + } + } + }, + "v1InstallerStatus": { + "description": "Spectro cluster installer status", + "properties": { + "clusterMigration": { + "$ref": "#/definitions/v1SpectroClusterMigration" + }, + "clusterState": { + "type": "string" + }, + "endpoint": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1InstanceConfig": { + "properties": { + "category": { + "type": "string" + }, + "cpuSet": { + "format": "int64", + "type": "integer" + }, + "diskGiB": { + "format": "int64", + "type": "integer" + }, + "memoryMiB": { + "description": "MemoryMiB is the size of a virtual machine's memory, in MiB", + "format": "int64", + "type": "integer" + }, + "name": { + "type": "string" + }, + "numCPUs": { + "description": "NumCPUs is the number of virtual processors in a virtual machine", + "format": "int32", + "type": "integer" + } + } + }, + "v1InstanceCost": { + "description": "Instance cost entity", + "properties": { + "price": { + "description": "Array of cloud instance price", + "items": { + "$ref": "#/definitions/v1InstancePrice" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1InstancePrice": { + "description": "Cloud instance price", + "properties": { + "onDemand": { + "description": "OnDemand price of instance", + "format": "double", + "type": "number" + }, + "os": { + "description": "Os associated with instance price. Allowed values - [linux, windows]", + "enum": [ + "linux", + "windows" + ], + "type": "string" + }, + "spot": { + "description": "Spot price of instance", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "v1InstanceType": { + "description": "Cloud Instance type details", + "properties": { + "category": { + "description": "Category of instance type", + "type": "string", + "x-go-name": "Category" + }, + "cost": { + "$ref": "#/definitions/v1InstanceCost" + }, + "cpu": { + "description": "Cpu of instance type", + "format": "double", + "type": "number", + "x-go-name": "Cpu" + }, + "gpu": { + "description": "Gpu of instance type", + "format": "double", + "type": "number", + "x-go-name": "Gpu" + }, + "memory": { + "description": "Memory of instance type", + "format": "double", + "type": "number", + "x-go-name": "Memory" + }, + "nonSupportedZones": { + "description": "Non supported zones of the instance in a particular region", + "items": { + "type": "string" + }, + "type": "array" + }, + "price": { + "description": "Price of instance type", + "format": "double", + "type": "number", + "x-go-name": "Price" + }, + "supportedArchitectures": { + "description": "Supported architecture of the instance", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "Type of instance type", + "type": "string", + "x-go-name": "Type" + } + }, + "type": "object" + }, + "v1Invoice": { + "description": "Invoice object", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1InvoiceSpec" + }, + "status": { + "$ref": "#/definitions/v1InvoiceStatus" + } + } + }, + "v1InvoiceBillingPeriod": { + "description": "Invoice billing period object", + "properties": { + "end": { + "$ref": "#/definitions/v1Time" + }, + "start": { + "$ref": "#/definitions/v1Time" + } + } + }, + "v1InvoiceCredits": { + "description": "Invoice credits object", + "properties": { + "alloyFreeCredits": { + "description": "Credits allocated for import clusters", + "format": "int64", + "type": "number" + }, + "pureFreeCredits": { + "description": "Credits allocated for managed clusters", + "format": "int64", + "type": "number" + } + } + }, + "v1InvoicePlan": { + "description": "Invoice plan object", + "properties": { + "freeCredits": { + "description": "List of free credits", + "items": { + "$ref": "#/definitions/v1InvoicePlanCredit" + }, + "type": "array" + }, + "plantype": { + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ], + "type": "string" + }, + "slaCredits": { + "description": "List of SLA credits", + "items": { + "$ref": "#/definitions/v1InvoicePlanCredit" + }, + "type": "array" + } + } + }, + "v1InvoicePlanCredit": { + "description": "Invoice plan credit object", + "properties": { + "planCredit": { + "$ref": "#/definitions/v1PlanCredit" + }, + "totalCpuCoreHours": { + "description": "Total used cpu core hours", + "format": "int64", + "type": "number" + } + } + }, + "v1InvoiceProduct": { + "description": "Product invoice object", + "properties": { + "alloy": { + "$ref": "#/definitions/v1InvoiceProductData" + }, + "pure": { + "$ref": "#/definitions/v1InvoiceProductData" + } + } + }, + "v1InvoiceProductData": { + "description": "Product invoice data", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "format": "int64", + "type": "number" + }, + "amount": { + "description": "Total amount", + "format": "float64", + "type": "number" + }, + "billableCredits": { + "description": "Credits to be billed", + "format": "float64", + "type": "number" + }, + "breachedCredits": { + "description": "Credits that are exceeds the allocated credits", + "format": "float64", + "type": "number" + }, + "discount": { + "description": "Applied discount", + "format": "int64", + "type": "number" + }, + "freeCredits": { + "description": "Allocated free credits", + "format": "int64", + "type": "number" + }, + "overageLimitPercentage": { + "description": "Allowed overage limit in percentage", + "format": "int8", + "type": "number" + }, + "tierName": { + "description": "Tier name", + "type": "string" + }, + "tierPrice": { + "description": "Tier price", + "format": "float64", + "type": "number" + }, + "totalUsedCredits": { + "description": "Total used credits", + "format": "float64", + "type": "number" + }, + "usedCredits": { + "description": "Used credits", + "format": "float64", + "type": "number" + } + } + }, + "v1InvoiceProject": { + "description": "Invoice project object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "format": "float64", + "type": "number" + }, + "projectName": { + "description": "Name of the project", + "type": "string" + }, + "projectUid": { + "description": "Project identifier", + "type": "string" + }, + "usage": { + "$ref": "#/definitions/v1ProjectUsage", + "description": "Usage by the project" + } + } + }, + "v1InvoiceRetryRequest": { + "description": "Retry invoice request object", + "properties": { + "customerId": { + "description": "Customer invoice uid", + "type": "string" + }, + "invoiceUid": { + "description": "Invoice uid", + "type": "string" + }, + "paymentMethodId": { + "description": "Payment method uid", + "type": "string" + } + } + }, + "v1InvoiceSpec": { + "description": "Invoice specification", + "properties": { + "address": { + "$ref": "#/definitions/v1Address" + }, + "billingPeriod": { + "$ref": "#/definitions/v1InvoiceBillingPeriod" + }, + "credits": { + "$ref": "#/definitions/v1InvoiceCredits" + }, + "envType": { + "description": "Environment type [Trial,MonthlyOnDemand,AnnualSubscription,OnPrem]", + "type": "string" + }, + "month": { + "$ref": "#/definitions/v1Time", + "description": "Month for which invoice is generated" + }, + "paymentUnit": { + "enum": [ + "usd" + ], + "type": "string" + }, + "plan": { + "$ref": "#/definitions/v1InvoicePlan" + } + } + }, + "v1InvoiceState": { + "description": "Invoice state object", + "properties": { + "paymentMsg": { + "description": "Payment status message", + "type": "string" + }, + "state": { + "enum": [ + "Paid", + "PaymentPending", + "PaymentInProgress", + "PaymentFailed" + ], + "type": "string" + }, + "timestamp": { + "$ref": "#/definitions/v1Time", + "description": "Time on which the state has been updated" + } + } + }, + "v1InvoiceStatus": { + "description": "Invoice Status", + "properties": { + "billableAmount": { + "description": "Total billable amount", + "format": "float64", + "type": "number" + }, + "productInvoice": { + "$ref": "#/definitions/v1InvoiceProduct" + }, + "projects": { + "description": "List of project invoices", + "items": { + "$ref": "#/definitions/v1InvoiceProject" + }, + "type": "array" + }, + "states": { + "description": "List of invoice states", + "items": { + "$ref": "#/definitions/v1InvoiceState" + }, + "type": "array", + "uniqueItems": true + }, + "stripeInvoiceId": { + "description": "Stripe invoice uid", + "type": "string" + } + } + }, + "v1Invoices": { + "description": "List of invoices", + "properties": { + "invoices": { + "items": { + "$ref": "#/definitions/v1Invoice" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "invoices" + ], + "type": "object" + }, + "v1IpPoolEntity": { + "description": "IP Pool entity definition", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "pool": { + "$ref": "#/definitions/v1Pool" + }, + "priavetGatewayUid": { + "type": "string" + }, + "restrictToSingleCluster": { + "description": "if true, restricts this IP pool to be used by single cluster at any time", + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "status": { + "$ref": "#/definitions/v1IpPoolStatus" + } + }, + "type": "object" + }, + "v1IpPoolInputEntity": { + "description": "IP Pool input entity definition", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "pool": { + "$ref": "#/definitions/v1Pool" + }, + "restrictToSingleCluster": { + "description": "if true, restricts this IP pool to be used by single cluster at any time", + "type": "boolean" + } + }, + "required": [ + "pool" + ], + "type": "object" + } + }, + "type": "object" + }, + "v1IpPoolStatus": { + "description": "IP Pool status", + "properties": { + "allottedIps": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "associatedClusters": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "inUse": { + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1IpPools": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1IpPoolEntity" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1JWKResponse": { + "properties": { + "alg": { + "description": "The \"alg\" (algorithm) parameter identifies the algorithm intended for use with the key", + "type": "string" + }, + "e": { + "type": "string" + }, + "key_ops": { + "description": "The \"key_ops\" (key operations) parameter identifies the operation(s) for which the key is intended to be used", + "type": "string" + }, + "kid": { + "description": "The \"kid\" (key ID) parameter is used to match a specific key", + "type": "string" + }, + "kty": { + "description": "The \"kty\" (key type) parameter identifies the cryptographic algorithm family used with the key, such as \"RSA\" or \"EC\"", + "type": "string" + }, + "n": { + "type": "string" + }, + "use": { + "description": "The \"use\" (public key use) parameter identifies the intended use of the public key", + "type": "string" + } + }, + "type": "object" + }, + "v1JWKSetResponse": { + "properties": { + "keys": { + "description": "The value of the \"keys\" parameter is an array of JWK values", + "items": { + "$ref": "#/definitions/v1JWKResponse" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1JetAuthKey": { + "properties": { + "authKey": { + "type": "string" + } + }, + "type": "object" + }, + "v1JetAuthKeyResponse": { + "properties": { + "authKey": { + "type": "string" + } + }, + "type": "object" + }, + "v1JetServiceLogin": { + "description": "jet service login input", + "properties": { + "authKey": { + "description": "authToken helps in two step verification for the authorization.", + "type": "string" + }, + "edgeHostUid": { + "type": "string" + }, + "hostClusterUid": { + "type": "string" + }, + "isSystem": { + "type": "boolean" + }, + "jetUid": { + "type": "string" + }, + "overlordUid": { + "type": "string" + }, + "serviceVersion": { + "type": "string" + }, + "spectroClusterUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + } + }, + "type": "object" + }, + "v1KubeBenchEntity": { + "description": "KubeBench response", + "properties": { + "reports": { + "additionalProperties": { + "$ref": "#/definitions/v1KubeBenchReportEntity" + }, + "type": "object" + }, + "requestUid": { + "type": "string" + }, + "status": { + "enum": [ + "Completed", + "InProgress", + "Failed", + "Initiated" + ], + "type": "string" + } + }, + "required": [ + "requestUid", + "status", + "reports" + ] + }, + "v1KubeBenchLog": { + "description": "Compliance Scan KubeBench Log", + "properties": { + "description": { + "type": "string" + }, + "expected": { + "type": "string" + }, + "remediation": { + "type": "string" + }, + "state": { + "type": "string" + }, + "testId": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "v1KubeBenchLogEntity": { + "description": "KubeBench log", + "properties": { + "description": { + "type": "string" + }, + "expected": { + "type": "string" + }, + "remediation": { + "type": "string" + }, + "state": { + "type": "string" + }, + "testId": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "v1KubeBenchReport": { + "description": "Compliance Scan KubeBench Report", + "properties": { + "fail": { + "format": "int32", + "type": "integer" + }, + "info": { + "format": "int32", + "type": "integer" + }, + "logs": { + "items": { + "$ref": "#/definitions/v1KubeBenchLog" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "pass": { + "format": "int32", + "type": "integer" + }, + "time": { + "$ref": "#/definitions/v1Time" + }, + "type": { + "type": "string" + }, + "warn": { + "format": "int32", + "type": "integer" + } + } + }, + "v1KubeBenchReportEntity": { + "description": "KubeBench report", + "properties": { + "fail": { + "format": "int32", + "type": "integer" + }, + "info": { + "format": "int32", + "type": "integer" + }, + "logs": { + "items": { + "$ref": "#/definitions/v1KubeBenchLogEntity" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "pass": { + "format": "int32", + "type": "integer" + }, + "time": { + "$ref": "#/definitions/v1Time" + }, + "type": { + "type": "string" + }, + "warn": { + "format": "int32", + "type": "integer" + } + } + }, + "v1KubeHunterEntity": { + "description": "KubeHunter response", + "properties": { + "reports": { + "additionalProperties": { + "$ref": "#/definitions/v1KubeHunterReportEntity" + }, + "type": "object" + }, + "requestUid": { + "type": "string" + }, + "status": { + "enum": [ + "Completed", + "InProgress", + "Failed", + "Initiated" + ], + "type": "string" + } + }, + "required": [ + "requestUid", + "status", + "reports" + ] + }, + "v1KubeHunterLog": { + "description": "Compliance Scan KubeHunter Log", + "properties": { + "description": { + "type": "string" + }, + "evidence": { + "type": "string" + }, + "reference": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "testId": { + "type": "string" + }, + "vulnerability": { + "type": "string" + } + } + }, + "v1KubeHunterLogEntity": { + "description": "KubeHunter log", + "properties": { + "description": { + "type": "string" + }, + "evidence": { + "type": "string" + }, + "reference": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "testId": { + "type": "string" + }, + "vulnerability": { + "type": "string" + } + } + }, + "v1KubeHunterReport": { + "description": "Compliance Scan KubeHunter Report", + "properties": { + "logs": { + "items": { + "$ref": "#/definitions/v1KubeHunterLog" + }, + "type": "array" + }, + "time": { + "$ref": "#/definitions/v1Time" + }, + "vulnerabilites": { + "$ref": "#/definitions/v1KubeHunterVulnerabilities" + } + } + }, + "v1KubeHunterReportEntity": { + "description": "KubeHunter report", + "properties": { + "logs": { + "items": { + "$ref": "#/definitions/v1KubeHunterLogEntity" + }, + "type": "array" + }, + "time": { + "$ref": "#/definitions/v1Time" + }, + "vulnerabilities": { + "$ref": "#/definitions/v1KubeHunterVulnerabilityDataEntity" + } + } + }, + "v1KubeHunterVulnerabilities": { + "description": "Compliance Scan KubeHunter Vulnerabilities", + "properties": { + "high": { + "format": "int32", + "type": "integer" + }, + "low": { + "format": "int32", + "type": "integer" + }, + "medium": { + "format": "int32", + "type": "integer" + } + } + }, + "v1KubeHunterVulnerabilityDataEntity": { + "description": "KubeHunter vulnerability data", + "properties": { + "high": { + "format": "int32", + "type": "integer" + }, + "low": { + "format": "int32", + "type": "integer" + }, + "medium": { + "format": "int32", + "type": "integer" + } + } + }, + "v1KubeMeta": { + "description": "Spectro cluster kube meta", + "properties": { + "hasKubeConfig": { + "type": "boolean", + "x-omitempty": false + }, + "hasKubeConfigClient": { + "type": "boolean", + "x-omitempty": false + }, + "hasManifest": { + "type": "boolean", + "x-omitempty": false + }, + "kubernetesVersion": { + "type": "string" + } + }, + "type": "object" + }, + "v1LibvirtCloudClusterConfigEntity": { + "description": "Libvirt cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1LibvirtClusterConfig" + } + }, + "type": "object" + }, + "v1LibvirtCloudConfig": { + "description": "LibvirtCloudConfig is the Schema for the libvirtcloudconfigs API", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1LibvirtCloudConfigSpec" + }, + "status": { + "$ref": "#/definitions/v1LibvirtCloudConfigStatus" + } + }, + "type": "object" + }, + "v1LibvirtCloudConfigSpec": { + "description": "LibvirtCloudConfigSpec defines the desired state of LibvirtCloudConfig", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1LibvirtClusterConfig" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1LibvirtMachinePoolConfig" + }, + "type": "array" + } + }, + "required": [ + "clusterConfig", + "machinePoolConfig" + ], + "type": "object" + }, + "v1LibvirtCloudConfigStatus": { + "properties": { + "conditions": { + "items": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "type": "array" + }, + "nodeImages": { + "description": "NodeImages are the list of images generated on all the LibvirtHosts", + "items": { + "$ref": "#/definitions/v1LibvirtImage" + }, + "type": "array" + }, + "sourceImageId": { + "description": "SourceImageId can be from packref's annotations or from pack.json", + "type": "string" + } + }, + "type": "object" + }, + "v1LibvirtClusterConfig": { + "properties": { + "controlPlaneEndpoint": { + "$ref": "#/definitions/v1LibvirtControlPlaneEndPoint", + "description": "ControlPlaneEndpoint is the control plane endpoint, which can be an IP or FQDN" + }, + "ntpServers": { + "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list", + "items": { + "type": "string" + }, + "type": "array" + }, + "sshKeys": { + "description": "SSHKeys specifies a list of ssh authorized keys to access the vms as a 'spectro' user", + "items": { + "type": "string" + }, + "type": "array" + }, + "staticIp": { + "description": "StaticIP indicates if IP allocation type is static IP. DHCP is the default allocation type", + "type": "boolean" + } + }, + "type": "object" + }, + "v1LibvirtControlPlaneEndPoint": { + "properties": { + "ddnsSearchDomain": { + "description": "DDNSSearchDomain is the search domain used for resolving IP addresses when the EndpointType is DDNS. This search domain is appended to the generated Hostname to obtain the complete DNS name for the endpoint. If Host is already a DDNS FQDN, DDNSSearchDomain is not required", + "type": "string" + }, + "host": { + "description": "Host is FQDN(DDNS) or IP", + "type": "string" + }, + "type": { + "description": "Type indicates DDNS or VIP", + "type": "string" + } + }, + "type": "object" + }, + "v1LibvirtDiskSpec": { + "properties": { + "dataStoragePool": { + "description": "DataStoragePool is the storage pool from which additional disks are assigned", + "type": "string" + }, + "managed": { + "description": "Managed indicates if the disk is a persistent or not. By default its false indicating all disks are ephemeral.", + "type": "boolean" + }, + "sizeInGB": { + "description": "SizeInGB is the target size in GB of the disk to be added", + "format": "int32", + "type": "integer" + } + }, + "required": [ + "sizeInGB" + ], + "type": "object" + }, + "v1LibvirtHostIdentity": { + "properties": { + "caCert": { + "description": "CACert is the client CA certificate", + "type": "string" + }, + "mode": { + "description": "Mode indicates a system or session connection to the host", + "type": "string" + }, + "socketPath": { + "description": "SocketPath is an optional path to the socket on the host, if not using defaults", + "type": "string" + }, + "sshSecret": { + "$ref": "#/definitions/v1EdgeHostSSHSecret", + "description": "SSHSecrets to the secret containing ssh-username" + } + }, + "type": "object" + }, + "v1LibvirtImage": { + "description": "LibvirtImage is the Image generated on the LibvirtHost", + "properties": { + "hostID": { + "description": "HostID is the ID of the LibvirtHost", + "type": "string" + }, + "imageName": { + "description": "ImageName is the name of the Libvirt image", + "type": "string" + }, + "storagePool": { + "description": "StoragePool is the name of the storagePool where is image is located", + "type": "string" + } + }, + "type": "object" + }, + "v1LibvirtInstanceType": { + "description": "LibvirtInstanceType defines the instance configuration for a virtual machine", + "properties": { + "cpuPassthroughSpec": { + "$ref": "#/definitions/v1CPUPassthroughSpec", + "description": "Defines CPU Passthrough Spec. A not null value enables CPU Passthrough for the libvirt domain. Further cache passthrough can be enabled with the CPU passthrough spec." + }, + "cpuset": { + "description": "CPUSet defines cpuset for an instance which allows allocation specific set of cpus E.g cpuset=\"1-4,^3,6\" See https://libvirt.org/formatdomain.html#cpu-allocation", + "type": "string" + }, + "gpuConfig": { + "$ref": "#/definitions/v1GPUConfig", + "description": "GPU configuration" + }, + "memoryInMB": { + "description": "MemoryinMB is the memory in megabytes", + "format": "int32", + "type": "integer" + }, + "numCPUs": { + "description": "NumCPUs is the number of CPUs", + "format": "int32", + "type": "integer" + } + }, + "required": [ + "numCPUs", + "memoryInMB" + ], + "type": "object" + }, + "v1LibvirtMachine": { + "description": "Libvirt cloud VM definition", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the machine.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1LibvirtMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudMachineStatus" + } + } + }, + "v1LibvirtMachinePoolCloudConfigEntity": { + "properties": { + "instanceType": { + "$ref": "#/definitions/v1LibvirtInstanceType" + }, + "nonRootDisksInGB": { + "description": "NonRootDisksInGB is the list of additional disks, if required, in GB", + "items": { + "$ref": "#/definitions/v1LibvirtDiskSpec" + }, + "type": "array" + }, + "placements": { + "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", + "items": { + "$ref": "#/definitions/v1LibvirtPlacementEntity" + }, + "type": "array", + "uniqueItems": true + }, + "rootDiskInGB": { + "description": "RootDiskInGB is the size of a vm's root disk, in GiB", + "format": "int32", + "type": "integer" + }, + "xslTemplate": { + "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition", + "type": "string" + } + }, + "required": [ + "instanceType", + "placements", + "rootDiskInGB" + ] + }, + "v1LibvirtMachinePoolConfig": { + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "additionalLabels", + "type": "object" + }, + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", + "type": "object" + }, + "instanceType": { + "$ref": "#/definitions/v1LibvirtInstanceType", + "description": "InstanceType defines the instance configuration of the vms in the machine pool" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean" + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "machinePoolProperties": { + "$ref": "#/definitions/v1MachinePoolProperties" + }, + "maxSize": { + "description": "max size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "minSize": { + "description": "min size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "nodeRepaveInterval": { + "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", + "format": "int32", + "type": "integer" + }, + "nonRootDisksInGB": { + "description": "NonRootDisksInGB is the list of additional disks, if required, in GB", + "items": { + "$ref": "#/definitions/v1LibvirtDiskSpec" + }, + "type": "array" + }, + "placements": { + "description": "Placements defines the configurations of the failureDomains(hosts) for the machine pool", + "items": { + "$ref": "#/definitions/v1LibvirtPlacementConfig" + }, + "type": "array" + }, + "rootDiskInGB": { + "description": "RootDiskInGB is the size of a vm's root disk, in GB", + "format": "int32", + "type": "integer" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "taints": { + "description": "master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array", + "uniqueItems": true + }, + "updateStrategy": { + "$ref": "#/definitions/v1UpdateStrategy", + "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" + }, + "xslTemplate": { + "description": "XSLTemplate defines a base64-encoded raw xsl template which will be included in the machine definition", + "type": "string" + } + }, + "required": [ + "instanceType", + "placements", + "rootDiskInGB" + ], + "type": "object" + }, + "v1LibvirtMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1LibvirtMachinePoolCloudConfigEntity" + }, + "poolConfig": { + "$ref": "#/definitions/v1MachinePoolConfigEntity" + } + }, + "type": "object" + }, + "v1LibvirtMachineSpec": { + "description": "libvirt cloud VM definition spec", + "properties": { + "disks": { + "items": { + "$ref": "#/definitions/v1LibvirtDiskSpec" + }, + "type": "array" + }, + "edgeHostUid": { + "type": "string" + }, + "failureDomain": { + "type": "string" + }, + "imageName": { + "type": "string" + }, + "instanceType": { + "$ref": "#/definitions/v1LibvirtInstanceType" + }, + "nics": { + "items": { + "$ref": "#/definitions/v1LibvirtNicSpec" + }, + "type": "array" + }, + "targetStoragePool": { + "type": "string" + } + }, + "type": "object" + }, + "v1LibvirtMachines": { + "description": "Libvirt machine list", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1LibvirtMachine" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1LibvirtNetworkSpec": { + "description": "LibvirtNetworkSpec defines the network configuration for a virtual machine", + "properties": { + "networkName": { + "description": "NetworkName of the libvirt network where this machine will be connected", + "type": "string" + }, + "networkType": { + "description": "NetworkType specifies the type of network", + "enum": [ + "default", + "bridge" + ], + "type": "string" + } + }, + "required": [ + "networkName", + "networkType" + ], + "type": "object" + }, + "v1LibvirtNicSpec": { + "description": "Libvirt network interface", + "properties": { + "index": { + "format": "int8", + "type": "integer" + }, + "macAddress": { + "type": "string" + }, + "privateIPs": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "macAddress" + ], + "type": "object" + }, + "v1LibvirtPlacementConfig": { + "properties": { + "dataStoragePool": { + "description": "DataStoragePool is the storage pool from which additional disks are assigned", + "type": "string" + }, + "gpuDevices": { + "description": "GPU Devices is the list of LibvirtHost GPU devices, to be used for this placement", + "items": { + "$ref": "#/definitions/v1GPUDeviceSpec" + }, + "type": "array" + }, + "hostAddress": { + "description": "HostAddress is a FQDN or IP address of the LibvirtHost", + "type": "string" + }, + "hostIdentity": { + "$ref": "#/definitions/v1LibvirtHostIdentity", + "description": "HostIdentity is the identity to access the LibvirtHost" + }, + "hostUid": { + "description": "HostUid is the ID of the LibvirtHost", + "type": "string" + }, + "networks": { + "description": "Networks defines the network specifications of the vms in the machine pool", + "items": { + "$ref": "#/definitions/v1LibvirtNetworkSpec" + }, + "type": "array" + }, + "sourceStoragePool": { + "description": "SourceStoragePool is the storage pool for the vm image", + "type": "string" + }, + "targetStoragePool": { + "description": "TargetStoragePool is the optional storage pool from which additional disks are assigned. If not specified, the sourceStoragePool is also used as the targetStoragePool", + "type": "string" + } + }, + "required": [ + "hostUid", + "hostAddress", + "networks", + "sourceStoragePool" + ], + "type": "object" + }, + "v1LibvirtPlacementEntity": { + "description": "Libvirt placement config", + "properties": { + "dataStoragePool": { + "type": "string" + }, + "gpuDevices": { + "description": "GPUDevices defines an array of gpu device for a specific edge host. This will be overridden by edge host GPU devices if configured during registration.", + "items": { + "$ref": "#/definitions/v1GPUDeviceSpec" + }, + "type": "array" + }, + "hostUid": { + "type": "string" + }, + "networks": { + "items": { + "$ref": "#/definitions/v1LibvirtNetworkSpec" + }, + "type": "array" + }, + "sourceStoragePool": { + "type": "string" + }, + "targetStoragePool": { + "type": "string" + } + }, + "required": [ + "hostUid" + ], + "type": "object" + }, + "v1LifecycleConfig": { + "properties": { + "pause": { + "default": false, + "description": "enable pause life cycle config", + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1LifecycleConfigEntity": { + "properties": { + "lifecycleConfig": { + "$ref": "#/definitions/v1LifecycleConfig" + } + }, + "type": "object" + }, + "v1LifecycleStatus": { + "properties": { + "msg": { + "description": "error or success msg of lifecycle", + "type": "string" + }, + "status": { + "description": "lifecycle status", + "enum": [ + "Pausing", + "Paused", + "Resuming", + "Running", + "Error" + ], + "type": "string" + } + } + }, + "v1ListMetaData": { + "description": "ListMeta describes metadata for the resource listing", + "properties": { + "continue": { + "description": "Next token for the pagination. Next token is equal to empty string indicates end of result set.", + "type": "string", + "x-omitempty": false + }, + "count": { + "description": "Total count of the resources which might change during pagination based on the resources addition or deletion", + "type": "integer", + "x-omitempty": false + }, + "limit": { + "description": "Number of records feteched", + "type": "integer", + "x-omitempty": false + }, + "offset": { + "description": "The next offset for the pagination. Starting index for which next request will be placed.", + "type": "integer", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1LoadBalancerConfig": { + "description": "Load balancer configuration for exposing the virtual cluster's kube-apiserver", + "properties": { + "externalIPs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "v1LoadBalancerService": { + "properties": { + "host": { + "description": "IP or Host from svc.Status.LoadBalancerStatus.Ingress", + "type": "string" + }, + "name": { + "description": "name of the loadbalancer service", + "type": "string" + }, + "ports": { + "description": "port this service exposed", + "items": { + "$ref": "#/definitions/v1ServicePort" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1LoadBalancerSpec": { + "description": "LoadBalancerSpec defines an Azure load balancer.", + "properties": { + "apiServerLBStaticIP": { + "type": "string" + }, + "ipAllocationMethod": { + "default": "Dynamic", + "enum": [ + "Static", + "Dynamic" + ], + "type": "string" + }, + "privateDNSName": { + "type": "string" + }, + "type": { + "default": "Public", + "description": "Load Balancer type", + "enum": [ + "Internal", + "Public" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1LocationType": { + "default": "s3", + "description": "Location type", + "enum": [ + "s3", + "gcp", + "minio" + ], + "type": "string" + }, + "v1Lock": { + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta", + "type": "object", + "x-omitempty": false + }, + "spec": { + "properties": { + "expireAt": { + "$ref": "#/definitions/v1Time", + "x-omitempty": false + }, + "key": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1Locks": { + "items": { + "$ref": "#/definitions/v1Lock" + }, + "type": "array", + "uniqueItems": true + }, + "v1Login": { + "description": "Login input", + "properties": { + "emailId": { + "type": "string" + } + }, + "type": "object" + }, + "v1LoginBannerSettings": { + "properties": { + "Message": { + "description": "Login banner message displayed to the user", + "type": "string", + "x-omitempty": false + }, + "isEnabled": { + "description": "Set to 'true' if login banner has to be displayed for user", + "type": "boolean", + "x-omitempty": false + }, + "title": { + "description": "Banner title displayed to the user", + "type": "string", + "x-omitempty": false + } + } + }, + "v1LoginResponse": { + "description": "Returns the allowed login method and information with the organization details", + "properties": { + "appEnv": { + "description": "Describes the env type. Possible values [ saas, self-hosted, quick-start, enterprise, airgap]", + "type": "string" + }, + "authType": { + "description": "Describes the default mode of authentication. Possible values [password, sso]", + "enum": [ + "password", + "sso" + ], + "type": "string" + }, + "orgName": { + "description": "Organization name.", + "type": "string" + }, + "redirectUrl": { + "description": "Describes the default redirect Url for authentication. If authType is sso, it will have tenant configured saml/oidc idp url else it will be users organization url", + "type": "string", + "x-omitempty": false + }, + "rootDomain": { + "description": "Describes the domain url on which the saas is available", + "type": "string" + }, + "securityMode": { + "description": "Describes which security mode is enabled", + "type": "string" + }, + "ssoLogins": { + "$ref": "#/definitions/v1SsoLogins", + "description": "Just Inside. Describes the allowed social logins" + }, + "totalTenants": { + "description": "Describes the total number of tenant present in the system", + "format": "int64", + "type": "number" + } + }, + "type": "object" + }, + "v1LogoutResponse": { + "description": "Logout response specifying the redirect url", + "properties": { + "redirectUrl": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1MaasAccount": { + "description": "Maas cloud account information", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the account.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1MaasCloudAccount" + }, + "status": { + "$ref": "#/definitions/v1CloudAccountStatus" + } + }, + "type": "object" + }, + "v1MaasAccounts": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1MaasAccount" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1MaasCloudAccount": { + "properties": { + "apiEndpoint": { + "type": "string" + }, + "apiKey": { + "type": "string" + }, + "preferredSubnets": { + "description": "list of preferred subnets order in the list reflects order in which subnets will be selected for ip address selection in apiserver dns endpoint this way user can specify external or preferable subnet \"10.11.130.0/24,10.10.10.0/24\"", + "items": { + "default": "", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "apiKey", + "apiEndpoint" + ], + "type": "object" + }, + "v1MaasCloudClusterConfigEntity": { + "description": "Maas cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1MaasClusterConfig" + } + }, + "type": "object" + }, + "v1MaasCloudConfig": { + "description": "MaasCloudConfig is the Schema for the maascloudconfigs API", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1MaasCloudConfigSpec" + }, + "status": { + "$ref": "#/definitions/v1MaasCloudConfigStatus" + } + }, + "type": "object" + }, + "v1MaasCloudConfigSpec": { + "description": "MaasCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", + "properties": { + "cloudAccountRef": { + "$ref": "#/definitions/v1ObjectReference", + "description": "cloudAccountRef should point to the secret which contains MaasCloudAccount" + }, + "clusterConfig": { + "$ref": "#/definitions/v1MaasClusterConfig" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1MaasMachinePoolConfig" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1MaasCloudConfigStatus": { + "description": "MaasCloudConfigStatus defines the observed state of MaasCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", + "properties": { + "ansibleRoleDigest": { + "description": "For mold controller to identify if is there any changes in Pack", + "type": "string" + }, + "conditions": { + "items": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "type": "array" + }, + "isAddonLayer": { + "description": "addon layers present in spc", + "type": "boolean" + }, + "nodeImage": { + "$ref": "#/definitions/v1MaasImage" + }, + "roleDigest": { + "additionalProperties": { + "type": "string" + }, + "description": "this map will be for ansible roles present in eack pack", + "type": "object" + }, + "sourceImageId": { + "description": "sourceImageId, it can be from packref's annotations or from pack.json", + "type": "string" + }, + "useCapiImage": { + "description": "PackerVariableDigest string `json:\"packerDigest,omitempty\"` If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", + "type": "boolean" + } + }, + "type": "object" + }, + "v1MaasClusterConfig": { + "description": "Cluster level configuration for MAAS cloud and applicable for all the machine pools", + "properties": { + "domain": { + "description": "Domain name of the cluster to be provisioned", + "type": "string" + }, + "sshKeys": { + "description": "SSH keys specifies a list of ssh authorized keys for the 'spectro' user", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "domain" + ], + "type": "object" + }, + "v1MaasDomain": { + "description": "Maas domain", + "properties": { + "name": { + "description": "Name of Maas domain", + "type": "string" + } + }, + "type": "object" + }, + "v1MaasDomains": { + "description": "List of Maas domains", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1MaasDomain" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1MaasImage": { + "description": "Name of the image", + "properties": { + "name": { + "description": "full path of the image template location it contains datacenter/folder/templatename etc eg: /mydc/vm/template/spectro/workerpool-1-centos", + "type": "string" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1MaasInstanceType": { + "properties": { + "minCPU": { + "description": "Minimum CPU cores", + "format": "int32", + "type": "integer" + }, + "minMemInMB": { + "description": "Minimum memory in MiB", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1MaasMachine": { + "description": "Maas cloud VM definition", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the machine.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1MaasMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudMachineStatus" + } + }, + "type": "object" + }, + "v1MaasMachineConfigEntity": { + "properties": { + "azs": { + "description": "for master pool, this will be the failure domains for kcp", + "items": { + "type": "string" + }, + "type": "array" + }, + "instanceType": { + "$ref": "#/definitions/v1MaasInstanceType" + }, + "resourcePool": { + "type": "string" + } + }, + "type": "object" + }, + "v1MaasMachinePoolCloudConfigEntity": { + "properties": { + "azs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "instanceType": { + "$ref": "#/definitions/v1MaasInstanceType" + }, + "resourcePool": { + "description": "the resource pool", + "type": "string" + }, + "tags": { + "description": "Tags in maas environment", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "instanceType", + "resourcePool" + ], + "type": "object" + }, + "v1MaasMachinePoolConfig": { + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "additionalLabels", + "type": "object" + }, + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", + "type": "object" + }, + "azs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "instanceType": { + "$ref": "#/definitions/v1MaasInstanceType", + "description": "InstanceType defines the required CPU, Memory" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean" + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "machinePoolProperties": { + "$ref": "#/definitions/v1MachinePoolProperties" + }, + "maxSize": { + "description": "max size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "minSize": { + "description": "min size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "nodeRepaveInterval": { + "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", + "format": "int32", + "type": "integer" + }, + "resourcePool": { + "type": "string" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "tags": { + "description": "Tags in maas environment", + "items": { + "type": "string" + }, + "type": "array" + }, + "taints": { + "description": "master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array", + "uniqueItems": true + }, + "updateStrategy": { + "$ref": "#/definitions/v1UpdateStrategy", + "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" + } + }, + "required": [ + "instanceType" + ], + "type": "object" + }, + "v1MaasMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1MaasMachinePoolCloudConfigEntity" + }, + "poolConfig": { + "$ref": "#/definitions/v1MachinePoolConfigEntity" + } + }, + "required": [ + "cloudConfig" + ], + "type": "object" + }, + "v1MaasMachineSpec": { + "description": "Maas cloud VM definition spec", + "properties": { + "az": { + "type": "string" + }, + "hostname": { + "type": "string" + }, + "nics": { + "items": { + "$ref": "#/definitions/v1MaasNic" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1MaasMachines": { + "description": "List of MAAS machines", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1MaasMachine" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1MaasNic": { + "description": "Maas network interface", + "properties": { + "index": { + "format": "int8", + "type": "integer" + }, + "privateIPs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "publicIp": { + "type": "string" + } + }, + "type": "object" + }, + "v1MaasPool": { + "description": "Maas pool", + "properties": { + "description": { + "description": "Description of Maas domain", + "type": "string" + }, + "name": { + "description": "Name of Maas pool", + "type": "string" + } + }, + "type": "object" + }, + "v1MaasPools": { + "description": "List of Maas pools", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1MaasPool" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1MaasSubnet": { + "description": "Maas subnet", + "properties": { + "id": { + "description": "Id of Maas subnet", + "type": "integer" + }, + "name": { + "description": "Name of Maas subnet", + "type": "string" + }, + "space": { + "description": "Space associated with Maas subnet", + "type": "string" + }, + "vlans": { + "$ref": "#/definitions/v1MaasVlan" + } + }, + "type": "object" + }, + "v1MaasSubnets": { + "description": "List of Maas subnets", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1MaasSubnet" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1MaasTag": { + "description": "Maas tag", + "properties": { + "comment": { + "description": "Comment on Maas tag", + "type": "string" + }, + "definition": { + "description": "Definition of Maas tag", + "type": "string" + }, + "kernelOpts": { + "description": "Kernel Opts on Maas tag", + "type": "string" + }, + "name": { + "description": "Name of Maas tag", + "type": "string" + }, + "resourceUri": { + "description": "Description of Maas tag", + "type": "string" + } + }, + "type": "object" + }, + "v1MaasTags": { + "description": "List of Maas tags", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1MaasTag" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1MaasVlan": { + "description": "Maas vlan entity", + "properties": { + "fabric": { + "description": "Fabric associated with Maas Vlan", + "type": "string" + }, + "id": { + "description": "Id of Maas Vlan", + "type": "integer" + }, + "name": { + "description": "Name of Maas Vlan", + "type": "string" + } + }, + "type": "object" + }, + "v1MaasZone": { + "description": "Maas zone", + "properties": { + "description": { + "description": "Description of Maas domain", + "type": "string" + }, + "name": { + "description": "Name of Maas zone", + "type": "string" + } + }, + "type": "object" + }, + "v1MaasZones": { + "description": "List of Maas zones", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1MaasZone" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1MachineCertificate": { + "description": "K8 Certificates for master nodes", + "properties": { + "certificateAuthorities": { + "description": "Applicable certificate authorities", + "items": { + "$ref": "#/definitions/v1CertificateAuthority" + }, + "type": "array" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1MachineCertificates": { + "description": "K8 Certificates for all the cluster's master nodes", + "properties": { + "machineCertificates": { + "items": { + "$ref": "#/definitions/v1MachineCertificate" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1MachineHealth": { + "description": "Machine health state", + "properties": { + "conditions": { + "items": { + "$ref": "#/definitions/v1MachineHealthCondition" + }, + "type": "array" + }, + "lastHeartBeatTimestamp": { + "$ref": "#/definitions/v1Time" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1MachineHealthCheckConfig": { + "properties": { + "healthCheckMaxUnhealthy": { + "description": "HealthCheckMaxUnhealthy is the value above which, if current nodes are unhealthy remediation will not be triggered Can be an absolute int64 number or a percentage string Default value is 100%, i.e by default it is disabled", + "type": "string" + }, + "networkReadyHealthCheckDuration": { + "description": "NetworkReadyHealthCheckDuration is the timeout to check for the network availability. If the network is not available in the given available time, beyond the timeout check a node will be killed and a new node will be created. Default time is 10m", + "type": "string" + }, + "nodeReadyHealthCheckDuration": { + "description": "NodeReadyHealthCheckDuration is the timeout to check for the node ready state. If the node is not ready within the time out set, the node will be deleted and a new node will be launched. Default time is 10m", + "type": "string" + } + }, + "type": "object" + }, + "v1MachineHealthCondition": { + "description": "Machine health condition", + "properties": { + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "v1MachineMaintenance": { + "properties": { + "action": { + "description": "Machine maintenance mode action", + "enum": [ + "cordon", + "uncordon" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1MachineMaintenanceStatus": { + "description": "Machine maintenance status", + "properties": { + "action": { + "type": "string" + }, + "message": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1MachineManagementConfig": { + "properties": { + "osPatchConfig": { + "$ref": "#/definitions/v1OsPatchConfig", + "description": "Os patch config contains properties to patch node os with latest security packages. If OsPatchConfig is not provided then node os will not be patched with latest security updates." + } + }, + "type": "object" + }, + "v1MachinePoolConfigEntity": { + "description": "Machine pool configuration for the cluster", + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "Additional labels to be part of the machine pool", + "type": "object" + }, + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", + "type": "object" + }, + "isControlPlane": { + "description": "Whether this pool is for control plane", + "type": "boolean", + "x-omitempty": false + }, + "labels": { + "description": "Labels for this machine pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "machinePoolProperties": { + "$ref": "#/definitions/v1MachinePoolProperties" + }, + "maxSize": { + "description": "Max size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "minSize": { + "description": "Min size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "nodeRepaveInterval": { + "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", + "format": "int32", + "type": "integer" + }, + "size": { + "description": "Size of the pool, number of nodes/machines", + "format": "int32", + "type": "integer" + }, + "taints": { + "description": "Master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array", + "uniqueItems": true + }, + "updateStrategy": { + "$ref": "#/definitions/v1UpdateStrategy", + "description": "Rolling update strategy for this machine pool if not specified, will use ScaleOut" + }, + "useControlPlaneAsWorker": { + "description": "If IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean", + "x-omitempty": false + } + }, + "required": [ + "name", + "size", + "labels" + ], + "type": "object" + }, + "v1MachinePoolMeta": { + "properties": { + "cloudType": { + "type": "string" + }, + "healthy": { + "description": "number of healthy machines", + "format": "int32", + "type": "integer", + "x-omitempty": false + }, + "infraProfileTemplate": { + "$ref": "#/definitions/v1ClusterProfileTemplateMeta", + "description": "InfraClusterProfile contains OS/Kernel for this NodePool" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean", + "x-omitempty": false + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "maintenanceMode": { + "description": "number of machines under maintenance", + "format": "int32", + "type": "integer", + "x-omitempty": false + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1MachinePoolProperties": { + "description": "Machine pool specific properties", + "properties": { + "archType": { + "$ref": "#/definitions/v1ArchType", + "description": "Architecture type of the pool. Default value is 'amd64'", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1MachinePoolRate": { + "description": "Machine pool estimated rate information", + "properties": { + "name": { + "type": "string" + }, + "nodesCount": { + "format": "int32", + "type": "integer" + }, + "rate": { + "$ref": "#/definitions/v1CloudRate" + } + }, + "type": "object" + }, + "v1MachinePoolsMachineUids": { + "properties": { + "machinePools": { + "additionalProperties": { + "$ref": "#/definitions/v1MachineUids" + }, + "type": "object" + } + } + }, + "v1MachineUids": { + "properties": { + "machineUids": { + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "v1Macro": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "v1Macros": { + "properties": { + "macros": { + "items": { + "$ref": "#/definitions/v1Macro" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1ManagedDisk": { + "properties": { + "storageAccountType": { + "type": "string" + } + }, + "type": "object" + }, + "v1Manifest": { + "description": "Manifest object", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ManifestPublishedSpec" + } + } + }, + "v1ManifestData": { + "description": "Published manifest object", + "properties": { + "content": { + "description": "Manifest content in yaml", + "type": "string" + }, + "digest": { + "description": "Manifest digest", + "type": "string" + } + }, + "type": "object" + }, + "v1ManifestEntities": { + "properties": { + "items": { + "description": "Manifests array", + "items": { + "$ref": "#/definitions/v1ManifestEntity" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1ManifestEntity": { + "description": "Manifest object", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ManifestSpec" + } + } + }, + "v1ManifestInputEntity": { + "description": "Manifest request payload", + "properties": { + "content": { + "description": "Manifest content", + "type": "string" + }, + "name": { + "description": "Manifest name", + "type": "string" + } + } + }, + "v1ManifestPublishedSpec": { + "description": "Manifest spec", + "properties": { + "published": { + "$ref": "#/definitions/v1ManifestData" + } + } + }, + "v1ManifestRefInputEntities": { + "description": "Pack manifests input params", + "properties": { + "manifests": { + "description": "Pack manifests array", + "items": { + "$ref": "#/definitions/v1ManifestRefInputEntity" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1ManifestRefInputEntity": { + "description": "Manifest request payload", + "properties": { + "content": { + "description": "Manifest content in yaml", + "type": "string" + }, + "uid": { + "description": "Manifest uid", + "type": "string" + } + } + }, + "v1ManifestRefUpdateEntity": { + "description": "Manifest update request payload", + "properties": { + "content": { + "description": "Manifest content in yaml", + "type": "string" + }, + "name": { + "description": "Manifest name", + "type": "string" + }, + "uid": { + "description": "Manifest uid", + "type": "string" + } + }, + "required": [ + "name" + ] + }, + "v1ManifestSpec": { + "description": "Manifest spec", + "properties": { + "draft": { + "$ref": "#/definitions/v1ManifestData" + }, + "published": { + "$ref": "#/definitions/v1ManifestData" + } + }, + "type": "object" + }, + "v1ManifestSummary": { + "description": "Manifest object", + "properties": { + "content": { + "description": "Manifest content in yaml", + "type": "string" + }, + "name": { + "description": "Manifest name", + "type": "string" + }, + "uid": { + "description": "Manifest uid", + "type": "string" + } + } + }, + "v1Memory": { + "properties": { + "sizeInMB": { + "description": "memory size in bytes", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "v1MetricAggregation": { + "description": "Aggregation values", + "properties": { + "avg": { + "type": "number", + "x-omitempty": false + }, + "count": { + "format": "int64", + "type": "number", + "x-omitempty": false + }, + "max": { + "type": "number", + "x-omitempty": false + }, + "min": { + "type": "number", + "x-omitempty": false + }, + "sum": { + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1MetricMetadata": { + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1MetricPoint": { + "description": "Metric Info", + "properties": { + "avg": { + "type": "number" + }, + "count": { + "format": "int64", + "type": "number" + }, + "max": { + "type": "number" + }, + "min": { + "type": "number" + }, + "sum": { + "type": "number" + }, + "timestamp": { + "format": "int64", + "type": "number" + }, + "value": { + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1MetricTimeSeries": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1Metrics" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1MetricTimeSeriesList": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1MetricsList" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1Metrics": { + "properties": { + "aggregation": { + "$ref": "#/definitions/v1MetricAggregation" + }, + "kind": { + "type": "string" + }, + "points": { + "items": { + "$ref": "#/definitions/v1MetricPoint" + }, + "type": "array", + "uniqueItems": true + }, + "unit": { + "type": "string" + } + }, + "type": "object" + }, + "v1MetricsList": { + "properties": { + "metadata": { + "$ref": "#/definitions/v1MetricMetadata" + }, + "metrics": { + "items": { + "$ref": "#/definitions/v1Metrics" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1MfaAuthenticationExtensions": { + "additionalProperties": { + "type": "object" + }, + "type": "object" + }, + "v1MfaAuthenticatorSelection": { + "properties": { + "authenticatorAttachment": { + "type": "string" + }, + "requireResidentKey": { + "type": "boolean" + }, + "residentKey": { + "type": "string" + }, + "userVerification": { + "type": "string" + } + }, + "type": "object" + }, + "v1MfaConveyancePreference": { + "enum": [ + "none", + "indirect", + "direct", + "enterprise" + ], + "type": "string" + }, + "v1MfaCredentialCreationRequest": { + "properties": { + "_type": { + "type": "string" + }, + "authenticatorAttachment": { + "type": "string" + }, + "clientExtensionResults": { + "additionalProperties": { + "type": "object" + }, + "type": "object" + }, + "deviceName": { + "type": "string" + }, + "id": { + "type": "string" + }, + "rawId": { + "$ref": "#/definitions/URLEncodedBase64" + }, + "response": { + "properties": { + "attestationObject": { + "$ref": "#/definitions/URLEncodedBase64" + }, + "clientDataJSON": { + "$ref": "#/definitions/URLEncodedBase64" + }, + "transports": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "transports": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1MfaCredentialDescriptor": { + "properties": { + "attestationType": { + "type": "string" + }, + "id": { + "$ref": "#/definitions/urlEncodedBase64" + }, + "transports": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "v1MfaCredentialParameter": { + "properties": { + "alg": { + "type": "integer" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "v1MfaDeviceMeta": { + "properties": { + "creationTimestamp": { + "$ref": "#/definitions/v1Time" + }, + "deviceName": { + "type": "string" + } + }, + "type": "object" + }, + "v1MfaDeviceName": { + "properties": { + "deviceName": { + "type": "string" + } + }, + "type": "object" + }, + "v1MfaDevices": { + "items": { + "$ref": "#/definitions/v1MfaDeviceMeta" + }, + "type": "array" + }, + "v1MfaLoginStart": { + "properties": { + "publicKey": { + "$ref": "#/definitions/v1MfaPublicKeyCredentialRequestOptions" + } + }, + "type": "object" + }, + "v1MfaPublicKeyCredentialCreationOptions": { + "properties": { + "attestation": { + "$ref": "#/definitions/v1MfaConveyancePreference" + }, + "authenticatorSelection": { + "$ref": "#/definitions/v1MfaAuthenticatorSelection" + }, + "challenge": { + "$ref": "#/definitions/URLEncodedBase64" + }, + "excludeCredentials": { + "items": { + "$ref": "#/definitions/v1MfaCredentialDescriptor" + }, + "type": "array" + }, + "extensions": { + "$ref": "#/definitions/v1MfaAuthenticationExtensions" + }, + "pubKeyCredParams": { + "items": { + "$ref": "#/definitions/v1MfaCredentialParameter" + }, + "type": "array" + }, + "rp": { + "$ref": "#/definitions/v1MfaRelyingPartyEntity" + }, + "timeout": { + "type": "integer" + }, + "user": { + "$ref": "#/definitions/v1MfaUserEntity" + } + }, + "type": "object" + }, + "v1MfaPublicKeyCredentialRequestOptions": { + "properties": { + "allowCredentials": { + "items": { + "$ref": "#/definitions/v1MfaCredentialDescriptor" + }, + "type": "array" + }, + "challenge": { + "$ref": "#/definitions/urlEncodedBase64" + }, + "extensions": { + "$ref": "#/definitions/v1MfaAuthenticationExtensions" + }, + "rpId": { + "type": "string" + }, + "timeout": { + "type": "integer" + }, + "userVerification": { + "type": "string" + } + }, + "type": "object" + }, + "v1MfaRegistrationStart": { + "properties": { + "publicKey": { + "$ref": "#/definitions/v1MfaPublicKeyCredentialCreationOptions" + } + }, + "type": "object" + }, + "v1MfaRelyingPartyEntity": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1MfaUserEntity": { + "properties": { + "displayName": { + "type": "string" + }, + "id": { + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1MgmtApp": { + "description": "Spectro application management data", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1MgmtAppSpec" + }, + "status": { + "$ref": "#/definitions/v1MgmtAppStatus" + } + }, + "type": "object" + }, + "v1MgmtAppContainersState": { + "properties": { + "running": { + "properties": { + "startedAt": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "terminated": { + "properties": { + "exitCode": { + "type": "integer" + }, + "finishedAt": { + "$ref": "#/definitions/v1Time" + }, + "reason": { + "type": "string" + }, + "signal": { + "type": "integer" + }, + "startedAt": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "waiting": { + "properties": { + "reason": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1MgmtAppContainersStatus": { + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "numberOfRestarts": { + "type": "integer" + }, + "state": { + "$ref": "#/definitions/v1MgmtAppContainersState" + } + }, + "type": "object" + }, + "v1MgmtAppCronJobStatus": { + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "lastScheduleTime": { + "$ref": "#/definitions/v1Time" + }, + "lastSuccessfulRunTime": { + "$ref": "#/definitions/v1Time" + }, + "messages": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "pods": { + "additionalProperties": { + "$ref": "#/definitions/v1MgmtAppPodsStatus" + }, + "type": "object" + } + }, + "type": "object" + }, + "v1MgmtAppEnvHealthStatus": { + "properties": { + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaces": { + "additionalProperties": { + "$ref": "#/definitions/v1MgmtAppNameSpaceStatus" + }, + "type": "object" + } + }, + "type": "object" + }, + "v1MgmtAppHealth": { + "properties": { + "isHealthy": { + "type": "boolean" + }, + "podHealth": { + "items": { + "$ref": "#/definitions/v1MgmtPodHealth" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1MgmtAppNameSpaceStatus": { + "properties": { + "cronJobs": { + "additionalProperties": { + "$ref": "#/definitions/v1MgmtAppCronJobStatus" + }, + "type": "object" + }, + "deployments": { + "additionalProperties": { + "$ref": "#/definitions/v1MgmtAppObjectStatus" + }, + "type": "object" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "items": { + "type": "string" + }, + "type": "array" + }, + "statefulSets": { + "additionalProperties": { + "$ref": "#/definitions/v1MgmtAppObjectStatus" + }, + "type": "object" + } + }, + "type": "object" + }, + "v1MgmtAppObjectStatus": { + "properties": { + "availableReplicas": { + "type": "integer" + }, + "creationTime": { + "$ref": "#/definitions/v1Time" + }, + "desiredReplicaCount": { + "type": "integer" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "pods": { + "additionalProperties": { + "$ref": "#/definitions/v1MgmtAppPodsStatus" + }, + "type": "object" + } + }, + "type": "object" + }, + "v1MgmtAppPodsStatus": { + "properties": { + "containers": { + "additionalProperties": { + "$ref": "#/definitions/v1MgmtAppContainersStatus" + }, + "type": "object" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "messages": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "phase": { + "type": "string" + }, + "pvcs": { + "additionalProperties": { + "$ref": "#/definitions/v1MgmtAppPvcStatus" + }, + "type": "object" + }, + "reason": { + "type": "string" + }, + "startTime": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1MgmtAppPvcStatus": { + "properties": { + "claimName": { + "type": "string" + }, + "creationTime": { + "$ref": "#/definitions/v1Time" + }, + "isHealthy": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1MgmtAppSpec": { + "description": "spectro application management specifications", + "properties": { + "appEnv": { + "type": "string" + }, + "cloudType": { + "type": "string" + }, + "installedVersion": { + "type": "string" + }, + "latestVersion": { + "type": "string" + }, + "spectroClusterUid": { + "type": "string" + } + } + }, + "v1MgmtAppStatus": { + "description": "spectro application management status", + "properties": { + "appVersions": { + "items": { + "$ref": "#/definitions/v1AppVersion" + }, + "type": "array", + "uniqueItems": true + }, + "isFailed": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string" + }, + "messageLogs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "state": { + "type": "string" + }, + "upgradeHistory": { + "items": { + "$ref": "#/definitions/v1SpectroMgmtUpgrade" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1MgmtAppUpgrade": { + "properties": { + "spec": { + "properties": { + "currentVersion": { + "type": "string", + "x-omitempty": false + }, + "previousVersion": { + "type": "string", + "x-omitempty": false + }, + "toBeUpgradedVersion": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "status": { + "properties": { + "action": { + "type": "string", + "x-omitempty": false + }, + "states": { + "properties": { + "imageUpdate": { + "$ref": "#/definitions/v1MgmtUpgradeState", + "x-omitempty": false, + "x-order": 1 + }, + "spectroClusterUpdate": { + "$ref": "#/definitions/v1MgmtUpgradeState", + "x-omitempty": false, + "x-order": 0 + }, + "spectroServiceResume": { + "$ref": "#/definitions/v1MgmtUpgradeState", + "x-omitempty": false, + "x-order": 4 + }, + "spectroVersionConfigMapUpdate": { + "$ref": "#/definitions/v1MgmtUpgradeState", + "x-omitempty": false, + "x-order": 3 + }, + "spectroVersionServiceSuspend": { + "$ref": "#/definitions/v1MgmtUpgradeState", + "x-omitempty": false, + "x-order": 2 + } + }, + "type": "object" + }, + "upgradeStatus": { + "type": "string", + "x-omitempty": false + }, + "versionHistory": { + "items": { + "type": "string" + }, + "type": "array", + "x-omitempty": false + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1MgmtAppVersion": { + "description": "spectro application management version", + "properties": { + "version": { + "properties": { + "appEnv": { + "type": "string" + }, + "cloudType": { + "type": "string" + }, + "installedVersion": { + "type": "string" + }, + "latestVersion": { + "type": "string" + } + }, + "type": "object" + } + } + }, + "v1MgmtBackupSpec": { + "description": "backup spec", + "properties": { + "backupUid": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "modeUid": { + "type": "string" + }, + "proxy": { + "description": "proxy information if applicable", + "type": "string" + }, + "scheduleTime": { + "$ref": "#/definitions/v1Time" + }, + "scheduleType": { + "default": "Automated", + "enum": [ + "OnDemand", + "Automated" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1MgmtDbCollectionIndexInfo": { + "description": "Database info", + "properties": { + "key": { + "additionalProperties": { + "type": "integer" + } + }, + "name": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1MgmtDbCollectionInfo": { + "description": "Database info", + "properties": { + "count": { + "type": "integer" + }, + "indexes": { + "items": { + "$ref": "#/definitions/v1MgmtDbCollectionIndexInfo" + }, + "type": "array" + }, + "isCapped": { + "type": "boolean" + }, + "isReadOnly": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "storageSize": { + "type": "integer" + }, + "totalIndexSize": { + "type": "integer" + } + }, + "type": "object" + }, + "v1MgmtDbHealth": { + "properties": { + "databases": { + "items": { + "$ref": "#/definitions/v1MgmtDbInfo" + }, + "type": "array" + }, + "totalIndexSize": { + "type": "integer" + }, + "totalSize": { + "type": "integer" + } + }, + "type": "object" + }, + "v1MgmtDbInfo": { + "description": "Database info", + "properties": { + "collections": { + "items": { + "$ref": "#/definitions/v1MgmtDbCollectionInfo" + }, + "type": "array" + }, + "isEmpty": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "totalIndexSize": { + "type": "integer" + } + }, + "type": "object" + }, + "v1MgmtDeleteBackupFtpEntity": { + "description": "delete backups based on retention period", + "properties": { + "fileTransferConfig": { + "$ref": "#/definitions/v1MgmtFileTransferFtpEntity" + }, + "retentionPeriod": { + "type": "integer" + } + }, + "type": "object" + }, + "v1MgmtDeleteBackupS3Entity": { + "description": "delete backups based on retention period", + "properties": { + "fileTransferConfig": { + "$ref": "#/definitions/v1MgmtFileTransferS3Entity" + }, + "retentionPeriod": { + "type": "integer" + } + }, + "type": "object" + }, + "v1MgmtErrLog": { + "properties": { + "ref": { + "type": "string" + }, + "spec": { + "$ref": "#/definitions/v1MgmtErrSpec" + } + }, + "type": "object" + }, + "v1MgmtErrLogs": { + "items": { + "$ref": "#/definitions/v1MgmtErrLog" + }, + "type": "array", + "uniqueItems": true + }, + "v1MgmtErrSpec": { + "properties": { + "causes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "data": { + "type": "string" + }, + "debug": { + "additionalProperties": { + "type": "object" + }, + "type": "object" + }, + "errCode": { + "type": "string" + }, + "errMsg": { + "type": "string" + }, + "stackTraces": { + "items": { + "type": "string" + }, + "type": "array" + }, + "userCtx": { + "properties": { + "projectUid": { + "type": "string" + }, + "serviceResUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + }, + "userUid": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1MgmtFileTransferFtpEntity": { + "description": "file transfer details", + "properties": { + "backupSpec": { + "$ref": "#/definitions/v1MgmtBackupSpec" + }, + "ftp": { + "$ref": "#/definitions/v1MgmtFtpConfig" + } + }, + "type": "object" + }, + "v1MgmtFileTransferS3Entity": { + "description": "file transfer details", + "properties": { + "backupSpec": { + "$ref": "#/definitions/v1MgmtBackupSpec" + }, + "s3": { + "$ref": "#/definitions/v1MgmtS3Config" + } + }, + "type": "object" + }, + "v1MgmtFtpConfig": { + "description": "ftp config", + "properties": { + "directory": { + "type": "string" + }, + "password": { + "type": "string" + }, + "server": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "v1MgmtHash": { + "properties": { + "hash": { + "type": "string" + } + }, + "required": [ + "hash" + ], + "type": "object" + }, + "v1MgmtListBackupFtpEntity": { + "description": "list ftp backups", + "properties": { + "fileTransferConfig": { + "$ref": "#/definitions/v1MgmtFileTransferFtpEntity" + } + }, + "type": "object" + }, + "v1MgmtListBackupS3Entity": { + "description": "list s3 backups", + "properties": { + "fileTransferConfig": { + "$ref": "#/definitions/v1MgmtFileTransferS3Entity" + } + }, + "type": "object" + }, + "v1MgmtMigrateEntity": { + "description": "SystemAdmin", + "properties": { + "db": { + "type": "string" + }, + "host": { + "type": "string" + }, + "isServiceRecord": { + "type": "boolean" + }, + "password": { + "type": "string" + }, + "port": { + "type": "integer" + }, + "uri": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "v1MgmtMigrationStatuses": { + "description": "SystemAdmin", + "properties": { + "finishTime": { + "$ref": "#/definitions/v1Time" + }, + "folderName": { + "type": "string" + }, + "isCompleted": { + "type": "boolean" + }, + "message": { + "items": { + "type": "string" + }, + "type": "array" + }, + "startTime": { + "$ref": "#/definitions/v1Time" + }, + "state": { + "type": "string", + "x-omitempty": false + }, + "status": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1MgmtMsgBrokerReinitStatus": { + "properties": { + "failures": { + "items": { + "$ref": "#/definitions/v1MgmtMsgBrokerReinitStatusEntity" + }, + "type": "array" + }, + "success": { + "items": { + "$ref": "#/definitions/v1MgmtMsgBrokerReinitStatusEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1MgmtMsgBrokerReinitStatusEntity": { + "properties": { + "account": { + "type": "string" + }, + "isSuccess": { + "type": "boolean" + }, + "message": { + "type": "string" + } + }, + "type": "object" + }, + "v1MgmtPodHealth": { + "description": "SystemAdmin", + "properties": { + "isHealthy": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1MgmtS3Config": { + "description": "s3 config", + "properties": { + "accessKey": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "directory": { + "type": "string" + }, + "region": { + "type": "string" + }, + "secretKey": { + "type": "string" + } + }, + "type": "object" + }, + "v1MgmtUpgradeState": { + "properties": { + "description": { + "type": "string", + "x-omitempty": false + }, + "details": { + "items": { + "type": "string" + }, + "type": "array", + "x-omitempty": false + }, + "endTimestamp": { + "$ref": "#/definitions/v1Time", + "x-omitempty": false + }, + "isCompleted": { + "type": "boolean", + "x-omitempty": false + }, + "message": { + "type": "string", + "x-omitempty": false + }, + "startTimestamp": { + "$ref": "#/definitions/v1Time", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1MonthlyUsage": { + "description": "Monthly usage object", + "properties": { + "month": { + "$ref": "#/definitions/v1Time", + "description": "Month of usage" + }, + "tenantUsages": { + "description": "List of tenants usage", + "items": { + "$ref": "#/definitions/v1TenantUsage" + }, + "type": "array", + "uniqueItems": true + }, + "usedAlloyCredits": { + "description": "Credits used by imported clusters", + "format": "float64", + "type": "number" + }, + "usedPureCredits": { + "description": "Credits used by managed clusters", + "format": "float64", + "type": "number" + } + } + }, + "v1MsgBrokerConnection": { + "properties": { + "account": { + "type": "string" + }, + "accountUid": { + "type": "string" + }, + "cid": { + "type": "integer" + }, + "cluster": { + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "cpu": { + "type": "number" + }, + "duplicationCount": { + "type": "integer" + }, + "iP": { + "type": "string" + }, + "idle": { + "type": "string" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "lang": { + "type": "string" + }, + "lastActivity": { + "$ref": "#/definitions/v1Time" + }, + "name": { + "type": "string" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingBytes": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "start": { + "$ref": "#/definitions/v1Time" + }, + "subscriptionList": { + "items": { + "type": "string" + }, + "type": "array" + }, + "subscriptions": { + "type": "integer" + }, + "tLSCipherSuite": { + "type": "string" + }, + "tLSVersion": { + "type": "string" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1MsgBrokerConnectionList": { + "items": { + "$ref": "#/definitions/v1MsgBrokerConnection" + }, + "type": "array" + }, + "v1MsgBrokerConnections": { + "properties": { + "connections": { + "items": { + "$ref": "#/definitions/v1MsgBrokerConnection" + }, + "type": "array", + "uniqueItems": true + }, + "limit": { + "type": "integer" + }, + "now": { + "$ref": "#/definitions/v1Time" + }, + "numOfConnections": { + "type": "integer" + }, + "offset": { + "type": "integer" + }, + "serverId": { + "type": "string" + }, + "totalConnections": { + "type": "integer" + } + }, + "type": "object" + }, + "v1MsgBrokerHealth": { + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta", + "type": "object" + }, + "spec": { + "$ref": "#/definitions/v1MsgBrokerNodesHealthSpec", + "type": "object" + }, + "status": { + "$ref": "#/definitions/v1MsgBrokerNodesHealthStatus", + "type": "object" + } + }, + "type": "object" + }, + "v1MsgBrokerNodeHealth": { + "properties": { + "allyPublishersByTenant": { + "additionalProperties": { + "$ref": "#/definitions/v1MsgBrokerConnectionList" + }, + "type": "object" + }, + "duplicateSubscribersCount": { + "additionalProperties": { + "type": "integer" + }, + "type": "object" + }, + "hubbleSubscribersByService": { + "additionalProperties": { + "$ref": "#/definitions/v1MsgBrokerConnectionList" + }, + "type": "object" + }, + "hubbleSubscribersByTenant": { + "additionalProperties": { + "$ref": "#/definitions/v1MsgBrokerConnectionList" + }, + "type": "object" + }, + "hubbleSubscribersByType": { + "additionalProperties": { + "$ref": "#/definitions/v1MsgBrokerConnectionList" + }, + "type": "object" + }, + "nodeId": { + "type": "string" + }, + "subscriberWithAbnormalRTT": { + "$ref": "#/definitions/v1MsgBrokerConnectionList" + }, + "subscribersWithAbnormalSubscriptions": { + "$ref": "#/definitions/v1MsgBrokerConnectionList" + }, + "uniqueSubscribers": { + "type": "integer" + }, + "unrecognizedClients": { + "$ref": "#/definitions/v1MsgBrokerConnectionList" + } + }, + "type": "object" + }, + "v1MsgBrokerNodeHealthSpec": { + "properties": { + "connections": { + "$ref": "#/definitions/v1MsgBrokerConnections", + "type": "object" + }, + "nodeId": { + "type": "string" + }, + "routes": { + "$ref": "#/definitions/v1MsgBrokerRoutes", + "type": "object" + }, + "variables": { + "$ref": "#/definitions/v1MsgBrokerVariables", + "type": "object" + } + }, + "type": "object" + }, + "v1MsgBrokerNodesHealthSpec": { + "properties": { + "nodes": { + "items": { + "$ref": "#/definitions/v1MsgBrokerNodeHealthSpec" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1MsgBrokerNodesHealthStatus": { + "properties": { + "nodes": { + "items": { + "$ref": "#/definitions/v1MsgBrokerNodeHealth" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1MsgBrokerRoutes": { + "properties": { + "numRoutes": { + "type": "integer" + }, + "routes": { + "items": { + "$ref": "#/definitions/v1NatsRoute" + }, + "type": "array" + }, + "serverId": { + "type": "string" + } + }, + "type": "object" + }, + "v1MsgBrokerVariables": { + "properties": { + "authRequired": { + "type": "boolean" + }, + "authTimeout": { + "type": "integer" + }, + "cluster": { + "properties": { + "addr": { + "type": "string" + }, + "authTimeout": { + "type": "integer" + }, + "clusterPort": { + "type": "integer" + }, + "urls": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "configLoadTime": { + "$ref": "#/definitions/v1Time" + }, + "connectUrls": { + "items": { + "type": "string" + }, + "type": "array" + }, + "connections": { + "type": "integer" + }, + "cores": { + "type": "integer" + }, + "cpu": { + "type": "number" + }, + "gitCommit": { + "type": "string" + }, + "go": { + "type": "string" + }, + "gomaxprocs": { + "type": "integer" + }, + "host": { + "type": "string" + }, + "httpHost": { + "type": "string" + }, + "httpPort": { + "type": "integer" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "leafNodes": { + "type": "integer" + }, + "maxConnections": { + "type": "integer" + }, + "maxControlLine": { + "type": "integer" + }, + "maxPayload": { + "type": "integer" + }, + "maxPending": { + "type": "integer" + }, + "mem": { + "type": "integer" + }, + "now": { + "$ref": "#/definitions/v1Time" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pingInterval": { + "type": "integer" + }, + "pingMax": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "proto": { + "type": "integer" + }, + "remotes": { + "type": "integer" + }, + "routes": { + "type": "integer" + }, + "serverId": { + "type": "string" + }, + "serverName": { + "type": "string" + }, + "slowConsumers": { + "type": "integer" + }, + "start": { + "$ref": "#/definitions/v1Time" + }, + "subscriptions": { + "type": "integer" + }, + "tlsRequired": { + "type": "boolean" + }, + "tlsTimeout": { + "type": "integer" + }, + "totalConnections": { + "type": "integer" + }, + "uptime": { + "type": "string" + }, + "version": { + "type": "string" + }, + "writeDeadline": { + "type": "integer" + } + }, + "type": "object" + }, + "v1MsgSubscriber": { + "description": "Message subscriber request", + "properties": { + "accountId": { + "type": "string" + }, + "publisher": { + "type": "string" + }, + "service": { + "type": "string" + }, + "userId": { + "type": "string" + } + }, + "type": "object" + }, + "v1Nameserver": { + "description": "Nameserver define search domains and nameserver addresses", + "properties": { + "addresses": { + "items": { + "type": "string" + }, + "type": "array" + }, + "search": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1NatsConfiguration": { + "description": "Describes the response that contains the nats configuration to establish credentials", + "properties": { + "connectionString": { + "description": "Describes the preCalculated connection string, can be used directly to make connection", + "type": "string" + }, + "enableTls": { + "description": "Describes the NATs application option to use a TLS based custom dialer. Its enabled when external Certificate is used over the existing one.", + "type": "boolean" + }, + "insecureTls": { + "description": "Describes the NATs tls option to skip verifying the client certificate", + "type": "boolean" + }, + "password": { + "description": "Describes the NATs user's password", + "type": "string" + }, + "scheme": { + "description": "Describes the NATs protocol for the connection. Eg- 'tls', 'nats'", + "type": "string" + }, + "tlsCertificate": { + "description": "Describes the NATs tls certificate used for making a secure connection", + "type": "string" + }, + "tlsKey": { + "description": "Describes the NATs tls certificate key used for making a secure connection", + "type": "string" + }, + "urls": { + "description": "Describes the URLs of the nats nodes used in nats HA setup where the client will connect", + "type": "string" + }, + "userName": { + "description": "Describes the NATs user name", + "type": "string" + } + }, + "type": "object" + }, + "v1NatsCredentialRequest": { + "description": "Describes the request for resource's nats credential", + "properties": { + "clusterUid": { + "description": "Deprecated. please use resourceUid", + "type": "string" + }, + "isSystem": { + "description": "Describes if its a system request", + "type": "boolean" + }, + "resourceUid": { + "description": "Describes the resource for which credentials has to be fetched", + "type": "string" + }, + "serviceName": { + "description": "Describes the service for which credentials has to be fetched. Possible values [ally, jet]", + "enum": [ + "ally", + "jet" + ], + "type": "string" + }, + "tenantUid": { + "description": "Describes the tenant of the resource", + "type": "string" + } + }, + "type": "object" + }, + "v1NatsCredentials": { + "description": "Describes the response that contains the nats credentials", + "properties": { + "allowedPublisher": { + "description": "Describes the subject on which client is allowed to publish", + "type": "string" + }, + "allowedSubcriber": { + "description": "Describes the subject on which client is allowed to subscribe", + "type": "string" + }, + "jwt": { + "description": "Describes the jwt token which will be used as an credential for the nats", + "type": "string" + }, + "seed": { + "description": "Describes the seed for the jwt", + "type": "string" + } + }, + "type": "object" + }, + "v1NatsRoute": { + "properties": { + "didSolicit": { + "type": "boolean" + }, + "inBytes": { + "type": "integer" + }, + "inMsgs": { + "type": "integer" + }, + "isConfigured": { + "type": "boolean" + }, + "outBytes": { + "type": "integer" + }, + "outMsgs": { + "type": "integer" + }, + "pendingSize": { + "type": "integer" + }, + "port": { + "type": "integer" + }, + "remoteId": { + "type": "string" + }, + "rid": { + "type": "integer" + }, + "rtt": { + "type": "string" + }, + "subscriptions": { + "type": "integer" + } + }, + "type": "object" + }, + "v1NestedCloudConfigStatus": { + "description": "Defines the status of virtual cloud config", + "properties": { + "conditions": { + "items": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "type": "array", + "x-kubernetes-patch-merge-key": "type", + "x-kubernetes-patch-strategy": "merge" + }, + "isAddonLayer": { + "description": "addon layers present in spc", + "type": "boolean" + } + }, + "type": "object" + }, + "v1Nic": { + "properties": { + "dns": { + "items": { + "type": "string" + }, + "type": "array" + }, + "gateway": { + "type": "string" + }, + "ip": { + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "macAddr": { + "type": "string" + }, + "nicName": { + "type": "string" + }, + "subnet": { + "type": "string" + } + }, + "type": "object" + }, + "v1NodesAutoRemediationSettings": { + "properties": { + "disableNodesAutoRemediation": { + "type": "boolean", + "x-omitempty": false + }, + "isEnabled": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1NonFipsConfig": { + "description": "Non-FIPS configuration", + "properties": { + "mode": { + "default": "nonFipsDisabled", + "description": "enable or disable the non FIPS complaint", + "enum": [ + "nonFipsEnabled", + "nonFipsDisabled" + ], + "type": "string" + } + } + }, + "v1Notification": { + "description": "Describes event notification and action definition", + "properties": { + "action": { + "$ref": "#/definitions/v1NotificationAction", + "description": "Describes actions for the notification", + "type": "object" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta", + "type": "object" + }, + "relatedObject": { + "$ref": "#/definitions/v1RelatedObject", + "type": "object" + }, + "source": { + "$ref": "#/definitions/v1NotificationSource", + "description": "Describes origin info for the notification", + "type": "object" + }, + "type": { + "description": "Describes type of notification. Possible values [NotificationPackUpdate, NotificationPackRegistryUpdate, NotificationNone]", + "enum": [ + "NotificationPackUpdate", + "NotificationPackRegistryUpdate", + "NotificationNone" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1NotificationAction": { + "description": "Describes actions for the notification", + "properties": { + "ack": { + "description": "Describes the acknowledgement status for the notification", + "type": "boolean", + "x-omitempty": false + }, + "actionMessage": { + "description": "Describes information related to notification action", + "type": "string" + }, + "actionType": { + "description": "Describes action type for the notification. Possible Values [NotifyActionPacksUpdate, NotifyActionClusterProfileUpdate, NotifyActionPackRegistryUpdate, NotifyActionClusterUpdate, NotifyActionNone]", + "enum": [ + "NotifyActionPacksUpdate", + "NotifyActionClusterProfileUpdate", + "NotifyActionPackRegistryUpdate", + "NotifyActionClusterUpdate", + "NotifyActionNone" + ], + "type": "string" + }, + "events": { + "additionalProperties": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "description": "Describes the events happened for the notifications", + "type": "object" + }, + "isDone": { + "description": "Describes the \"Done\" status for the notification", + "type": "boolean", + "x-omitempty": false + }, + "isInfo": { + "description": "Describes the notification as a information", + "type": "boolean", + "x-omitempty": false + }, + "link": { + "type": "string" + } + }, + "type": "object" + }, + "v1NotificationEvent": { + "description": "Describes notification event details", + "properties": { + "component": { + "description": "Describes component of notification event", + "type": "string" + }, + "digest": { + "description": "Describes notification event digest", + "type": "string" + }, + "message": { + "description": "Describes a information for the notification event", + "type": "string" + }, + "meta": { + "additionalProperties": { + "type": "string" + }, + "description": "Describes a event messages with meta digest as the key", + "type": "object" + }, + "type": { + "description": "Describes notification event type", + "enum": [ + "NotificationPackSync", + "NotificationClusterProfileSync" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1NotificationSource": { + "description": "Describes origin info for the notification", + "properties": { + "component": { + "description": "Describes component where notification originated", + "type": "string" + } + }, + "type": "object" + }, + "v1Notifications": { + "description": "Describe a list of generated notifications", + "properties": { + "items": { + "description": "Describe a list of generated notifications", + "items": { + "$ref": "#/definitions/v1Notification" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData", + "description": "Describes the meta information about the notification lists" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1OS": { + "properties": { + "family": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1ObjectEntity": { + "description": "Object identity meta", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1ObjectMeta": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object" + }, + "creationTimestamp": { + "$ref": "#/definitions/v1Time", + "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value.\nPopulated by the system. Read-only." + }, + "deletionTimestamp": { + "$ref": "#/definitions/v1Time", + "description": "This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client.\nPopulated by the system. Read-only." + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object" + }, + "lastModifiedTimestamp": { + "$ref": "#/definitions/v1Time", + "description": "LastModifiedTimestamp is a timestamp representing the server time when this object was last modified. It is not guaranteed to be set in happens-before order across separate operations. \nClients may not set this value. Populated by the system. Read-only." + }, + "name": { + "description": "Name of the resource.", + "type": "string" + }, + "uid": { + "description": "UID is the unique identifier generated for the resource. This is not an input field for any request.", + "type": "string" + } + }, + "type": "object" + }, + "v1ObjectMetaInputEntity": { + "description": "ObjectMeta input entity for object creation", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations are system generated key value metadata for the resource. As an input certain annotations like description can be set.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels are key value data to organize and categorize resources. Providing spectro__tag as value for a label is considered as a kubernetes compliant tag", + "type": "object" + }, + "name": { + "description": "Name of the resource.", + "type": "string" + } + }, + "type": "object" + }, + "v1ObjectMetaInputEntitySchema": { + "description": "Resource metadata", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + } + }, + "required": [ + "metadata" + ], + "type": "object" + }, + "v1ObjectMetaUpdateEntity": { + "description": "ObjectMeta update entity with uid as input", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1ObjectReference": { + "description": "ObjectReference contains enough information to let you inspect or modify the referred object.", + "properties": { + "kind": { + "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", + "type": "string" + }, + "name": { + "description": "Name of the referent.", + "type": "string" + }, + "uid": { + "description": "UID of the referent.", + "type": "string" + } + }, + "type": "object" + }, + "v1ObjectResReference": { + "description": "Object resource reference", + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "projectUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1ObjectScopeEntity": { + "description": "Object scope identity meta", + "properties": { + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1ObjectTagsEntity": { + "description": "Object identity meta with tags", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1OciImageRegistry": { + "description": "Oci Image Registry", + "properties": { + "baseContentPath": { + "description": "baseContentPath is the root path for the registry content", + "type": "string" + }, + "caCert": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" + }, + "mirrorRegistries": { + "description": "mirrorRegistries contains the array of image sources like gcr.io, ghcr.io, docker.io", + "type": "string" + }, + "name": { + "type": "string" + }, + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "v1OciRegistries": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1OciRegistry" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1OciRegistry": { + "description": "Oci registry information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1OciRegistrySpec" + }, + "status": { + "$ref": "#/definitions/v1OciRegistryStatusSummary" + } + }, + "type": "object" + }, + "v1OciRegistryAuth": { + "description": "Auth credentials of the oci registry", + "properties": { + "password": { + "description": "Password in the credentials", + "format": "password", + "type": "string" + }, + "username": { + "description": "Username in the credentials", + "type": "string" + } + }, + "type": "object" + }, + "v1OciRegistryEntity": { + "description": "Oci registry credentials", + "properties": { + "auth": { + "$ref": "#/definitions/v1RegistryAuth" + }, + "defaultRegion": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "providerType": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "v1OciRegistrySpec": { + "description": "Image registry spec", + "properties": { + "defaultRegion": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "isPrivate": { + "type": "boolean" + }, + "providerType": { + "type": "string" + }, + "registryType": { + "type": "string" + }, + "scope": { + "type": "string" + } + }, + "type": "object" + }, + "v1OciRegistryStatusSummary": { + "description": "OCI registry status summary", + "properties": { + "sync": { + "$ref": "#/definitions/v1RegistrySyncStatus" + } + } + }, + "v1OidcAuth": { + "properties": { + "oidcToken": { + "type": "string" + }, + "org": { + "type": "string" + } + }, + "type": "object" + }, + "v1OidcAuthLogin": { + "properties": { + "emailId": { + "type": "string" + }, + "password": { + "format": "password", + "type": "string" + } + }, + "type": "object" + }, + "v1OidcAuthorizationTokenResponse": { + "properties": { + "access_token": { + "type": "string" + }, + "error": { + "type": "string" + }, + "error_description": { + "type": "string" + }, + "expires_in": { + "type": "integer" + }, + "id_token": { + "type": "string" + }, + "raw": { + "type": "object" + }, + "refresh_token": { + "type": "string" + }, + "scope": { + "type": "string" + } + }, + "type": "object" + }, + "v1OidcLogins": { + "description": "loginsDetails", + "properties": { + "systemLogins": { + "items": { + "$ref": "#/definitions/v1SsoLogin" + }, + "type": "array", + "uniqueItems": true + }, + "tenantLogin": { + "properties": { + "authType": { + "type": "string" + }, + "redirectUrl": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1OidcRefreshToken": { + "description": "oidc request with token", + "properties": { + "token": { + "type": "string" + } + }, + "type": "object" + }, + "v1OpenIDProviderMetadataResponse": { + "properties": { + "authorization_endpoint": { + "description": "REQUIRED. URL of the OP's OAuth 2.0 Authorization Endpoint", + "type": "string" + }, + "claims_supported": { + "description": "RECOMMENDED. JSON array containing a list of the Claim Names of the Claims that the OpenID Provider MAY be able to supply values for", + "type": "string" + }, + "id_token_signing_alg_values_supported": { + "description": "REQUIRED. JSON array containing a list of the JWS signing algorithms (alg values) supported by the OP for the ID Token to encode the Claims in a JWT", + "type": "object" + }, + "issuer": { + "description": "REQUIRED. URL using the https scheme with no query or fragment component that the OP asserts as its Issuer Identifier", + "type": "string" + }, + "jwks_uri": { + "description": "REQUIRED. URL of the OP's JSON Web Key Set [JWK] document.", + "type": "string" + }, + "registration_endpoint": { + "description": "RECOMMENDED. URL of the OP's Dynamic Client Registration Endpoint", + "type": "string" + }, + "response_types_supported": { + "description": "REQUIRED. JSON array containing a list of the OAuth 2.0 response_type values that this OP supports", + "type": "string" + }, + "scopes_supported": { + "description": "RECOMMENDED. JSON array containing a list of the OAuth 2.0 [RFC6749] scope values that this server supports", + "type": "string" + }, + "subject_types_supported": { + "description": "REQUIRED. JSON array containing a list of the Subject Identifier types that this OP supports", + "type": "string" + }, + "token_endpoint": { + "description": "URL of the OP's OAuth 2.0 Token Endpoint", + "type": "string" + }, + "userinfo_endpoint": { + "description": "RECOMMENDED. URL of the OP's UserInfo Endpoint", + "type": "string" + } + }, + "type": "object" + }, + "v1OpenStackAccount": { + "description": "OpenStack account information", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the account.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1OpenStackCloudAccount" + }, + "status": { + "$ref": "#/definitions/v1CloudAccountStatus" + } + }, + "type": "object" + }, + "v1OpenStackAccounts": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1OpenStackAccount" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1OpenStackAz": { + "description": "OpenStack az entity", + "properties": { + "name": { + "description": "Name of OpenStack az", + "type": "string" + } + }, + "type": "object" + }, + "v1OpenStackAzs": { + "description": "List of OpenStack azs", + "properties": { + "azs": { + "items": { + "$ref": "#/definitions/v1OpenStackAz" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "azs" + ], + "type": "object" + }, + "v1OpenStackCloudAccount": { + "description": "auth-url,project,username,password,domain,cacert etc", + "properties": { + "caCert": { + "description": "Ca cert for OpenStack", + "type": "string" + }, + "defaultDomain": { + "description": "Default Domain name", + "type": "string" + }, + "defaultProject": { + "description": "Default Project name", + "type": "string" + }, + "identityEndpoint": { + "description": "Identity endpoint for OpenStack", + "type": "string" + }, + "insecure": { + "description": "For self signed certs in IdentityEndpoint", + "type": "boolean" + }, + "parentRegion": { + "description": "Parent region of OpenStack", + "type": "string" + }, + "password": { + "description": "Password of OpenStack account", + "type": "string" + }, + "username": { + "description": "Username of OpenStack account", + "type": "string" + } + }, + "required": [ + "identityEndpoint", + "username", + "password" + ], + "type": "object" + }, + "v1OpenStackCloudClusterConfigEntity": { + "description": "Openstack cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1OpenStackClusterConfig" + } + }, + "type": "object" + }, + "v1OpenStackCloudConfig": { + "description": "OpenStackCloudConfig is the Schema for the OpenStackcloudconfigs API", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1OpenStackCloudConfigSpec" + }, + "status": { + "$ref": "#/definitions/v1OpenStackCloudConfigStatus" + } + }, + "type": "object" + }, + "v1OpenStackCloudConfigSpec": { + "description": "OpenStackCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", + "properties": { + "cloudAccountRef": { + "$ref": "#/definitions/v1ObjectReference", + "description": "cloudAccountRef should point to the secret which contains OpenStackCloudAccount" + }, + "clusterConfig": { + "$ref": "#/definitions/v1OpenStackClusterConfig" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1OpenStackMachinePoolConfig" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1OpenStackCloudConfigStatus": { + "description": "OpenStackCloudConfigStatus defines the observed state of OpenStackCloudConfig The cloudimage info built by Mold is stored here image should be mapped to a specific machinepool", + "properties": { + "conditions": { + "items": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "type": "array" + }, + "nodeImage": { + "type": "string" + }, + "sourceImageId": { + "description": "sourceImageId, it can be from packref's annotations or from pack.json", + "type": "string" + }, + "useCapiImage": { + "type": "boolean" + } + }, + "type": "object" + }, + "v1OpenStackClusterConfig": { + "description": "Cluster level configuration for OpenStack cloud and applicable for all the machine pools", + "properties": { + "bastionDisabled": { + "description": "Create bastion node option we have earlier supported creation of bastion by default", + "type": "boolean" + }, + "dnsNameservers": { + "description": "DNSNameservers is the list of nameservers for OpenStack Subnet being created. Set this value when you need create a new network/subnet while the access through DNS is required.", + "items": { + "type": "string" + }, + "type": "array" + }, + "domain": { + "$ref": "#/definitions/v1OpenStackResource" + }, + "network": { + "$ref": "#/definitions/v1OpenStackResource", + "description": "For static placement" + }, + "nodeCidr": { + "description": "For dynamic provision NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a network, a subnet with NodeCIDR, and a router connected to this subnet. If you leave this empty, no network will be created.", + "type": "string" + }, + "project": { + "$ref": "#/definitions/v1OpenStackResource" + }, + "region": { + "type": "string" + }, + "sshKeyName": { + "type": "string" + }, + "subnet": { + "$ref": "#/definitions/v1OpenStackResource" + } + }, + "type": "object" + }, + "v1OpenStackDomain": { + "description": "OpenStack domain. A Domain is a collection of projects, users, and roles", + "properties": { + "description": { + "description": "Description is the description of the Domain", + "type": "string" + }, + "id": { + "description": "ID is the unique ID of the domain", + "type": "string" + }, + "name": { + "description": "Name is the name of the domain", + "type": "string" + } + }, + "type": "object" + }, + "v1OpenStackFlavor": { + "description": "OpenStack flavor entity. Flavor represent (virtual) hardware configurations for server resources", + "properties": { + "disk": { + "description": "Disk is the amount of root disk, measured in GB", + "type": "integer" + }, + "ephemeral": { + "description": "Ephemeral is the amount of ephemeral disk space, measured in GB", + "type": "integer" + }, + "id": { + "description": "ID is the flavor's unique ID", + "type": "string" + }, + "memory": { + "description": "Amount of memory, measured in MB", + "type": "integer" + }, + "name": { + "description": "Name is the name of the flavor", + "type": "string" + }, + "vcpus": { + "description": "VCPUs indicates how many (virtual) CPUs are available for this flavor", + "type": "integer" + } + }, + "type": "object" + }, + "v1OpenStackFlavors": { + "description": "List of OpenStack flavours", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1OpenStackFlavor" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1OpenStackKeypair": { + "description": "OpenStack keypair. KeyPair is an SSH key known to the OpenStack Cloud that is available to be injected into servers", + "properties": { + "name": { + "description": "Name is used to refer to this keypair from other services within this region", + "type": "string" + }, + "publicKey": { + "description": "PublicKey is the public key from this pair, in OpenSSH format", + "type": "string" + } + }, + "type": "object" + }, + "v1OpenStackKeypairs": { + "description": "List of OpenStack keypairs", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1OpenStackKeypair" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1OpenStackMachine": { + "description": "OpenStack cloud VM definition", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the machine.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1OpenStackMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudMachineStatus" + } + }, + "type": "object" + }, + "v1OpenStackMachineConfigEntity": { + "properties": { + "azs": { + "description": "for master pool, this will be the failure domains for kcp", + "items": { + "type": "string" + }, + "type": "array" + }, + "flavorConfig": { + "$ref": "#/definitions/v1OpenstackFlavorConfig" + } + }, + "required": [ + "flavorConfig" + ], + "type": "object" + }, + "v1OpenStackMachinePoolCloudConfigEntity": { + "properties": { + "azs": { + "description": "for master pool, this will be the failure domains for kcp", + "items": { + "type": "string" + }, + "type": "array" + }, + "diskGiB": { + "description": "Root disk size", + "format": "int32", + "type": "integer" + }, + "flavorConfig": { + "$ref": "#/definitions/v1OpenstackFlavorConfig" + }, + "subnet": { + "$ref": "#/definitions/v1OpenStackResource" + } + }, + "required": [ + "flavorConfig" + ], + "type": "object" + }, + "v1OpenStackMachinePoolConfig": { + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "additionalLabels", + "type": "object" + }, + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", + "type": "object" + }, + "azs": { + "description": "for master pool, this will be the failure domains for kcp", + "items": { + "type": "string" + }, + "type": "array" + }, + "diskGiB": { + "description": "DiskGiB is used to configure rootVolume, the volume metadata to boot from", + "format": "int32", + "type": "integer" + }, + "flavor": { + "description": "Openstack flavor name, only return argument", + "type": "string" + }, + "flavorConfig": { + "$ref": "#/definitions/v1OpenstackFlavorConfig", + "description": "Openstack flavor configuration, input argument" + }, + "image": { + "type": "string" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean" + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "machinePoolProperties": { + "$ref": "#/definitions/v1MachinePoolProperties" + }, + "maxSize": { + "description": "max size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "minSize": { + "description": "min size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "nodeRepaveInterval": { + "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", + "format": "int32", + "type": "integer" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "subnet": { + "$ref": "#/definitions/v1OpenStackResource" + }, + "taints": { + "description": "master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array", + "uniqueItems": true + }, + "updateStrategy": { + "$ref": "#/definitions/v1UpdateStrategy", + "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" + } + }, + "required": [ + "flavorConfig" + ], + "type": "object" + }, + "v1OpenStackMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1OpenStackMachinePoolCloudConfigEntity" + }, + "poolConfig": { + "$ref": "#/definitions/v1MachinePoolConfigEntity" + } + }, + "required": [ + "cloudConfig" + ], + "type": "object" + }, + "v1OpenStackMachineSpec": { + "description": "OpenStack cloud VM definition spec", + "properties": { + "az": { + "type": "string" + }, + "image": { + "type": "string" + }, + "instanceType": { + "$ref": "#/definitions/v1GenericInstanceType", + "description": "Instance flavor of the machine with cpu and memory info" + }, + "nics": { + "items": { + "$ref": "#/definitions/v1OpenStackNic" + }, + "type": "array" + }, + "projectId": { + "type": "string" + }, + "securityGroups": { + "items": { + "type": "string" + }, + "type": "array" + }, + "sshKeyName": { + "type": "string" + } + }, + "required": [ + "instanceType", + "nics" + ], + "type": "object" + }, + "v1OpenStackMachines": { + "description": "OpenStack machine list", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1OpenStackMachine" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1OpenStackNetwork": { + "description": "OpenStack network", + "properties": { + "description": { + "description": "Description of OpenStack network", + "type": "string" + }, + "id": { + "description": "Id of OpenStack network", + "type": "string" + }, + "name": { + "description": "Name of OpenStack network", + "type": "string" + }, + "subnets": { + "description": "Subnets associated with OpenStack network", + "items": { + "$ref": "#/definitions/v1OpenStackSubnet" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1OpenStackNetworks": { + "description": "List of OpenStack networks", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1OpenStackNetwork" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1OpenStackNic": { + "description": "OpenStack network interface", + "properties": { + "index": { + "format": "int8", + "type": "integer" + }, + "networkName": { + "type": "string" + }, + "privateIPs": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "networkName" + ], + "type": "object" + }, + "v1OpenStackProject": { + "description": "Project represents an OpenStack Identity Project", + "properties": { + "description": { + "description": "Description is the description of the project", + "type": "string" + }, + "domainId": { + "description": "DomainID is the domain ID the project belongs to", + "type": "string" + }, + "id": { + "description": "ID is the unique ID of the project", + "type": "string" + }, + "name": { + "description": "Name is the name of the project", + "type": "string" + }, + "parentProjectId": { + "description": "ParentID is the parent_id of the project", + "type": "string" + } + }, + "type": "object" + }, + "v1OpenStackProjects": { + "description": "Array of OpenStack projects", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1OpenStackProject" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1OpenStackRegion": { + "description": "OpenStack region entity", + "properties": { + "description": { + "description": "Description of OpenStack region", + "type": "string" + }, + "id": { + "description": "Id of OpenStack region", + "type": "string" + }, + "parentRegionId": { + "description": "Parent region id of OpenStack region", + "type": "string" + } + }, + "type": "object" + }, + "v1OpenStackRegions": { + "description": "List of OpenStack regions and domains", + "properties": { + "domains": { + "description": "List of OpenStack domains", + "items": { + "$ref": "#/definitions/v1OpenStackDomain" + }, + "type": "array", + "uniqueItems": true + }, + "regions": { + "description": "List of OpenStack regions", + "items": { + "$ref": "#/definitions/v1OpenStackRegion" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "regions", + "domains" + ], + "type": "object" + }, + "v1OpenStackResource": { + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1OpenStackSubnet": { + "description": "OpenStack subnet entity", + "properties": { + "description": { + "description": "Description for the network", + "type": "string" + }, + "id": { + "description": "UUID for the network", + "type": "string" + }, + "name": { + "description": "Human-readable name for the network. Might not be unique", + "type": "string" + } + }, + "type": "object" + }, + "v1OpenstackFlavorConfig": { + "properties": { + "diskGiB": { + "description": "DiskGiB is the size of a virtual machine's disk, in GiB.", + "format": "int32", + "type": "integer" + }, + "memoryMiB": { + "description": "MemoryMiB is the size of a virtual machine's memory, in MiB.", + "format": "int64", + "type": "integer" + }, + "name": { + "description": "Openstack flavor name", + "type": "string" + }, + "numCPUs": { + "description": "NumCPUs is the number of virtual processors in a virtual machine.", + "format": "int32", + "type": "integer" + } + }, + "required": [ + "name" + ] + }, + "v1OrgState": { + "description": "Org state", + "properties": { + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1Organization": { + "description": "Describes user's organization details", + "properties": { + "authType": { + "description": "Describes user's enabled authorization mode", + "type": "string" + }, + "name": { + "description": "Describes user's organization name", + "type": "string" + }, + "redirectUrl": { + "description": "Describes user's organization authentication url", + "type": "string" + }, + "ssoLogins": { + "$ref": "#/definitions/v1SsoLogins", + "description": "Describes a list of allowed social logins for the organization" + } + }, + "type": "object" + }, + "v1Organizations": { + "description": "Returns a list of user's organizations details and login methods", + "properties": { + "organizations": { + "description": "Describes a list of user's organization", + "items": { + "$ref": "#/definitions/v1Organization" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1OsPatchConfig": { + "properties": { + "onDemandPatchAfter": { + "$ref": "#/definitions/v1Time", + "description": "OnDemandPatchAfter is the desired time for one time on-demand patch" + }, + "patchOnBoot": { + "description": "PatchOnBoot indicates need to do patch when node first boot up, only once", + "type": "boolean", + "x-omitempty": false + }, + "rebootIfRequired": { + "description": "Reboot once the OS patch is applied", + "type": "boolean", + "x-omitempty": false + }, + "schedule": { + "description": "The schedule at which security patches will be applied to OS. Schedule should be in Cron format, see https://en.wikipedia.org/wiki/Cron for more help.", + "type": "string" + } + }, + "type": "object" + }, + "v1OsPatchEntity": { + "properties": { + "osPatchConfig": { + "$ref": "#/definitions/v1OsPatchConfig" + } + }, + "type": "object" + }, + "v1OsType": { + "default": "Linux", + "enum": [ + "Linux", + "Windows" + ], + "type": "string" + }, + "v1OverloadSpec": { + "description": "Overload spec", + "properties": { + "cloudAccountUid": { + "type": "string", + "x-omitempty": false + }, + "ipAddress": { + "type": "string" + }, + "ipPools": { + "items": { + "$ref": "#/definitions/v1IpPoolEntity" + }, + "type": "array" + }, + "isSelfHosted": { + "type": "boolean" + }, + "isSystem": { + "type": "boolean" + }, + "spectroClusterUid": { + "type": "string", + "x-omitempty": false + }, + "tenantUid": { + "type": "string" + } + }, + "type": "object" + }, + "v1OverloadStatus": { + "description": "Overload status", + "properties": { + "health": { + "$ref": "#/definitions/v1SpectroClusterHealthStatus" + }, + "isActive": { + "type": "boolean", + "x-omitempty": false + }, + "isReady": { + "type": "boolean", + "x-omitempty": false + }, + "kubectlCommands": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1OverloadVsphereOva": { + "description": "Overload ova details", + "properties": { + "location": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1Overlord": { + "description": "Overlord defintiion", + "properties": { + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1OverloadSpec" + }, + "status": { + "$ref": "#/definitions/v1OverloadStatus" + } + }, + "type": "object" + }, + "v1OverlordMaasAccountCreate": { + "properties": { + "account": { + "$ref": "#/definitions/v1MaasCloudAccount" + }, + "name": { + "description": "Name for the private gateway & cloud account", + "type": "string" + }, + "shareWithProjects": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1OverlordMaasAccountEntity": { + "properties": { + "account": { + "$ref": "#/definitions/v1MaasCloudAccount" + }, + "shareWithProjects": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1OverlordMaasCloudConfig": { + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1MaasClusterConfig" + }, + "clusterProfiles": { + "description": "Cluster profiles pack configuration for private gateway cluster", + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + }, + "clusterSettings": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "clusterSettings is the generic configuration related to a cluster like OS patch, Rbac, Namespace allocation" + }, + "machineConfig": { + "$ref": "#/definitions/v1MaasMachineConfigEntity" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + } + } + }, + "v1OverlordManifest": { + "description": "overlord manifest", + "properties": { + "manifest": { + "type": "string" + } + }, + "type": "object" + }, + "v1OverlordMigrateEntity": { + "properties": { + "sourceUid": { + "type": "string" + }, + "targetUid": { + "type": "string" + } + } + }, + "v1OverlordOpenStackAccountCreate": { + "properties": { + "account": { + "$ref": "#/definitions/v1OpenStackCloudAccount" + }, + "name": { + "description": "Name for the private gateway & cloud account", + "type": "string" + }, + "shareWithProjects": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1OverlordOpenStackAccountEntity": { + "properties": { + "account": { + "$ref": "#/definitions/v1OpenStackCloudAccount" + }, + "shareWithProjects": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1OverlordOpenStackCloudConfig": { + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1OpenStackClusterConfig" + }, + "clusterProfiles": { + "description": "Cluster profiles pack configuration for private gateway cluster", + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + }, + "clusterSettings": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "clusterSettings is the generic configuration related to a cluster like OS patch, Rbac, Namespace allocation" + }, + "machineConfig": { + "$ref": "#/definitions/v1OpenStackMachineConfigEntity" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + } + } + }, + "v1OverlordVsphereAccountCreate": { + "properties": { + "account": { + "$ref": "#/definitions/v1VsphereCloudAccount" + }, + "name": { + "description": "Name for the private gateway & cloud account", + "type": "string" + }, + "shareWithProjects": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1OverlordVsphereAccountEntity": { + "properties": { + "account": { + "$ref": "#/definitions/v1VsphereCloudAccount" + }, + "shareWithProjects": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1OverlordVsphereCloudConfig": { + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1VsphereOverlordClusterConfigEntity" + }, + "clusterProfiles": { + "description": "Cluster profiles pack configuration for private gateway cluster", + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + }, + "clusterSettings": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "clusterSettings is the generic configuration related to a cluster like OS patch, Rbac, Namespace allocation" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + } + } + }, + "v1Overlords": { + "description": "Array of Overlords", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1Overlord" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1PackConfig": { + "description": "Pack configuration", + "properties": { + "spec": { + "$ref": "#/definitions/v1PackConfigSpec" + } + }, + "type": "object" + }, + "v1PackConfigSpec": { + "properties": { + "associatedObject": { + "type": "string" + }, + "isValuesOverridden": { + "type": "boolean", + "x-omitempty": false + }, + "manifests": { + "items": { + "$ref": "#/definitions/v1PackManifestRef" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "packUid": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "tag": { + "type": "string" + }, + "type": { + "type": "string" + }, + "values": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1PackDependency": { + "description": "Pack template dependency", + "properties": { + "layer": { + "description": "Pack template dependency pack layer", + "type": "string" + }, + "name": { + "description": "Pack template dependency pack name", + "type": "string" + }, + "readOnly": { + "description": "If true then dependency pack values can't be overridden", + "type": "boolean" + } + }, + "type": "object" + }, + "v1PackDependencyMeta": { + "description": "Pack dependency metadata", + "properties": { + "displayName": { + "description": "Pack display name", + "type": "string" + }, + "logoUrl": { + "description": "Pack logo url", + "type": "string" + }, + "name": { + "description": "Pack name", + "type": "string" + }, + "registryUid": { + "description": "Pack registry uid", + "type": "string" + }, + "uid": { + "description": "Pack uid", + "type": "string" + }, + "version": { + "description": "Pack version", + "type": "string" + } + }, + "type": "object" + }, + "v1PackEntity": { + "description": "Pack object", + "properties": { + "layer": { + "description": "Pack layer", + "type": "string" + }, + "name": { + "description": "Pack name", + "type": "string" + }, + "tag": { + "description": "Pack tag", + "type": "string" + }, + "type": { + "$ref": "#/definitions/v1PackType" + }, + "uid": { + "description": "Pack uid", + "type": "string" + }, + "values": { + "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", + "type": "string" + } + }, + "required": [ + "uid", + "name" + ], + "type": "object" + }, + "v1PackFilterSpec": { + "description": "Packs filter spec", + "properties": { + "addOnSubType": { + "description": "Pack add-on sub type such as monitoring, db etc", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "addOnType": { + "description": "Pack add-on type such as logging, monitoring, security etc", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "displayName": { + "$ref": "#/definitions/v1FilterString" + }, + "environment": { + "description": "Pack supported cloud types", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "isFips": { + "description": "isFips compliant", + "type": "boolean" + }, + "layer": { + "description": "Pack layer", + "items": { + "$ref": "#/definitions/v1PackLayer" + }, + "type": "array", + "uniqueItems": true + }, + "name": { + "$ref": "#/definitions/v1FilterString" + }, + "registryUid": { + "description": "Pack registry uid", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "source": { + "description": "The source filter describes the creation origin/source of the pack. Ex. source can be \"spectrocloud\" or \"community\"", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "state": { + "description": "Pack state such as deprecated or disabled", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "description": "Pack type", + "items": { + "$ref": "#/definitions/v1PackType" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1PackImportEntity": { + "description": "Pack import request payload", + "properties": { + "layer": { + "description": "Pack layer [ \"os\", \"k8s\", \"cni\", \"csi\", \"addon\" ]", + "type": "string" + }, + "manifests": { + "description": "Pack manifests array", + "items": { + "$ref": "#/definitions/v1PackManifestImportEntity" + }, + "type": "array" + }, + "name": { + "description": "Pack name", + "type": "string" + }, + "registry": { + "$ref": "#/definitions/v1PackRegistryImportEntity" + }, + "tag": { + "description": "Pack version tag", + "type": "string" + }, + "type": { + "description": "Pack type [ \"spectro\", \"helm\", \"manifest\", \"oci\" ]", + "type": "string" + }, + "values": { + "description": "Pack values are the customizable configurations for the pack", + "type": "string" + }, + "version": { + "description": "Pack version", + "type": "string" + } + }, + "type": "object" + }, + "v1PackInputEntity": { + "description": "Pack request payload", + "properties": { + "pack": { + "$ref": "#/definitions/v1PackManifestEntity" + } + } + }, + "v1PackLayer": { + "enum": [ + "kernel", + "os", + "k8s", + "cni", + "csi", + "addon" + ], + "type": "string" + }, + "v1PackManifestEntity": { + "description": "Pack request payload", + "properties": { + "layer": { + "description": "Pack layer", + "type": "string" + }, + "manifests": { + "description": "Pack manifests are additional content as part of the profile", + "items": { + "$ref": "#/definitions/v1ManifestInputEntity" + }, + "type": "array" + }, + "name": { + "description": "Pack name", + "type": "string" + }, + "registryUid": { + "description": "Pack registry uid", + "type": "string" + }, + "tag": { + "description": "Pack tag", + "type": "string" + }, + "type": { + "$ref": "#/definitions/v1PackType" + }, + "uid": { + "description": "Pack uid", + "type": "string" + }, + "values": { + "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1PackManifestImportEntity": { + "description": "Pack manifest import objct", + "properties": { + "content": { + "description": "Pack manifest content in yaml", + "type": "string" + }, + "name": { + "description": "Pack manifest name", + "type": "string" + } + }, + "type": "object" + }, + "v1PackManifestRef": { + "properties": { + "digest": { + "type": "string" + }, + "isOverridden": { + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "parentUid": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1PackManifestUpdateEntity": { + "description": "Pack input entity with values to overwrite and manifests for the intial creation", + "properties": { + "layer": { + "description": "Pack layer", + "type": "string" + }, + "manifests": { + "description": "Pack manifests are additional content as part of the profile", + "items": { + "$ref": "#/definitions/v1ManifestRefUpdateEntity" + }, + "type": "array" + }, + "name": { + "description": "Pack name", + "type": "string" + }, + "registryUid": { + "description": "Pack registry uid", + "type": "string" + }, + "tag": { + "description": "Pack tag", + "type": "string" + }, + "type": { + "$ref": "#/definitions/v1PackType" + }, + "uid": { + "description": "Pack uid", + "type": "string" + }, + "values": { + "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1PackManifests": { + "properties": { + "items": { + "description": "Manifests array", + "items": { + "$ref": "#/definitions/v1Manifest" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1PackManifestsSpec": { + "description": "Pack manifests spec", + "properties": { + "addonType": { + "description": "Pack add-on type such as logging, monitoring, security etc", + "type": "string" + }, + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Pack annotations is used to allow pack to add more arbitrary configurations", + "type": "object" + }, + "cloudTypes": { + "description": "Pack supported cloud types", + "items": { + "type": "string" + }, + "type": "array" + }, + "digest": { + "description": "Pack digest", + "type": "string" + }, + "displayName": { + "description": "Pack display name", + "type": "string" + }, + "eol": { + "description": "Pack end of life, date format: yyyy-MM-dd", + "type": "string" + }, + "group": { + "description": "Pack group", + "type": "string" + }, + "layer": { + "$ref": "#/definitions/v1PackLayer" + }, + "logoUrl": { + "description": "Pack logo url", + "type": "string" + }, + "manifests": { + "description": "Pack manifests are additional content as part of the cluster profile", + "items": { + "$ref": "#/definitions/v1ManifestSummary" + }, + "type": "array" + }, + "name": { + "description": "Pack name", + "type": "string" + }, + "presets": { + "description": "Pack presets are the set of configurations applied on user selection of presets", + "items": { + "$ref": "#/definitions/v1PackPreset" + }, + "type": "array" + }, + "registryUid": { + "description": "Pack registry uid", + "type": "string" + }, + "schema": { + "description": "Pack schema contains constraints such as data type, format, hints for the pack values", + "items": { + "$ref": "#/definitions/v1PackSchema" + }, + "type": "array" + }, + "type": { + "$ref": "#/definitions/v1PackType" + }, + "values": { + "description": "Pack values", + "type": "string" + }, + "version": { + "description": "Pack version", + "type": "string" + } + }, + "type": "object" + }, + "v1PackMetadata": { + "description": "Pack metadata object", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1PackMetadataSpec" + } + }, + "type": "object" + }, + "v1PackMetadataList": { + "description": "List of packs metadata", + "properties": { + "items": { + "description": "Packs metadata array", + "items": { + "$ref": "#/definitions/v1PackMetadata" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1PackMetadataSpec": { + "description": "Pack metadata spec", + "properties": { + "addonSubType": { + "description": "Pack add-on sub type such as monitoring, db etc", + "type": "string" + }, + "addonType": { + "description": "Pack add-on type such as logging, monitoring, security etc", + "type": "string" + }, + "cloudTypes": { + "description": "Pack supported cloud types", + "items": { + "type": "string" + }, + "type": "array" + }, + "displayName": { + "description": "Pack display name", + "type": "string" + }, + "group": { + "description": "Pack group", + "type": "string" + }, + "layer": { + "$ref": "#/definitions/v1PackLayer" + }, + "name": { + "description": "Pack name", + "type": "string" + }, + "registries": { + "description": "Pack registries array", + "items": { + "$ref": "#/definitions/v1RegistryPackMetadata" + }, + "type": "array" + }, + "type": { + "$ref": "#/definitions/v1PackType" + } + }, + "type": "object" + }, + "v1PackParamsEntity": { + "description": "Pack params request payload", + "properties": { + "references": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1PackPreset": { + "description": "PackPreset defines the preset pack values", + "properties": { + "add": { + "type": "string", + "x-omitempty": false + }, + "displayName": { + "type": "string", + "x-omitempty": false + }, + "group": { + "type": "string", + "x-omitempty": false + }, + "name": { + "type": "string", + "x-omitempty": false + }, + "remove": { + "items": { + "type": "string" + }, + "type": "array", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1PackReadme": { + "properties": { + "readme": { + "description": "Readme describes the documentation of the specified pack", + "type": "string" + } + } + }, + "v1PackRef": { + "description": "PackRef server/name:tag to point to a pack PackRef is used when construct a ClusterProfile PackSpec is used for UI to render the parameters form ClusterProfile will not know inner details of a pack ClusterProfile only contain pack name:tag, and the param values user entered for it", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is used to allow packref to add more arbitrary information one example is to add git reference for values.yaml", + "type": "object" + }, + "digest": { + "description": "digest is used to specify the version should be installed by palette when pack upgrade available, change this digest to trigger upgrade", + "type": "string" + }, + "inValidReason": { + "type": "string" + }, + "isInvalid": { + "description": "pack is invalid when the associated tag is deleted from the registry", + "type": "boolean" + }, + "layer": { + "enum": [ + "kernel", + "os", + "k8s", + "cni", + "csi", + "addon" + ], + "type": "string" + }, + "logo": { + "description": "path to the pack logo", + "type": "string" + }, + "manifests": { + "items": { + "$ref": "#/definitions/v1ObjectReference" + }, + "type": "array" + }, + "name": { + "description": "pack name", + "type": "string" + }, + "packUid": { + "description": "PackUID is Hubble packUID, not palette Pack.UID It is used by Hubble only.", + "type": "string" + }, + "params": { + "additionalProperties": { + "type": "string" + }, + "description": "params passed as env variables to be consumed at installation time", + "type": "object" + }, + "presets": { + "items": { + "$ref": "#/definitions/v1PackPreset" + }, + "type": "array" + }, + "registryUid": { + "description": "pack registry uid", + "type": "string" + }, + "schema": { + "items": { + "$ref": "#/definitions/v1PackSchema" + }, + "type": "array" + }, + "server": { + "description": "pack registry server or helm repo", + "type": "string" + }, + "tag": { + "description": "pack tag", + "type": "string" + }, + "type": { + "description": "type of the pack", + "enum": [ + "spectro", + "helm", + "manifest" + ], + "type": "string" + }, + "values": { + "description": "values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", + "type": "string" + }, + "version": { + "description": "pack version", + "type": "string" + } + }, + "required": [ + "layer", + "name" + ], + "type": "object" + }, + "v1PackRefSummary": { + "description": "Pack ref summary", + "properties": { + "addonType": { + "type": "string" + }, + "annotations": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "displayName": { + "type": "string" + }, + "layer": { + "$ref": "#/definitions/v1PackLayer" + }, + "logoUrl": { + "type": "string" + }, + "name": { + "type": "string" + }, + "packUid": { + "type": "string" + }, + "tag": { + "type": "string" + }, + "type": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "v1PackRefSummaryResponse": { + "description": "Pack summary response", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1PackRefSummarySpec" + } + }, + "type": "object" + }, + "v1PackRefSummarySpec": { + "description": "Pack summary spec", + "properties": { + "macros": { + "$ref": "#/definitions/v1PackResolvedValues" + }, + "pack": { + "$ref": "#/definitions/v1PackSummarySpec" + }, + "registry": { + "$ref": "#/definitions/v1RegistryMetadata" + } + } + }, + "v1PackRegistries": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1PackRegistry" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1PackRegistriesSummary": { + "description": "Pack Registries Summary", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1PackRegistrySummary" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1PackRegistry": { + "description": "Pack registry information", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1PackRegistrySpec" + }, + "status": { + "$ref": "#/definitions/v1PackRegistryStatus" + } + }, + "type": "object" + }, + "v1PackRegistryImportEntity": { + "description": "Pack registry import entity", + "properties": { + "matchingRegistries": { + "items": { + "$ref": "#/definitions/v1PackRegistryMetadata" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1PackRegistryMetadata" + } + }, + "type": "object" + }, + "v1PackRegistryMetadata": { + "description": "Pack registry metadata", + "properties": { + "isPrivate": { + "description": "If true then pack registry is private and is not accessible for the pack sync", + "type": "boolean", + "x-omitempty": false + }, + "kind": { + "description": "Pack registry kind [ \"pack\", \"helm\", \"oci\" ]", + "type": "string" + }, + "name": { + "description": "Pack registry name", + "type": "string" + }, + "providerType": { + "description": "OCI registry provider type [ \"helm\", \"pack\", \"zarf\" ]", + "type": "string" + }, + "uid": { + "description": "Pack registry uid", + "type": "string" + } + }, + "type": "object" + }, + "v1PackRegistrySpec": { + "description": "Pack registry credentials spec", + "properties": { + "auth": { + "$ref": "#/definitions/v1RegistryAuth" + }, + "endpoint": { + "type": "string" + }, + "name": { + "type": "string" + }, + "private": { + "type": "boolean", + "x-omitempty": false + }, + "registryUid": { + "description": "Pack registry uid", + "type": "string" + }, + "scope": { + "type": "string" + } + }, + "required": [ + "endpoint", + "auth" + ], + "type": "object" + }, + "v1PackRegistrySpecSummary": { + "description": "Pack Registry spec summary", + "properties": { + "endpoint": { + "type": "string" + }, + "private": { + "type": "boolean", + "x-omitempty": false + }, + "scope": { + "type": "string" + } + }, + "type": "object" + }, + "v1PackRegistryStatus": { + "description": "Status of the pack registry", + "properties": { + "packSyncStatus": { + "$ref": "#/definitions/v1RegistrySyncStatus" + } + }, + "type": "object" + }, + "v1PackRegistryStatusSummary": { + "description": "Pack registry status summary", + "properties": { + "sync": { + "$ref": "#/definitions/v1RegistrySyncStatus" + } + }, + "type": "object" + }, + "v1PackRegistrySummary": { + "description": "Pack Registry summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1PackRegistrySpecSummary" + }, + "status": { + "$ref": "#/definitions/v1PackRegistryStatusSummary" + } + }, + "type": "object" + }, + "v1PackResolvedValues": { + "description": "Pack resolved values", + "properties": { + "resolved": { + "additionalProperties": { + "type": "string" + }, + "description": "Pack resolved values map", + "type": "object" + } + } + }, + "v1PackSchema": { + "description": "PackSchema defines the schema definition, hints for the pack values", + "properties": { + "format": { + "type": "string", + "x-omitempty": false + }, + "hints": { + "items": { + "type": "string" + }, + "type": "array", + "x-omitempty": false + }, + "listOptions": { + "items": { + "type": "string" + }, + "type": "array", + "x-omitempty": false + }, + "name": { + "type": "string", + "x-omitempty": false + }, + "readonly": { + "type": "boolean", + "x-omitempty": false + }, + "regex": { + "type": "string", + "x-omitempty": false + }, + "required": { + "type": "boolean", + "x-omitempty": false + }, + "type": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1PackSortFields": { + "description": "Packs sort by fields", + "enum": [ + "name", + "type", + "layer", + "addOnType", + "displayName" + ], + "type": "string", + "x-nullable": true + }, + "v1PackSortSpec": { + "description": "Packs sort spec", + "properties": { + "field": { + "$ref": "#/definitions/v1PackSortFields" + }, + "order": { + "$ref": "#/definitions/v1SortOrder" + } + } + }, + "v1PackSummaries": { + "description": "List of packs", + "properties": { + "items": { + "description": "Packs array", + "items": { + "$ref": "#/definitions/v1PackSummary" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1PackSummary": { + "description": "Pack summary object", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1PackSummarySpec" + }, + "status": { + "$ref": "#/definitions/v1PackSummaryStatus" + } + }, + "type": "object" + }, + "v1PackSummarySpec": { + "description": "Pack object", + "properties": { + "addonSubType": { + "description": "Pack add-on sub type such as monitoring, db etc", + "type": "string" + }, + "addonType": { + "description": "Pack add-on type such as logging, monitoring, security etc", + "type": "string" + }, + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Pack annotations is used to allow pack to add more arbitrary configurations", + "type": "object" + }, + "cloudTypes": { + "description": "Pack supported cloud types", + "items": { + "type": "string" + }, + "type": "array" + }, + "digest": { + "description": "Pack digest", + "type": "string" + }, + "displayName": { + "description": "Pack display name", + "type": "string" + }, + "eol": { + "description": "Pack end of life, date format: yyyy-MM-dd", + "type": "string" + }, + "group": { + "description": "Pack group", + "type": "string" + }, + "layer": { + "$ref": "#/definitions/v1PackLayer" + }, + "logoUrl": { + "description": "Pack logo url", + "type": "string" + }, + "manifests": { + "description": "Pack manifests are additional content as part of the cluster profile", + "items": { + "$ref": "#/definitions/v1ObjectReference" + }, + "type": "array" + }, + "name": { + "description": "Pack name", + "type": "string" + }, + "presets": { + "description": "Pack presets are the set of configurations applied on user selection of presets", + "items": { + "$ref": "#/definitions/v1PackPreset" + }, + "type": "array" + }, + "registryUid": { + "description": "Pack registry uid", + "type": "string" + }, + "schema": { + "description": "Pack schema contains constraints such as data type, format, hints for the pack values", + "items": { + "$ref": "#/definitions/v1PackSchema" + }, + "type": "array" + }, + "template": { + "$ref": "#/definitions/v1PackTemplate" + }, + "type": { + "$ref": "#/definitions/v1PackType" + }, + "values": { + "description": "Pack values", + "type": "string" + }, + "version": { + "description": "Pack version", + "type": "string" + } + }, + "type": "object" + }, + "v1PackSummaryStatus": { + "description": "Pack status", + "type": "object" + }, + "v1PackTagEntity": { + "description": "Pack object", + "properties": { + "addonSubType": { + "description": "Pack add-on sub type such as monitoring, db etc", + "type": "string" + }, + "addonType": { + "description": "Pack add-on type such as logging, monitoring, security etc", + "type": "string" + }, + "cloudTypes": { + "description": "Pack supported cloud types", + "items": { + "type": "string" + }, + "type": "array" + }, + "displayName": { + "description": "Pack display name", + "type": "string" + }, + "layer": { + "$ref": "#/definitions/v1PackLayer" + }, + "logoUrl": { + "description": "Pack logo url", + "type": "string" + }, + "name": { + "description": "Pack name", + "type": "string" + }, + "packValues": { + "description": "Pack values array", + "items": { + "$ref": "#/definitions/v1PackUidValues" + }, + "type": "array" + }, + "registryUid": { + "description": "Pack registry uid", + "type": "string" + }, + "tags": { + "description": "Pack version tags array", + "items": { + "$ref": "#/definitions/v1PackTags" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1PackTags": { + "properties": { + "group": { + "description": "Pack group", + "type": "string" + }, + "packUid": { + "description": "Pack uid", + "type": "string" + }, + "parentTags": { + "description": "Pack version parent tags", + "items": { + "type": "string" + }, + "type": "array" + }, + "tag": { + "description": "Pack version tag", + "type": "string" + }, + "version": { + "description": "Pack version", + "type": "string" + } + }, + "type": "object" + }, + "v1PackTemplate": { + "description": "Pack template configuration", + "properties": { + "manifest": { + "description": "Pack template manifest content", + "type": "string" + }, + "parameters": { + "$ref": "#/definitions/v1PackTemplateParameters" + }, + "values": { + "description": "Pack template values", + "type": "string" + } + } + }, + "v1PackTemplateParameter": { + "description": "Pack template parameter", + "properties": { + "description": { + "description": "Pack template parameter description", + "type": "string" + }, + "displayName": { + "description": "Pack template parameter display name", + "type": "string" + }, + "format": { + "description": "Pack template parameter format", + "type": "string" + }, + "hidden": { + "description": "Pack template parameter hidden flag, if true then the parameter is hidden in the UI", + "type": "boolean" + }, + "listOptions": { + "description": "Pack template parameter list options as string array", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Pack template parameter name", + "type": "string" + }, + "optional": { + "description": "Pack template parameter optional flag, if true then the parameter value is not mandatory", + "type": "boolean" + }, + "options": { + "additionalProperties": { + "$ref": "#/definitions/v1PackTemplateParameterOption", + "type": "object" + }, + "description": "Pack template parameter options array", + "type": "object" + }, + "readOnly": { + "description": "Pack template parameter readonly flag, if true then the parameter value can't be overridden", + "type": "boolean" + }, + "regex": { + "description": "Pack template parameter regex, if set then parameter value must match with specified regex", + "type": "string" + }, + "targetKey": { + "description": "Pack template parameter target key which is mapped to the key defined in the pack values", + "type": "string" + }, + "type": { + "description": "Pack template parameter data type", + "type": "string" + }, + "value": { + "description": "Pack template parameter value", + "type": "string" + } + } + }, + "v1PackTemplateParameterOption": { + "description": "Pack template parameter option", + "properties": { + "dependencies": { + "description": "Pack template parameter dependencies", + "items": { + "$ref": "#/definitions/v1PackDependency" + }, + "type": "array" + }, + "description": { + "description": "Pack template parameter description", + "type": "string" + }, + "label": { + "description": "Pack template parameter label", + "type": "string" + } + }, + "type": "object" + }, + "v1PackTemplateParameters": { + "description": "Pack template parameters", + "properties": { + "inputParameters": { + "description": "Pack template input parameters array", + "items": { + "$ref": "#/definitions/v1PackTemplateParameter" + }, + "type": "array" + }, + "outputParameters": { + "description": "Pack template output parameters array", + "items": { + "$ref": "#/definitions/v1PackTemplateParameter" + }, + "type": "array" + } + } + }, + "v1PackType": { + "default": "spectro", + "enum": [ + "spectro", + "helm", + "manifest", + "oci" + ], + "type": "string" + }, + "v1PackUidValues": { + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Pack annotations is used to allow pack to add more arbitrary configurations", + "type": "object" + }, + "dependencies": { + "description": "Pack dependencies array", + "items": { + "$ref": "#/definitions/v1PackDependencyMeta" + }, + "type": "array" + }, + "packUid": { + "description": "Pack uid", + "type": "string" + }, + "presets": { + "description": "Pack presets are the set of configurations applied on user selection of presets", + "items": { + "$ref": "#/definitions/v1PackPreset" + }, + "type": "array" + }, + "readme": { + "description": "Readme describes the documentation of the specified pack", + "type": "string" + }, + "schema": { + "description": "Pack schema contains constraints such as data type, format, hints for the pack values", + "items": { + "$ref": "#/definitions/v1PackSchema" + }, + "type": "array" + }, + "template": { + "$ref": "#/definitions/v1PackTemplate" + }, + "values": { + "description": "Pack values represents the values.yaml used as input parameters", + "type": "string" + } + }, + "type": "object" + }, + "v1PackUpdateEntity": { + "description": "Pack update request payload", + "properties": { + "pack": { + "$ref": "#/definitions/v1PackEntity" + } + } + }, + "v1PackValuesEntity": { + "description": "Pack values entity to refer the existing pack for the values override", + "properties": { + "manifests": { + "description": "Pack manifests are additional content as part of the profile", + "items": { + "$ref": "#/definitions/v1ManifestRefUpdateEntity" + }, + "type": "array" + }, + "name": { + "description": "Pack name", + "type": "string" + }, + "tag": { + "description": "Pack version tag", + "type": "string" + }, + "type": { + "$ref": "#/definitions/v1PackType" + }, + "values": { + "description": "Pack values represents the values.yaml used as input parameters either Params OR Values should be used, not both If both applied at the same time, will only use Values", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1PacksFilterSpec": { + "description": "Packs filter spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1PackFilterSpec" + }, + "sort": { + "items": { + "$ref": "#/definitions/v1PackSortSpec" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1PairingCode": { + "description": "Pairing code response", + "properties": { + "pairingCode": { + "type": "string" + } + }, + "type": "object" + }, + "v1Partition": { + "properties": { + "fileSystemType": { + "type": "string" + }, + "freeSpace": { + "format": "int32", + "type": "integer" + }, + "mountPoint": { + "type": "string" + }, + "totalSpace": { + "format": "int32", + "type": "integer" + }, + "usedSpace": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1PasswordsBlockListEntity": { + "description": "List of block listed passwords", + "properties": { + "passwords": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1PaymentIntent": { + "description": "Payment setup object", + "properties": { + "clientSecret": { + "description": "Payment client secret", + "type": "string" + }, + "paymentIntentId": { + "description": "Payment intent id", + "type": "string" + }, + "status": { + "description": "Status of payment intent", + "type": "string" + } + } + }, + "v1PaymentMethod": { + "description": "Payment method object", + "properties": { + "card": { + "$ref": "#/definitions/v1Card" + }, + "customerId": { + "description": "Customer uid", + "type": "string" + }, + "firstName": { + "description": "First name of the user", + "type": "string" + }, + "lastName": { + "description": "Last name of the user", + "type": "string" + }, + "paymentMethodId": { + "description": "Payment method uid", + "type": "string" + } + } + }, + "v1PaymentMethods": { + "description": "Payment Method list", + "properties": { + "defaultPaymentMethod": { + "description": "Default payment method", + "type": "string" + }, + "paymentMethods": { + "description": "List of payment method", + "items": { + "$ref": "#/definitions/v1PaymentMethod" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1PaymentPlan": { + "description": "Stripe price detail object", + "properties": { + "billingScheme": { + "description": "Billing scheme", + "type": "string" + }, + "currency": { + "description": "Unit of currency", + "type": "string" + }, + "id": { + "description": "Stripe payment plan id", + "type": "string" + }, + "name": { + "description": "Name of the stripe plan", + "type": "string" + }, + "productId": { + "description": "Product identifier", + "type": "string" + }, + "type": { + "description": "Type of payment plan", + "type": "string" + }, + "unitAmount": { + "description": "Unit amount for the product", + "format": "int64", + "type": "number" + } + } + }, + "v1PaymentPlans": { + "description": "Payment plan object model", + "properties": { + "stripePlanDetails": { + "description": "List of Stripe plan details", + "items": { + "$ref": "#/definitions/v1PaymentPlan" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "stripePlanDetails" + ], + "type": "object" + }, + "v1PaymentSecrets": { + "description": "payment secrets", + "properties": { + "publishableKey": { + "type": "string" + }, + "secretKey": { + "type": "string" + } + } + }, + "v1PaymentSubscription": { + "description": "Payment subscription object", + "properties": { + "customerId": { + "description": "Customer uid", + "type": "string" + }, + "paymentIntent": { + "$ref": "#/definitions/v1PaymentIntent", + "description": "Payment intent" + }, + "paymentMethodIds": { + "description": "List of payment method uids", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "planType": { + "description": "Plan type", + "type": "string" + }, + "priceId": { + "description": "Price uid", + "type": "string" + }, + "subscriptionId": { + "description": "Subscription uid", + "type": "string" + }, + "subscriptionState": { + "description": "Plan subscription state", + "type": "string" + } + } + }, + "v1PcgSelfHostedParams": { + "properties": { + "cloudType": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "v1PcgServiceKubectlCommands": { + "description": "Array of kubectl commands", + "properties": { + "kubectlCommands": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "overlordUid": { + "type": "string" + } + }, + "required": [ + "kubectlCommands" + ], + "type": "object" + }, + "v1PcgsSummary": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1Overlord" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1Permission": { + "description": "Permission information", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "scope": { + "$ref": "#/definitions/v1Scope" + } + }, + "type": "object" + }, + "v1Permissions": { + "description": "Array of permissions", + "items": { + "$ref": "#/definitions/v1Permission" + }, + "type": "array" + }, + "v1Plan": { + "description": "Plan", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1PlanSpec" + }, + "status": { + "$ref": "#/definitions/v1PlanStatus" + } + } + }, + "v1PlanAddFreeCreditUpdate": { + "description": "Plan add free credit update entity", + "properties": { + "credit": { + "$ref": "#/definitions/v1PlanCreditEntity" + } + } + }, + "v1PlanAddSlaCreditUpdate": { + "description": "Plan add sla credit update entity", + "properties": { + "credit": { + "$ref": "#/definitions/v1PlanCreditEntity" + } + } + }, + "v1PlanChangeUpdate": { + "description": "Plan change update entity", + "properties": { + "expiry": { + "$ref": "#/definitions/v1Time", + "description": "plan expiry time" + }, + "isPaymentGateway": { + "type": "boolean" + }, + "planLimit": { + "$ref": "#/definitions/v1PlanLimit" + }, + "start": { + "$ref": "#/definitions/v1Time", + "description": "plan start time" + }, + "tierPrice": { + "$ref": "#/definitions/v1TierPrice" + }, + "type": { + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ], + "type": "string" + } + }, + "required": [ + "type", + "start", + "expiry" + ] + }, + "v1PlanCost": { + "description": "Plan Cost", + "properties": { + "discount": { + "format": "float", + "type": "number", + "x-omitempty": false + }, + "price": { + "format": "float", + "type": "number", + "x-omitempty": false + } + } + }, + "v1PlanCpuCoreHoursUsages": { + "properties": { + "hourlyUsages": { + "items": { + "$ref": "#/definitions/v1ResourceUsage" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1PlanCredit": { + "description": "Plan Credit", + "properties": { + "cpuCoreHours": { + "format": "int64", + "type": "number", + "x-omitempty": false + }, + "creditUid": { + "type": "string" + }, + "expiry": { + "$ref": "#/definitions/v1Time", + "description": "credit expiry time" + }, + "name": { + "type": "string" + }, + "start": { + "$ref": "#/definitions/v1Time", + "description": "credit start time" + }, + "type": { + "enum": [ + "Pure", + "Alloy" + ], + "type": "string" + } + }, + "required": [ + "type" + ] + }, + "v1PlanCreditEntity": { + "description": "Plan Credit entity for create/update request", + "properties": { + "cpuCoreHours": { + "format": "int64", + "type": "number", + "x-omitempty": false + }, + "expiry": { + "$ref": "#/definitions/v1Time" + }, + "name": { + "type": "string" + }, + "start": { + "$ref": "#/definitions/v1Time" + }, + "type": { + "enum": [ + "Pure", + "Alloy" + ], + "type": "string" + } + }, + "required": [ + "type" + ] + }, + "v1PlanCreditUpdate": { + "description": "Plan credit update entity", + "properties": { + "credit": { + "$ref": "#/definitions/v1PlanCreditEntity" + } + } + }, + "v1PlanExpiry": { + "description": "Plan expiry", + "properties": { + "expiry": { + "$ref": "#/definitions/v1Time", + "description": "plan expiry time" + } + }, + "required": [ + "expiry" + ] + }, + "v1PlanLimit": { + "description": "Monthly Plan Limit", + "properties": { + "alloy": { + "$ref": "#/definitions/v1PlanLimitSpec" + }, + "isOnDemand": { + "description": "is onDemand plan and has no limit", + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "$ref": "#/definitions/v1PlanLimitSpec" + } + } + }, + "v1PlanLimitSpec": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "format": "int64", + "type": "integer", + "x-omitempty": false + }, + "overageLimitPercentage": { + "default": 25, + "description": "overage limit in percentage", + "format": "int8", + "type": "integer", + "x-omitempty": false + }, + "warnLimitPercentage": { + "default": 90, + "description": "warning limit in percentage", + "format": "int8", + "type": "integer", + "x-omitempty": false + } + } + }, + "v1PlanLimitUpdate": { + "description": "Plan limit change update entity", + "properties": { + "planLimit": { + "$ref": "#/definitions/v1PlanLimit" + } + }, + "required": [ + "planLimit" + ] + }, + "v1PlanMonthlyUsage": { + "description": "Plan monthly usage entity", + "properties": { + "dailyUsages": { + "items": { + "$ref": "#/definitions/v1ResourceUsage" + }, + "type": "array", + "uniqueItems": true + }, + "month": { + "$ref": "#/definitions/v1Time", + "description": "usage month" + }, + "planLimit": { + "$ref": "#/definitions/v1PlanLimit" + }, + "planType": { + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ], + "type": "string" + }, + "planUid": { + "type": "string" + }, + "totalMonthlyUsage": { + "$ref": "#/definitions/v1TotalResourceUsage" + } + } + }, + "v1PlanMonthlyUsages": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1PlanMonthlyUsage" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1PlanRenewal": { + "description": "Plan Renewal", + "properties": { + "expiry": { + "$ref": "#/definitions/v1Time", + "description": "credit expiry time" + }, + "planLimit": { + "$ref": "#/definitions/v1PlanLimit" + }, + "start": { + "$ref": "#/definitions/v1Time", + "description": "credit start time" + }, + "type": { + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ], + "type": "string" + } + }, + "required": [ + "type", + "start", + "expiry" + ] + }, + "v1PlanRenewalUpdate": { + "description": "Plan add renawal update entity", + "properties": { + "renewal": { + "$ref": "#/definitions/v1PlanRenewal" + } + } + }, + "v1PlanSpec": { + "description": "Plan specifications", + "properties": { + "cost": { + "$ref": "#/definitions/v1PlanCost" + }, + "developerCredits": { + "$ref": "#/definitions/v1DeveloperCredit" + }, + "expiry": { + "$ref": "#/definitions/v1Time", + "description": "plan expiry time" + }, + "freeCredits": { + "items": { + "$ref": "#/definitions/v1PlanCredit" + }, + "type": "array" + }, + "planLimit": { + "$ref": "#/definitions/v1PlanLimit" + }, + "renewal": { + "$ref": "#/definitions/v1PlanRenewal" + }, + "slaCredits": { + "items": { + "$ref": "#/definitions/v1PlanCredit" + }, + "type": "array" + }, + "start": { + "$ref": "#/definitions/v1Time", + "description": "plan start time" + }, + "tierPricing": { + "$ref": "#/definitions/v1TierPrice" + }, + "type": { + "enum": [ + "Trial", + "MonthlyOnDemand", + "AnnualSubscription" + ], + "type": "string" + } + }, + "required": [ + "type", + "start", + "expiry" + ] + }, + "v1PlanStatus": { + "properties": { + "changeLogs": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1Plans": { + "description": "Array of Plans", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1Plan" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1PlansUsageComputeSpec": { + "description": "Plans usage compute spec", + "properties": { + "startTime": { + "$ref": "#/definitions/v1Time" + }, + "tenantUids": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1PodAntiAffinity": { + "description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.", + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "description": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", + "items": { + "$ref": "#/definitions/v1VmWeightedPodAffinityTerm" + }, + "type": "array" + }, + "requiredDuringSchedulingIgnoredDuringExecution": { + "description": "If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", + "items": { + "$ref": "#/definitions/v1VmPodAffinityTerm" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1Pool": { + "description": "Pool defines IP ranges or with CIDR for available IPs Gateway, Prefix and Nameserver if provided, will overwrite values in IPPool", + "properties": { + "end": { + "description": "End is the last IP address that can be rendered. It is used as a validation that the rendered IP is in bound.", + "type": "string" + }, + "gateway": { + "description": "Gateway is the gateway ip address", + "type": "string" + }, + "nameserver": { + "$ref": "#/definitions/v1Nameserver", + "description": "Nameserver provide information for dns resolvation" + }, + "prefix": { + "description": "Prefix is the mask of the network as integer (max 128)", + "format": "int32", + "type": "integer" + }, + "start": { + "description": "Start is the first ip address that can be rendered", + "type": "string" + }, + "subnet": { + "description": "Subnet is used to validate that the rendered IP is in bounds. eg: 192.168.0.0/24 If Start value is not given, start value is derived from the subnet ip incremented by 1 (start value is `192.168.0.1` for subnet `192.168.0.0/24`)", + "type": "string" + } + }, + "type": "object" + }, + "v1PriceRange": { + "description": "tier price range", + "properties": { + "discount": { + "format": "int64", + "type": "number" + }, + "startFrom": { + "format": "float64", + "type": "number" + }, + "unitAmount": { + "format": "float64", + "type": "number" + }, + "upTo": { + "format": "float64", + "type": "number" + }, + "upToInfinity": { + "type": "boolean" + } + } + }, + "v1PrivateCloudRateConfig": { + "description": "Private cloud rate config", + "properties": { + "cpuUnitPricePerHour": { + "format": "float64", + "type": "number" + }, + "gpuUnitPricePerHour": { + "format": "float64", + "type": "number" + }, + "memoryUnitPriceGiBPerHour": { + "format": "float64", + "type": "number" + }, + "storageUnitPriceGiBPerHour": { + "format": "float64", + "type": "number" + } + } + }, + "v1ProductUsage": { + "description": "Product usage", + "properties": { + "alloyUsage": { + "$ref": "#/definitions/v1SystemProductUsage" + }, + "pureUsage": { + "$ref": "#/definitions/v1SystemProductUsage" + } + } + }, + "v1ProfileMetaEntity": { + "description": "Cluster profile metadata request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "$ref": "#/definitions/v1ClusterProfileSpecEntity" + } + }, + "required": [ + "metadata" + ], + "type": "object" + }, + "v1ProfileResolvedValues": { + "description": "Cluster profile resolved pack values", + "properties": { + "resolved": { + "additionalProperties": { + "type": "string" + }, + "description": "Cluster profile pack resolved values", + "type": "object" + }, + "uid": { + "description": "Cluster profile uid", + "type": "string" + } + } + }, + "v1ProfileStatus": { + "properties": { + "hasUserMacros": { + "description": "If it is true then profile pack values has a reference to user defined macros", + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1ProfileTemplateSummary": { + "description": "Edge host clusterprofile template summary", + "properties": { + "cloudType": { + "type": "string" + }, + "name": { + "type": "string" + }, + "packs": { + "items": { + "$ref": "#/definitions/v1PackRefSummary" + }, + "type": "array" + }, + "type": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1ProfileType": { + "default": "cluster", + "enum": [ + "cluster", + "infra", + "add-on", + "system" + ], + "type": "string" + }, + "v1Project": { + "description": "Project information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ProjectSpec" + }, + "status": { + "$ref": "#/definitions/v1ProjectStatus" + } + }, + "type": "object" + }, + "v1ProjectActiveAppDeployment": { + "description": "Active app deployment", + "properties": { + "appRef": { + "$ref": "#/definitions/v1ObjectEntity" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1ProjectActiveAppDeployments": { + "description": "Active app deployment", + "properties": { + "apps": { + "items": { + "$ref": "#/definitions/v1ProjectActiveAppDeployment" + }, + "type": "array" + }, + "count": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1ProjectActiveCluster": { + "description": "Active clusters", + "properties": { + "clusterRef": { + "$ref": "#/definitions/v1ObjectEntity" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1ProjectActiveClusters": { + "description": "Active clusters", + "properties": { + "clusters": { + "items": { + "$ref": "#/definitions/v1ProjectActiveCluster" + }, + "type": "array" + }, + "count": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1ProjectActiveResources": { + "description": "Active project resources", + "properties": { + "appDeployments": { + "$ref": "#/definitions/v1ProjectActiveAppDeployments" + }, + "clusters": { + "$ref": "#/definitions/v1ProjectActiveClusters" + }, + "virtualClusters": { + "$ref": "#/definitions/v1ProjectActiveClusters" + } + }, + "type": "object" + }, + "v1ProjectAlertComponent": { + "description": "Project alert component", + "properties": { + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "supportedChannels": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ProjectAlertComponents": { + "description": "Supported project alerts component", + "properties": { + "components": { + "items": { + "$ref": "#/definitions/v1ProjectAlertComponent" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ProjectCleanUpStatus": { + "description": "Project cleanup status", + "properties": { + "cleanedResources": { + "items": { + "type": "string" + }, + "type": "array" + }, + "msg": { + "type": "string" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1ProjectCleanup": { + "description": "Project delete request payload", + "properties": { + "deletingClusterDurationThresholdInMin": { + "format": "int32", + "type": "integer" + }, + "provisioningClusterDurationThresholdInMin": { + "format": "int32", + "type": "integer" + } + } + }, + "v1ProjectClusterSettings": { + "properties": { + "nodesAutoRemediationSetting": { + "$ref": "#/definitions/v1NodesAutoRemediationSettings" + }, + "tenantClusterSettings": { + "$ref": "#/definitions/v1TenantClusterSettings" + } + } + }, + "v1ProjectEntity": { + "description": "Project information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ProjectEntitySpec" + } + }, + "type": "object" + }, + "v1ProjectEntitySpec": { + "description": "Project specifications", + "properties": { + "logoUid": { + "type": "string" + }, + "teams": { + "items": { + "$ref": "#/definitions/v1TeamRoleMap" + }, + "type": "array", + "uniqueItems": true + }, + "users": { + "items": { + "$ref": "#/definitions/v1UserRoleMap" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1ProjectFilterSortFields": { + "enum": [ + "name", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "type": "string", + "x-nullable": true + }, + "v1ProjectFilterSortSpec": { + "properties": { + "field": { + "$ref": "#/definitions/v1ProjectFilterSortFields" + }, + "order": { + "$ref": "#/definitions/v1SortOrder" + } + } + }, + "v1ProjectFilterSpec": { + "description": "Project filter spec", + "properties": { + "name": { + "$ref": "#/definitions/v1FilterString" + } + } + }, + "v1ProjectMeta": { + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1ProjectMetadata": { + "description": "Project metadata", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectEntity" + } + } + }, + "v1ProjectPatch": { + "items": { + "$ref": "#/definitions/v1HttpPatch" + }, + "type": "array" + }, + "v1ProjectResourceUsage": { + "description": "project resource usage", + "properties": { + "alloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "project": { + "$ref": "#/definitions/v1ProjectMeta" + }, + "pureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } + } + }, + "v1ProjectRolesEntity": { + "properties": { + "projects": { + "items": { + "$ref": "#/definitions/v1UidRoleSummary" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ProjectRolesPatch": { + "properties": { + "projects": { + "items": { + "properties": { + "projectUid": { + "type": "string" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ProjectSpec": { + "description": "Project specifications", + "properties": { + "alerts": { + "items": { + "$ref": "#/definitions/v1Alert" + }, + "type": "array", + "uniqueItems": true + }, + "logoUrl": { + "type": "string" + }, + "teams": { + "items": { + "$ref": "#/definitions/v1TeamRoleMap" + }, + "type": "array", + "uniqueItems": true + }, + "users": { + "items": { + "$ref": "#/definitions/v1UserRoleMap" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1ProjectSpecSummary": { + "properties": { + "logoUrl": { + "type": "string" + }, + "teams": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + }, + "users": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ProjectStatus": { + "description": "Project status", + "properties": { + "cleanUpStatus": { + "$ref": "#/definitions/v1ProjectCleanUpStatus" + }, + "isDisabled": { + "type": "boolean" + } + } + }, + "v1ProjectStatusSummary": { + "description": "Project status summary", + "properties": { + "clustersHealth": { + "$ref": "#/definitions/v1SpectroClustersHealth" + }, + "status": { + "$ref": "#/definitions/v1ProjectStatus" + }, + "usage": { + "$ref": "#/definitions/v1ProjectUsageSummary" + } + }, + "type": "object" + }, + "v1ProjectSummary": { + "description": "Project summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "specSummary": { + "$ref": "#/definitions/v1ProjectSpecSummary", + "description": "Project spec summary" + }, + "status": { + "$ref": "#/definitions/v1ProjectStatusSummary", + "description": "Project status summary" + } + }, + "type": "object" + }, + "v1ProjectTeamsEntity": { + "properties": { + "teams": { + "items": { + "$ref": "#/definitions/v1TeamRoleMap" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1ProjectUsage": { + "description": "Project usage object", + "properties": { + "alloy": { + "$ref": "#/definitions/v1ProjectUsageData" + }, + "pure": { + "$ref": "#/definitions/v1ProjectUsageData" + } + } + }, + "v1ProjectUsageData": { + "description": "Project usage data object", + "properties": { + "amount": { + "description": "Billing amount for the project", + "format": "float64", + "type": "number" + }, + "tierPrice": { + "description": "Tier price based on the usage", + "format": "float64", + "type": "number" + }, + "usedCredits": { + "description": "Project used credits", + "format": "float64", + "type": "number" + } + } + }, + "v1ProjectUsageSummary": { + "description": "Project usage summary", + "properties": { + "alloyCpuCores": { + "type": "number", + "x-omitempty": false + }, + "clusters": { + "items": { + "$ref": "#/definitions/v1ClusterUsageSummary" + }, + "type": "array" + }, + "pureCpuCores": { + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1ProjectUsersEntity": { + "properties": { + "users": { + "items": { + "$ref": "#/definitions/v1UserRoleMap" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1Projects": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1Project" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1ProjectsFilterSpec": { + "description": "Project filter summary spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1ProjectFilterSpec" + }, + "sort": { + "items": { + "$ref": "#/definitions/v1ProjectFilterSortSpec" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1ProjectsMetadata": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1ProjectMetadata" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1ProjectsSummary": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1ProjectSummary" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1ProjectsWorkspaces": { + "description": "List projects and its workspaces", + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + }, + "workspaces": { + "items": { + "$ref": "#/definitions/v1WorkspacesRoles" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1PublicCloudRateConfig": { + "description": "Public cloud rate config", + "properties": { + "computeOptimized": { + "$ref": "#/definitions/v1CloudInstanceRateConfig" + }, + "memoryOptimized": { + "$ref": "#/definitions/v1CloudInstanceRateConfig" + } + } + }, + "v1RateConfig": { + "description": "Rate config", + "properties": { + "aws": { + "$ref": "#/definitions/v1PublicCloudRateConfig" + }, + "azure": { + "$ref": "#/definitions/v1PublicCloudRateConfig" + }, + "coxedge": { + "$ref": "#/definitions/v1PublicCloudRateConfig" + }, + "custom": { + "items": { + "$ref": "#/definitions/v1CustomCloudRateConfig" + }, + "type": "array", + "uniqueItems": true + }, + "edge": { + "$ref": "#/definitions/v1PrivateCloudRateConfig" + }, + "edgeNative": { + "$ref": "#/definitions/v1PrivateCloudRateConfig" + }, + "gcp": { + "$ref": "#/definitions/v1PublicCloudRateConfig" + }, + "generic": { + "$ref": "#/definitions/v1PrivateCloudRateConfig" + }, + "libvirt": { + "$ref": "#/definitions/v1PrivateCloudRateConfig" + }, + "maas": { + "$ref": "#/definitions/v1PrivateCloudRateConfig" + }, + "openstack": { + "$ref": "#/definitions/v1PrivateCloudRateConfig" + }, + "vsphere": { + "$ref": "#/definitions/v1PrivateCloudRateConfig" + } + } + }, + "v1RegistriesMetadata": { + "description": "Pack Registries Metadata", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1RegistryMetadata" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1RegistryAuth": { + "description": "Auth credentials of the registry", + "properties": { + "password": { + "format": "password", + "type": "string" + }, + "tls": { + "$ref": "#/definitions/v1TlsConfiguration" + }, + "token": { + "format": "password", + "type": "string" + }, + "type": { + "enum": [ + "noAuth", + "basic", + "token" + ], + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "v1RegistryConf": { + "description": "Registry configuration", + "properties": { + "auth": { + "$ref": "#/definitions/v1RegistryAuth" + }, + "endpoint": { + "type": "string" + } + }, + "type": "object" + }, + "v1RegistryConfigEntity": { + "description": "Registry configuration entity", + "properties": { + "config": { + "$ref": "#/definitions/v1RegistryConfiguration" + } + }, + "type": "object" + }, + "v1RegistryConfiguration": { + "description": "Registry configuration", + "properties": { + "auth": { + "$ref": "#/definitions/v1RegistryAuth" + }, + "endpoint": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1RegistryMetadata": { + "description": "Registry meta", + "properties": { + "isDefault": { + "type": "boolean", + "x-omitempty": false + }, + "isPrivate": { + "type": "boolean", + "x-omitempty": false + }, + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1RegistryPackMetadata": { + "description": "Registry metadata information", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Pack annotations is used to allow pack to add more arbitrary configurations", + "type": "object" + }, + "latestPackUid": { + "description": "Latest pack uid", + "type": "string" + }, + "latestVersion": { + "description": "Pack latest version", + "type": "string" + }, + "logoUrl": { + "description": "Pack logo url", + "type": "string" + }, + "name": { + "description": "Pack registry name", + "type": "string" + }, + "scope": { + "description": "Pack registry scope", + "type": "string" + }, + "uid": { + "description": "Pack registry uid", + "type": "string" + } + } + }, + "v1RegistrySyncStatus": { + "description": "Status of the registry sync", + "properties": { + "lastRunTime": { + "$ref": "#/definitions/v1Time" + }, + "lastSyncedTime": { + "$ref": "#/definitions/v1Time" + }, + "message": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "type": "object" + }, + "v1RelatedObject": { + "description": "Object for which the resource is related", + "properties": { + "kind": { + "enum": [ + "spectrocluster", + "machine", + "cloudconfig", + "clusterprofile", + "pack", + "appprofile", + "appdeployment", + "edgehost" + ], + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1ReleaseDescription": { + "description": "spectro application management release description", + "properties": { + "details": { + "type": "string" + }, + "title": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "v1ReleaseVersion": { + "description": "spectro application management release version information", + "properties": { + "date": { + "$ref": "#/definitions/v1Time" + }, + "description": { + "type": "string" + }, + "releaseNotes": { + "items": { + "$ref": "#/definitions/v1ReleaseDescription" + }, + "type": "array" + }, + "version": { + "type": "string" + } + } + }, + "v1ResourceCloudCostSummary": { + "description": "Resource cloud cost summary information", + "properties": { + "data": { + "items": { + "$ref": "#/definitions/v1CloudCostDataPoint" + }, + "type": "array", + "uniqueItems": true + }, + "entity": { + "$ref": "#/definitions/v1ResourceReference" + }, + "total": { + "$ref": "#/definitions/v1ResourceTotalCloudCost" + } + }, + "type": "object" + }, + "v1ResourceConsumption": { + "description": "Resource consumption information", + "properties": { + "associatedResources": { + "items": { + "$ref": "#/definitions/v1ResourceReference" + }, + "type": "array" + }, + "data": { + "items": { + "$ref": "#/definitions/v1ResourceConsumptionDataPoint" + }, + "type": "array", + "uniqueItems": true + }, + "entity": { + "$ref": "#/definitions/v1ResourceReference" + }, + "total": { + "$ref": "#/definitions/v1ResourceTotalConsumptionData" + } + }, + "type": "object" + }, + "v1ResourceConsumptionData": { + "description": "Resource cosumption data", + "properties": { + "cpu": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "memory": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1ResourceConsumptionDataPoint": { + "description": "Resource cosumption data point", + "properties": { + "allotted": { + "$ref": "#/definitions/v1ResourceConsumptionData" + }, + "timestamp": { + "format": "int64", + "type": "number" + }, + "usage": { + "$ref": "#/definitions/v1ResourceConsumptionData" + } + }, + "type": "object" + }, + "v1ResourceConsumptionFilter": { + "description": "Resource consumption filter", + "properties": { + "clouds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "clusters": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "endTime": { + "$ref": "#/definitions/v1Time" + }, + "includeMasterMachines": { + "type": "boolean" + }, + "namespaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "projects": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "startTime": { + "$ref": "#/definitions/v1Time" + }, + "workspaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1ResourceConsumptionOptions": { + "description": "Resource consumption options", + "properties": { + "enableSummaryView": { + "default": true, + "type": "boolean" + }, + "groupBy": { + "default": "namespace", + "enum": [ + "tenant", + "project", + "workspace", + "cluster", + "namespace", + "cloud" + ], + "type": "string" + }, + "period": { + "default": 60, + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1ResourceConsumptionSpec": { + "description": "Resource consumption spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1ResourceConsumptionFilter" + }, + "options": { + "$ref": "#/definitions/v1ResourceConsumptionOptions" + } + }, + "type": "object" + }, + "v1ResourceCost": { + "description": "Resource Cost information", + "properties": { + "cloud": { + "$ref": "#/definitions/v1CloudCost" + }, + "total": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1ResourceCostDataPoint": { + "description": "Resource cost data point", + "properties": { + "cpu": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "memory": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "storage": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "timestamp": { + "format": "int64", + "type": "number" + }, + "total": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1ResourceCostSummary": { + "description": "Resource cost summary information", + "properties": { + "associatedResources": { + "items": { + "$ref": "#/definitions/v1ResourceReference" + }, + "type": "array" + }, + "data": { + "items": { + "$ref": "#/definitions/v1ResourceCostDataPoint" + }, + "type": "array", + "uniqueItems": true + }, + "entity": { + "$ref": "#/definitions/v1ResourceReference" + }, + "total": { + "$ref": "#/definitions/v1ResourceTotalCost" + } + }, + "type": "object" + }, + "v1ResourceCostSummaryFilter": { + "description": "Resource cost summary filter", + "properties": { + "clouds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "clusters": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "endTime": { + "$ref": "#/definitions/v1Time" + }, + "includeMasterMachines": { + "type": "boolean" + }, + "namespaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "projects": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "startTime": { + "$ref": "#/definitions/v1Time" + }, + "workspaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1ResourceCostSummaryOptions": { + "description": "Resource cost summary options", + "properties": { + "enableSummaryView": { + "default": true, + "type": "boolean" + }, + "groupBy": { + "default": "cluster", + "enum": [ + "tenant", + "project", + "workspace", + "cluster", + "namespace", + "deployment", + "cloud" + ], + "type": "string" + }, + "period": { + "default": 60, + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1ResourceCostSummarySpec": { + "description": "Resource cost summary spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1ResourceCostSummaryFilter" + }, + "options": { + "$ref": "#/definitions/v1ResourceCostSummaryOptions" + } + }, + "type": "object" + }, + "v1ResourceEntity": { + "properties": { + "checks": { + "items": { + "type": "string" + }, + "type": "array" + }, + "data": { + "additionalProperties": { + "type": "object" + }, + "type": "object" + } + }, + "type": "object" + }, + "v1ResourceGroup": { + "description": "Azure resource Group is a container that holds related resources for an Azure solution", + "properties": { + "id": { + "description": "The ID of the resource group", + "type": "string" + }, + "location": { + "description": "The location of the resource group. It cannot be changed after the resource group has been created", + "type": "string" + }, + "name": { + "description": "The type of the resource group", + "type": "string" + } + }, + "type": "object" + }, + "v1ResourceLimitType": { + "enum": [ + "user", + "project", + "apiKey", + "team", + "role", + "cloudaccount", + "clusterprofile", + "workspace", + "registry", + "privategateway", + "location", + "certificate", + "macro", + "sshkey", + "alert", + "spectrocluster", + "edgehost", + "appprofile", + "appdeployment", + "edgetoken", + "clustergroup", + "filter", + "systemadmin" + ], + "type": "string" + }, + "v1ResourceReference": { + "properties": { + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "required": [ + "uid" + ], + "type": "object" + }, + "v1ResourceRoles": { + "properties": { + "resourceRoles": { + "items": { + "$ref": "#/definitions/v1ResourceRolesEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ResourceRolesEntity": { + "properties": { + "filterRefs": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + }, + "projectUids": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + }, + "roles": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1ResourceRolesUpdateEntity": { + "properties": { + "filterRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "projectUids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1ResourceTotalCloudCost": { + "description": "Resource total cloud cost information", + "properties": { + "compute": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "storage": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "total": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1ResourceTotalConsumptionData": { + "description": "Resource total cosumption data", + "properties": { + "allotted": { + "$ref": "#/definitions/v1ResourceConsumptionData" + }, + "usage": { + "$ref": "#/definitions/v1ResourceConsumptionData" + } + }, + "type": "object" + }, + "v1ResourceTotalCost": { + "description": "Resource total cost information", + "properties": { + "cpu": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "memory": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "storage": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "total": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1ResourceUsage": { + "description": "ResourceUsage", + "properties": { + "projects": { + "items": { + "$ref": "#/definitions/v1ProjectResourceUsage" + }, + "type": "array", + "uniqueItems": true + }, + "timestamp": { + "$ref": "#/definitions/v1Time", + "description": "resource usage time" + }, + "totalAlloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "totalPureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } + } + }, + "v1ResourceUsageDataPoint": { + "description": "Resource usage data point", + "properties": { + "baremetal": { + "$ref": "#/definitions/v1ResourceUsageMeteringDataPoint" + }, + "cpu": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "edgehost": { + "$ref": "#/definitions/v1ResourceUsageMeteringDataPoint" + }, + "memory": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "timestamp": { + "format": "int64", + "type": "number" + } + }, + "type": "object" + }, + "v1ResourceUsageMeteringDataPoint": { + "description": "min and max count for machines & edgehost for the given period", + "properties": { + "activeEdgehosts": { + "format": "int64", + "type": "number" + }, + "activeMachines": { + "format": "int64", + "type": "number" + }, + "maxEdgehosts": { + "format": "int64", + "type": "number" + }, + "maxMachines": { + "format": "int64", + "type": "number" + } + }, + "type": "object" + }, + "v1ResourceUsageSummary": { + "description": "Resource usage summary information", + "properties": { + "associatedResources": { + "items": { + "$ref": "#/definitions/v1ResourceReference" + }, + "type": "array" + }, + "data": { + "items": { + "$ref": "#/definitions/v1ResourceUsageDataPoint" + }, + "type": "array", + "uniqueItems": true + }, + "entity": { + "$ref": "#/definitions/v1ResourceReference" + } + }, + "type": "object" + }, + "v1ResourceUsageSummaryFilter": { + "description": "Resource usage summary filter", + "properties": { + "clouds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "clusters": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "endTime": { + "$ref": "#/definitions/v1Time" + }, + "includeMasterMachines": { + "type": "boolean" + }, + "namespaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "pods": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "projects": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "startTime": { + "$ref": "#/definitions/v1Time" + }, + "workload": { + "$ref": "#/definitions/v1ResourceWorkloadFilter" + }, + "workspaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1ResourceUsageSummaryOptions": { + "description": "Resource usage summary options", + "properties": { + "enableSummaryView": { + "default": true, + "type": "boolean" + }, + "groupBy": { + "default": "cluster", + "enum": [ + "tenant", + "project", + "workspace", + "cluster", + "namespace", + "deployment", + "statefulset", + "daemonset", + "pod", + "cloud" + ], + "type": "string" + }, + "includeMeteringInfo": { + "default": false, + "type": "boolean" + }, + "period": { + "default": 60, + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1ResourceUsageSummarySpec": { + "description": "Resource usage summary spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1ResourceUsageSummaryFilter" + }, + "options": { + "$ref": "#/definitions/v1ResourceUsageSummaryOptions" + } + }, + "type": "object" + }, + "v1ResourceWorkloadFilter": { + "description": "Workload resource filter", + "properties": { + "names": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "default": "all", + "enum": [ + "deployment", + "statefulset", + "daemonset", + "all" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1Resources": { + "properties": { + "resources": { + "additionalProperties": { + "$ref": "#/definitions/v1ResourceEntity", + "type": "object" + }, + "type": "object" + } + }, + "type": "object" + }, + "v1ResourcesCloudCostSummary": { + "description": "Resources cloud cost summary information", + "properties": { + "resources": { + "items": { + "$ref": "#/definitions/v1ResourceCloudCostSummary" + }, + "type": "array" + }, + "total": { + "$ref": "#/definitions/v1ResourceTotalCloudCost" + } + }, + "type": "object" + }, + "v1ResourcesConsumption": { + "description": "Resources consumption information", + "properties": { + "cpuUnit": { + "type": "string" + }, + "memoryUnit": { + "type": "string" + }, + "resources": { + "items": { + "$ref": "#/definitions/v1ResourceConsumption" + }, + "type": "array" + }, + "total": { + "$ref": "#/definitions/v1ResourceTotalConsumptionData" + } + }, + "type": "object" + }, + "v1ResourcesCostSummary": { + "description": "Resources cost summary information", + "properties": { + "resources": { + "items": { + "$ref": "#/definitions/v1ResourceCostSummary" + }, + "type": "array" + }, + "total": { + "$ref": "#/definitions/v1ResourceTotalCost" + } + }, + "type": "object" + }, + "v1ResourcesUsageSummary": { + "description": "Resources usage summary information", + "properties": { + "cpuUnit": { + "type": "string" + }, + "memoryUnit": { + "type": "string" + }, + "resources": { + "items": { + "$ref": "#/definitions/v1ResourceUsageSummary" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1RestoreStatusMeta": { + "description": "Restore status meta", + "properties": { + "isSucceeded": { + "type": "boolean" + }, + "msg": { + "type": "string" + }, + "restoreTime": { + "$ref": "#/definitions/v1Time" + } + } + }, + "v1Role": { + "description": "Role", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1RoleSpec" + }, + "status": { + "$ref": "#/definitions/v1RoleStatus" + } + } + }, + "v1RoleClone": { + "description": "Role clone specifications", + "properties": { + "metadata": { + "$ref": "#/definitions/v1RoleCloneMetadata" + } + } + }, + "v1RoleCloneMetadata": { + "description": "Role clone metadata", + "properties": { + "name": { + "type": "string" + } + } + }, + "v1RolePatch": { + "items": { + "$ref": "#/definitions/v1HttpPatch" + }, + "type": "array" + }, + "v1RoleSpec": { + "description": "Role specifications", + "properties": { + "permissions": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "scope": { + "$ref": "#/definitions/v1Scope" + }, + "type": { + "enum": [ + "system", + "user" + ], + "type": "string" + } + } + }, + "v1RoleStatus": { + "description": "Role status", + "properties": { + "isEnabled": { + "description": "Specifies if role account is enabled/disabled", + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1Roles": { + "description": "Array of Roles", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1Role" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1S3StorageConfig": { + "description": "S3 storage config object", + "properties": { + "bucketName": { + "description": "S3 storage bucket name", + "type": "string" + }, + "caCert": { + "description": "CA Certificate", + "type": "string" + }, + "credentials": { + "$ref": "#/definitions/v1AwsCloudAccount", + "description": "AWS cloud account credentials" + }, + "region": { + "description": "AWS region name", + "type": "string" + }, + "s3ForcePathStyle": { + "default": true, + "type": "boolean" + }, + "s3Url": { + "description": "Custom hosted S3 URL", + "type": "string" + }, + "useRestic": { + "default": true, + "description": "Set to 'true', to use Restic plugin for the backup", + "type": "boolean" + } + }, + "required": [ + "bucketName", + "region", + "credentials" + ], + "type": "object" + }, + "v1SchedulerJob": { + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta", + "type": "object", + "x-omitempty": false + }, + "spec": { + "properties": { + "cycles": { + "type": "integer", + "x-omitempty": false + }, + "interval": { + "type": "integer", + "x-omitempty": false + } + }, + "type": "object" + }, + "status": { + "properties": { + "cycleNumber": { + "type": "integer", + "x-omitempty": false + }, + "error": { + "type": "string", + "x-omitempty": false + }, + "forceNextRun": { + "type": "boolean", + "x-omitempty": false + }, + "isActive": { + "type": "boolean", + "x-omitempty": false + }, + "isDisabled": { + "type": "boolean", + "x-omitempty": false + }, + "isLocked": { + "type": "boolean", + "x-omitempty": false + }, + "lastRunTime": { + "$ref": "#/definitions/v1Time", + "x-omitempty": false + }, + "lastSuccessfulRunTime": { + "$ref": "#/definitions/v1Time", + "x-omitempty": false + }, + "nextRunTime": { + "$ref": "#/definitions/v1Time", + "x-omitempty": false + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SchedulerJobs": { + "items": { + "$ref": "#/definitions/v1SchedulerJob" + }, + "type": "array", + "uniqueItems": true + }, + "v1SchedulerJobsHealth": { + "items": { + "$ref": "#/definitions/v1SchedulerJob" + }, + "type": "array", + "uniqueItems": true + }, + "v1Scope": { + "enum": [ + "system", + "tenant", + "project", + "resource" + ], + "type": "string" + }, + "v1SearchFilterBoolCondition": { + "properties": { + "value": { + "type": "boolean" + } + } + }, + "v1SearchFilterCondition": { + "properties": { + "bool": { + "$ref": "#/definitions/v1SearchFilterBoolCondition" + }, + "date": { + "$ref": "#/definitions/v1SearchFilterDateCondition" + }, + "float": { + "$ref": "#/definitions/v1SearchFilterFloatCondition" + }, + "int": { + "$ref": "#/definitions/v1SearchFilterIntegerCondition" + }, + "keyValue": { + "$ref": "#/definitions/v1SearchFilterKeyValueCondition" + }, + "string": { + "$ref": "#/definitions/v1SearchFilterStringCondition" + } + } + }, + "v1SearchFilterConjunctionOperator": { + "enum": [ + "and", + "or" + ], + "type": "string", + "x-nullable": true + }, + "v1SearchFilterDateCondition": { + "properties": { + "match": { + "$ref": "#/definitions/v1SearchFilterDateConditionMatch" + }, + "negation": { + "type": "boolean" + }, + "operator": { + "$ref": "#/definitions/v1SearchFilterDateOperator" + } + } + }, + "v1SearchFilterDateConditionMatch": { + "properties": { + "conjunction": { + "$ref": "#/definitions/v1SearchFilterConjunctionOperator" + }, + "values": { + "items": { + "$ref": "#/definitions/v1Time" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1SearchFilterDateOperator": { + "enum": [ + "eq", + "gt", + "gte", + "lt", + "lte", + "range" + ], + "type": "string" + }, + "v1SearchFilterFloatCondition": { + "properties": { + "match": { + "$ref": "#/definitions/v1SearchFilterFloatConditionMatch" + }, + "negation": { + "type": "boolean" + }, + "operator": { + "$ref": "#/definitions/v1SearchFilterIntegerOperator" + } + } + }, + "v1SearchFilterFloatConditionMatch": { + "properties": { + "conjunction": { + "$ref": "#/definitions/v1SearchFilterConjunctionOperator" + }, + "values": { + "items": { + "format": "float64", + "type": "number" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1SearchFilterGroup": { + "properties": { + "conjunction": { + "$ref": "#/definitions/v1SearchFilterConjunctionOperator" + }, + "filters": { + "items": { + "$ref": "#/definitions/v1SearchFilterItem" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1SearchFilterIntegerCondition": { + "properties": { + "match": { + "$ref": "#/definitions/v1SearchFilterIntegerConditionMatch" + }, + "negation": { + "type": "boolean" + }, + "operator": { + "$ref": "#/definitions/v1SearchFilterIntegerOperator" + } + } + }, + "v1SearchFilterIntegerConditionMatch": { + "properties": { + "conjunction": { + "$ref": "#/definitions/v1SearchFilterConjunctionOperator" + }, + "values": { + "items": { + "type": "integer" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1SearchFilterIntegerOperator": { + "enum": [ + "eq", + "gt", + "gte", + "lt", + "lte" + ], + "type": "string" + }, + "v1SearchFilterItem": { + "properties": { + "condition": { + "$ref": "#/definitions/v1SearchFilterCondition" + }, + "property": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/v1SearchFilterPropertyType" + } + } + }, + "v1SearchFilterKeyValueCondition": { + "properties": { + "ignoreCase": { + "type": "boolean" + }, + "key": { + "type": "string" + }, + "match": { + "$ref": "#/definitions/v1SearchFilterKeyValueConditionMatch" + }, + "negation": { + "type": "boolean" + }, + "operator": { + "$ref": "#/definitions/v1SearchFilterStringOperator" + } + } + }, + "v1SearchFilterKeyValueConditionMatch": { + "properties": { + "conjunction": { + "$ref": "#/definitions/v1SearchFilterConjunctionOperator" + }, + "values": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1SearchFilterKeyValueOperator": { + "enum": [ + "eq" + ], + "type": "string" + }, + "v1SearchFilterPropertyType": { + "enum": [ + "string", + "int", + "float", + "bool", + "date", + "keyValue" + ], + "type": "string" + }, + "v1SearchFilterSchemaSpec": { + "properties": { + "schema": { + "$ref": "#/definitions/v1SearchFilterSchemaSpecProperties" + } + } + }, + "v1SearchFilterSchemaSpecEnumValue": { + "properties": { + "displayValue": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "v1SearchFilterSchemaSpecProperties": { + "properties": { + "properties": { + "items": { + "$ref": "#/definitions/v1SearchFilterSchemaSpecProperty" + }, + "type": "array" + } + } + }, + "v1SearchFilterSchemaSpecProperty": { + "properties": { + "default": { + "type": "string", + "x-order": 6 + }, + "displayName": { + "type": "string", + "x-order": 2 + }, + "enum": { + "items": { + "type": "string" + }, + "type": "array", + "x-omitempty": true, + "x-order": 4 + }, + "enumValues": { + "items": { + "$ref": "#/definitions/v1SearchFilterSchemaSpecEnumValue" + }, + "type": "array", + "x-omitempty": true, + "x-order": 5 + }, + "hideDisplay": { + "type": "boolean", + "x-order": 1 + }, + "maxFloatVal": { + "format": "float64", + "type": "number", + "x-order": 10 + }, + "maxIntVal": { + "format": "int32", + "type": "integer", + "x-order": 8 + }, + "minFloatVal": { + "format": "float64", + "type": "number", + "x-order": 9 + }, + "minIntVal": { + "format": "int32", + "type": "integer", + "x-order": 7 + }, + "name": { + "type": "string", + "x-order": 0 + }, + "type": { + "type": "string", + "x-order": 3 + } + } + }, + "v1SearchFilterSortSpec": { + "properties": { + "field": { + "$ref": "#/definitions/v1SearchSortFields" + }, + "order": { + "$ref": "#/definitions/v1SortOrder" + } + } + }, + "v1SearchFilterSpec": { + "properties": { + "conjunction": { + "$ref": "#/definitions/v1SearchFilterConjunctionOperator" + }, + "filterGroups": { + "items": { + "$ref": "#/definitions/v1SearchFilterGroup" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1SearchFilterStringCondition": { + "properties": { + "ignoreCase": { + "type": "boolean" + }, + "match": { + "$ref": "#/definitions/v1SearchFilterStringConditionMatch" + }, + "negation": { + "type": "boolean" + }, + "operator": { + "$ref": "#/definitions/v1SearchFilterStringOperator" + } + } + }, + "v1SearchFilterStringConditionMatch": { + "properties": { + "conjunction": { + "$ref": "#/definitions/v1SearchFilterConjunctionOperator" + }, + "values": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1SearchFilterStringOperator": { + "enum": [ + "eq", + "contains", + "beginsWith" + ], + "type": "string" + }, + "v1SearchFilterSummarySpec": { + "description": "Spectro cluster search filter summary spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1SearchFilterSpec" + }, + "sort": { + "items": { + "$ref": "#/definitions/v1SearchFilterSortSpec" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1SearchSortFields": { + "enum": [ + "environment", + "clusterName", + "clusterState", + "healthState", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "type": "string", + "x-nullable": true + }, + "v1SectroClusterK8sDashboardUrl": { + "description": "Service version information", + "properties": { + "url": { + "type": "string" + } + }, + "type": "object" + }, + "v1ServiceEncryptionKey": { + "description": "Returns the data encryption key for the session", + "properties": { + "encryptionKey": { + "description": "Encryption key to be used to decrypt the encrypted data in the response", + "type": "string" + } + }, + "type": "object" + }, + "v1ServiceImage": { + "description": "Service image entity", + "properties": { + "buildId": { + "type": "string" + }, + "image": { + "type": "string" + }, + "serviceName": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1ServiceManifest": { + "description": "Service manifest information", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ServiceManifestSpec" + } + }, + "type": "object" + }, + "v1ServiceManifestSpec": { + "properties": { + "manifests": { + "items": { + "$ref": "#/definitions/v1GitRepoFileContent" + }, + "type": "array", + "uniqueItems": true + }, + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1ServicePort": { + "properties": { + "port": { + "description": "The port that will be exposed by this service.", + "format": "int32", + "type": "integer" + }, + "protocol": { + "type": "string" + } + }, + "required": [ + "port" + ], + "type": "object" + }, + "v1ServiceSpec": { + "description": "ServiceSpec defines the specification of service registering edge", + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1ServiceVersion": { + "description": "Service version information", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1ServiceVersionSpec" + } + }, + "type": "object" + }, + "v1ServiceVersionSpec": { + "properties": { + "latestVersion": { + "$ref": "#/definitions/v1GitRepoFileContent" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1ServicesImages": { + "properties": { + "serviceImages": { + "items": { + "$ref": "#/definitions/v1ServiceImage" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1SonobuoyEntity": { + "description": "Sonobuoy response", + "properties": { + "reports": { + "additionalProperties": { + "$ref": "#/definitions/v1SonobuoyReportEntity" + }, + "type": "object" + }, + "requestUid": { + "type": "string" + }, + "status": { + "enum": [ + "Completed", + "InProgress", + "Failed", + "Initiated" + ], + "type": "string" + } + }, + "required": [ + "requestUid", + "status", + "reports" + ] + }, + "v1SonobuoyLog": { + "description": "Compliance Scan Sonobuoy Log", + "properties": { + "description": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "output": { + "type": "string" + }, + "path": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "v1SonobuoyLogEntity": { + "description": "Sonobuoy log", + "properties": { + "description": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "output": { + "type": "string" + }, + "path": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "v1SonobuoyReport": { + "description": "Compliance Scan Sonobuoy Report", + "properties": { + "fail": { + "format": "int32", + "type": "integer" + }, + "logs": { + "items": { + "$ref": "#/definitions/v1SonobuoyLog" + }, + "type": "array" + }, + "node": { + "type": "string" + }, + "pass": { + "format": "int32", + "type": "integer" + }, + "plugin": { + "type": "string" + }, + "status": { + "type": "string" + }, + "total": { + "format": "int32", + "type": "integer" + } + } + }, + "v1SonobuoyReportEntity": { + "description": "Sonobuoy report", + "properties": { + "fail": { + "format": "int32", + "type": "integer" + }, + "logs": { + "items": { + "$ref": "#/definitions/v1SonobuoyLogEntity" + }, + "type": "array" + }, + "node": { + "type": "string" + }, + "pass": { + "format": "int32", + "type": "integer" + }, + "plugin": { + "type": "string" + }, + "status": { + "type": "string" + }, + "total": { + "format": "int32", + "type": "integer" + } + } + }, + "v1SortOrder": { + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "type": "string" + }, + "v1SpcApply": { + "properties": { + "actionType": { + "enum": [ + "DownloadAndInstall", + "DownloadAndInstallLater" + ], + "type": "string" + }, + "canBeApplied": { + "description": "If it is true then Agent can apply the changes to the palette", + "type": "boolean", + "x-omitempty": false + }, + "crdDigest": { + "type": "string" + }, + "lastModifiedTime": { + "$ref": "#/definitions/v1Time" + }, + "patchAppliedTime": { + "$ref": "#/definitions/v1Time" + }, + "spcHash": { + "type": "string" + }, + "spcInfraHash": { + "type": "string" + } + }, + "type": "object" + }, + "v1SpcApplySettings": { + "properties": { + "actionType": { + "enum": [ + "DownloadAndInstall", + "DownloadAndInstallLater" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1SpcPatchTimeEntity": { + "properties": { + "clusterHash": { + "type": "string" + }, + "patchTime": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1SpectroAppMgmtUpgrade": { + "description": "Spectro application management upgrade information", + "properties": { + "profiles": { + "items": { + "$ref": "#/definitions/v1ClusterProfileNotificationUpdateEntity" + }, + "type": "array", + "uniqueItems": true + }, + "version": { + "type": "string" + } + }, + "required": [ + "version" + ], + "type": "object" + }, + "v1SpectroAwsClusterEntity": { + "description": "AWS cluster request payload for create and update", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "cloudAccountUid": { + "description": "Cloud account uid to be used for cluster provisioning", + "type": "string" + }, + "cloudConfig": { + "$ref": "#/definitions/v1AwsClusterConfig" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1AwsMachinePoolConfigEntity" + }, + "type": "array" + }, + "policies": { + "$ref": "#/definitions/v1SpectroClusterPolicies" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "required": [ + "cloudType", + "cloudAccountUid", + "cloudConfig" + ], + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroAwsClusterImportEntity": { + "description": "Spectro AWS cluster import request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1ImportClusterConfig" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroAwsClusterRateEntity": { + "description": "Spectro AWS cluster request payload for estimating rate", + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1AwsClusterConfig" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1AwsMachinePoolConfigEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroAzureClusterEntity": { + "description": "Azure cluster request payload for create and update", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "cloudAccountUid": { + "description": "Cloud account uid to be used for cluster provisioning", + "type": "string" + }, + "cloudConfig": { + "$ref": "#/definitions/v1AzureClusterConfig" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1AzureMachinePoolConfigEntity" + }, + "type": "array" + }, + "policies": { + "$ref": "#/definitions/v1SpectroClusterPolicies" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "required": [ + "cloudType", + "cloudAccountUid", + "cloudConfig" + ], + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroAzureClusterImportEntity": { + "description": "Spectro Azure cluster import request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1ImportClusterConfig" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroAzureClusterRateEntity": { + "description": "Spectro Azure cluster request payload for estimating rate", + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1AzureClusterConfig" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1AzureMachinePoolConfigEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroCluster": { + "description": "SpectroCluster is the Schema for the spectroclusters API", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1SpectroClusterSpec" + }, + "status": { + "$ref": "#/definitions/v1SpectroClusterStatus" + } + }, + "type": "object" + }, + "v1SpectroClusterActiveAppDeployment": { + "description": "Active app deployment", + "properties": { + "appRef": { + "$ref": "#/definitions/v1ObjectEntity" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterActiveCluster": { + "description": "Active clusters", + "properties": { + "clusterRef": { + "$ref": "#/definitions/v1ObjectEntity" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterActiveResources": { + "description": "Active cluster resources", + "properties": { + "appDeployments": { + "items": { + "$ref": "#/definitions/v1SpectroClusterActiveAppDeployment" + }, + "type": "array" + }, + "clusters": { + "items": { + "$ref": "#/definitions/v1SpectroClusterActiveCluster" + }, + "type": "array" + }, + "virtualClusters": { + "items": { + "$ref": "#/definitions/v1SpectroClusterActiveCluster" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroClusterAddOnService": { + "description": "Spectro cluster addon service", + "properties": { + "endpoint": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "v1SpectroClusterAddOnServiceSummary": { + "description": "Spectro cluster status summary", + "properties": { + "endpoint": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, + "v1SpectroClusterAssetEntity": { + "description": "Cluster asset", + "properties": { + "spec": { + "properties": { + "frpKubeconfig": { + "type": "string" + }, + "kubeconfig": { + "type": "string" + }, + "kubeconfigclient": { + "type": "string" + }, + "manifest": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroClusterAssetFrpKubeConfig": { + "description": "Cluster asset Frp Kube Config", + "properties": { + "frpKubeconfig": { + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterAssetKubeConfig": { + "description": "Cluster asset Kube Config", + "properties": { + "kubeconfig": { + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterAssetKubeConfigClient": { + "description": "Cluster asset Kube Config Client", + "properties": { + "kubeconfigclient": { + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterAssetManifest": { + "description": "Cluster asset", + "properties": { + "manifest": { + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterCloudCost": { + "description": "Spectro cluster cloud cost information", + "properties": { + "cost": { + "$ref": "#/definitions/v1ResourceCost" + }, + "data": { + "items": { + "$ref": "#/definitions/v1CloudCostDataPoint" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroClusterCloudCostSummaryFilter": { + "description": "Spectro cluster cloud cost summary filter", + "properties": { + "clouds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "endTime": { + "$ref": "#/definitions/v1Time" + }, + "projects": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "startTime": { + "$ref": "#/definitions/v1Time" + }, + "workspaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1SpectroClusterCloudCostSummaryOptions": { + "description": "Spectro cluster cloud cost summary options", + "properties": { + "groupBy": { + "default": "project", + "enum": [ + "tenant", + "project", + "cloud", + "cluster" + ], + "type": "string" + }, + "period": { + "default": 1440, + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1SpectroClusterCloudCostSummarySpec": { + "description": "Spectro cluster cloud cost summary spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1SpectroClusterCloudCostSummaryFilter" + }, + "options": { + "$ref": "#/definitions/v1SpectroClusterCloudCostSummaryOptions" + } + }, + "type": "object" + }, + "v1SpectroClusterCost": { + "description": "Spectro cluster cost information", + "properties": { + "cloud": { + "$ref": "#/definitions/v1SpectroClusterCloudCost" + }, + "cost": { + "$ref": "#/definitions/v1ResourceCost" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterCostSummary": { + "properties": { + "cluster": { + "$ref": "#/definitions/v1SpectroClusterCost" + }, + "endTime": { + "$ref": "#/definitions/v1Time" + }, + "period": { + "format": "int32", + "type": "integer" + }, + "startTime": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1SpectroClusterFilterSpec": { + "description": "Spectro cluster filter spec", + "properties": { + "cloudAccounts": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "clusterName": { + "$ref": "#/definitions/v1FilterString" + }, + "clusterProfiles": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "clusterState": { + "$ref": "#/definitions/v1ClusterState", + "description": "Deprecated. Use clusterStates" + }, + "clusterStates": { + "items": { + "$ref": "#/definitions/v1ClusterState" + }, + "type": "array", + "uniqueItems": true + }, + "cpuUsage": { + "$ref": "#/definitions/v1FilterIntRange" + }, + "environment": { + "description": "Deprecated. Use environments", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "environments": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "healthState": { + "default": "all", + "enum": [ + "all", + "Healthy", + "UnHealthy" + ], + "type": "string" + }, + "isDeleted": { + "default": false, + "type": "boolean" + }, + "isHostCluster": { + "default": false, + "type": "boolean", + "x-omitempty": false + }, + "memoryUsage": { + "$ref": "#/definitions/v1FilterNumberRange" + }, + "metricPeriod": { + "default": 60, + "description": "Metric period in minutes defines latest metrics by period", + "format": "int32", + "type": "integer" + }, + "projectUids": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "tags": { + "$ref": "#/definitions/v1FilterArray" + } + } + }, + "v1SpectroClusterHealthCheck": { + "properties": { + "spec": { + "$ref": "#/definitions/v1SpectroClusterHealthCheckSpec", + "type": "object" + }, + "status": { + "$ref": "#/definitions/v1SpectroClusterHealthCheckStatus", + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroClusterHealthCheckSpec": { + "properties": { + "name": { + "type": "string" + }, + "orgName": { + "type": "string" + }, + "ownerName": { + "type": "string" + }, + "ownerUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterHealthCheckStatus": { + "properties": { + "machineHealthChecks": { + "items": { + "$ref": "#/definitions/v1HealthCheck" + }, + "type": "array" + }, + "msgBrokerHealthChecks": { + "items": { + "$ref": "#/definitions/v1HealthCheck" + }, + "type": "array" + }, + "spectroClusterHealthChecks": { + "items": { + "$ref": "#/definitions/v1HealthCheck" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroClusterHealthCondition": { + "description": "Spectro cluster health condition", + "properties": { + "message": { + "type": "string" + }, + "relatedObject": { + "$ref": "#/definitions/v1RelatedObject", + "type": "object" + }, + "type": { + "type": "string" + } + } + }, + "v1SpectroClusterHealthStatus": { + "description": "Spectro cluster health status", + "properties": { + "agentVersion": { + "type": "string" + }, + "conditions": { + "items": { + "$ref": "#/definitions/v1SpectroClusterHealthCondition" + }, + "type": "array", + "uniqueItems": true + }, + "lastHeartBeatTimestamp": { + "$ref": "#/definitions/v1Time" + }, + "state": { + "type": "string" + } + } + }, + "v1SpectroClusterKubeCtlRedirect": { + "description": "Active resources of tenant", + "properties": { + "redirectUri": { + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterLocationInputEntity": { + "description": "Cluster location", + "properties": { + "location": { + "$ref": "#/definitions/v1ClusterLocation" + } + }, + "type": "object" + }, + "v1SpectroClusterMetaSummary": { + "description": "Spectro cluster meta summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "specSummary": { + "description": "Spectro cluster meta summary", + "properties": { + "archType": { + "description": "Architecture type of the cluster", + "items": { + "default": "amd64", + "enum": [ + "arm64", + "amd64" + ], + "type": "string" + }, + "type": "array" + }, + "cloudAccountUid": { + "type": "string" + }, + "cloudRegion": { + "type": "string" + }, + "cloudType": { + "type": "string" + }, + "clusterType": { + "type": "string" + }, + "importMode": { + "type": "string" + }, + "location": { + "$ref": "#/definitions/v1ClusterMetaSpecLocation" + }, + "projectMeta": { + "$ref": "#/definitions/v1ProjectMeta" + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "status": { + "description": "Spectro cluster meta status summary", + "properties": { + "cost": { + "$ref": "#/definitions/v1ClusterMetaStatusCost" + }, + "fips": { + "$ref": "#/definitions/v1ClusterFips" + }, + "health": { + "$ref": "#/definitions/v1ClusterMetaStatusHealth" + }, + "state": { + "type": "string" + }, + "updates": { + "$ref": "#/definitions/v1ClusterMetaStatusUpdates" + } + } + } + }, + "type": "object" + }, + "v1SpectroClusterMetadataFilterSpec": { + "description": "Spectro cluster filter spec", + "properties": { + "environment": { + "type": "string" + }, + "includeVirtual": { + "default": false, + "type": "boolean" + }, + "isAlloy": { + "default": false, + "description": "isAlloy is renamed to isImported", + "type": "boolean" + }, + "isImportReadOnly": { + "default": true, + "type": "boolean" + }, + "isImported": { + "default": false, + "type": "boolean" + }, + "name": { + "$ref": "#/definitions/v1FilterString" + }, + "state": { + "type": "string" + } + } + }, + "v1SpectroClusterMetadataSpec": { + "description": "Spectro cluster metadata spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1SpectroClusterMetadataFilterSpec" + }, + "sort": { + "enum": [ + "environment", + "state", + "name" + ], + "type": "string", + "x-nullable": true + } + } + }, + "v1SpectroClusterMetrics": { + "description": "Spectro cluster metrics", + "properties": { + "cpu": { + "$ref": "#/definitions/v1ComputeMetrics" + }, + "memory": { + "$ref": "#/definitions/v1ComputeMetrics" + } + } + }, + "v1SpectroClusterMigration": { + "description": "Spectro cluster migration status", + "properties": { + "database": { + "$ref": "#/definitions/v1MgmtMigrationStatuses" + }, + "state": { + "type": "string", + "x-omitempty": false + }, + "tenant": { + "$ref": "#/definitions/v1SpectroTenantMigration" + } + }, + "type": "object" + }, + "v1SpectroClusterNotifications": { + "description": "Spectro cluster notifications", + "properties": { + "isAvailable": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1SpectroClusterOidcClaims": { + "properties": { + "Email": { + "type": "string", + "x-omitempty": false + }, + "FirstName": { + "type": "string", + "x-omitempty": false + }, + "LastName": { + "type": "string", + "x-omitempty": false + }, + "SpectroTeam": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1SpectroClusterOidcSpec": { + "properties": { + "clientId": { + "type": "string", + "x-omitempty": false + }, + "clientSecret": { + "type": "string", + "x-omitempty": false + }, + "issuerUrl": { + "description": "the issuer is the URL identifier for the service", + "type": "string", + "x-omitempty": false + }, + "requiredClaims": { + "$ref": "#/definitions/v1SpectroClusterOidcClaims" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1SpectroClusterPackCondition": { + "properties": { + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "enum": [ + "ReadyForInstall", + "Installed", + "Ready", + "Error", + "UpgradeAvailable", + "WaitingForOtherLayers" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterPackConfigList": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1PackConfig" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1SpectroClusterPackDiff": { + "description": "Cluster pack difference", + "properties": { + "current": { + "$ref": "#/definitions/v1PackRef" + }, + "diffConfigKeys": { + "items": { + "type": "string" + }, + "type": "array" + }, + "target": { + "$ref": "#/definitions/v1PackRef" + } + }, + "type": "object" + }, + "v1SpectroClusterPackProperties": { + "description": "Cluster pack properties response", + "properties": { + "yaml": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1SpectroClusterPackStatusEntity": { + "properties": { + "condition": { + "$ref": "#/definitions/v1SpectroClusterPackCondition", + "description": "Pack deployment status conditions" + }, + "endTime": { + "$ref": "#/definitions/v1Time", + "description": "Pack deployment end time" + }, + "name": { + "description": "Pack name", + "type": "string" + }, + "profileUid": { + "description": "Cluster profile uid", + "type": "string" + }, + "startTime": { + "$ref": "#/definitions/v1Time", + "description": "Pack deployment start time" + }, + "type": { + "$ref": "#/definitions/v1PackType" + }, + "version": { + "description": "pack version", + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterPacksEntity": { + "description": "Cluster entity for pack refs validate", + "properties": { + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroClusterPacksStatusEntity": { + "properties": { + "packs": { + "items": { + "$ref": "#/definitions/v1SpectroClusterPackStatusEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroClusterPolicies": { + "description": "Cluster policies", + "properties": { + "backupPolicy": { + "$ref": "#/definitions/v1ClusterBackupConfig" + }, + "scanPolicy": { + "$ref": "#/definitions/v1ClusterComplianceScheduleConfig" + } + }, + "type": "object" + }, + "v1SpectroClusterProfile": { + "description": "Cluster profile response", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1SpectroClusterProfileSpec" + } + }, + "type": "object" + }, + "v1SpectroClusterProfileEntity": { + "description": "Cluster profile request payload", + "properties": { + "packValues": { + "description": "Cluster profile packs array", + "items": { + "$ref": "#/definitions/v1PackValuesEntity" + }, + "type": "array", + "uniqueItems": true + }, + "replaceWithProfile": { + "description": "Cluster profile uid to be replaced with new profile", + "type": "string" + }, + "uid": { + "description": "Cluster profile uid", + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterProfileList": { + "properties": { + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfile" + }, + "type": "array" + } + }, + "required": [ + "profiles" + ], + "type": "object" + }, + "v1SpectroClusterProfileSpec": { + "description": "Cluster profile spec response", + "properties": { + "cloudType": { + "description": "Cluster profile cloud type", + "type": "string" + }, + "packs": { + "description": "Cluster profile packs array", + "items": { + "$ref": "#/definitions/v1ClusterProfilePacksEntity" + }, + "type": "array", + "uniqueItems": true + }, + "relatedObject": { + "$ref": "#/definitions/v1ObjectReference", + "description": "RelatedObject refers to the type of object(clustergroup, cluster or edgeHost) the cluster profile is associated with" + }, + "type": { + "description": "Cluster profile type [ \"cluster\", \"infra\", \"add-on\", \"system\" ]", + "type": "string" + }, + "version": { + "description": "Cluster profile version", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1SpectroClusterProfileUpdates": { + "properties": { + "profiles": { + "items": { + "$ref": "#/definitions/v1ClusterProfileTemplate" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1SpectroClusterProfileValidatorResponse": { + "description": "Cluster profile validator response", + "properties": { + "packs": { + "$ref": "#/definitions/v1ConstraintValidatorResponse" + }, + "uid": { + "description": "Cluster profile uid", + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterProfiles": { + "properties": { + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + }, + "spcApplySettings": { + "$ref": "#/definitions/v1SpcApplySettings" + } + }, + "required": [ + "profiles" + ], + "type": "object" + }, + "v1SpectroClusterProfilesDeleteEntity": { + "properties": { + "profileUids": { + "description": "Cluster's profile uid list", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1SpectroClusterProfilesPacksManifests": { + "properties": { + "profiles": { + "items": { + "$ref": "#/definitions/v1ClusterProfilePacksManifests" + }, + "type": "array" + } + }, + "required": [ + "profiles" + ], + "type": "object" + }, + "v1SpectroClusterProfilesParamReferenceEntity": { + "description": "Cluster profiles param reference entity", + "properties": { + "references": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1SpectroClusterProfilesResolvedValues": { + "description": "Cluster profiles resolved values response", + "properties": { + "profiles": { + "items": { + "$ref": "#/definitions/v1ProfileResolvedValues" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1SpectroClusterProjectCleanedResource": { + "description": "List of cleaned project spectro cluster resources", + "properties": { + "resources": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroClusterProjectCleanupValidateEntity": { + "description": "Cluster duration thresholds", + "properties": { + "deletingClusterDurationThresholdInMin": { + "format": "int32", + "type": "integer" + }, + "provisioningClusterDurationThresholdInMin": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1SpectroClusterRate": { + "description": "Cluster estimated rate information", + "properties": { + "machinePools": { + "items": { + "$ref": "#/definitions/v1MachinePoolRate" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "rate": { + "$ref": "#/definitions/v1TotalClusterRate" + }, + "resourceMetadata": { + "$ref": "#/definitions/v1CloudResourceMetadata" + } + }, + "type": "object" + }, + "v1SpectroClusterRepave": { + "description": "Spectro cluster repave status information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1SpectroClusterRepaveSpec" + }, + "status": { + "$ref": "#/definitions/v1SpectroClusterRepaveStatus" + } + }, + "type": "object" + }, + "v1SpectroClusterRepaveReason": { + "description": "Cluster repave reason description", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "pack": { + "$ref": "#/definitions/v1SpectroClusterPackDiff" + } + }, + "type": "object" + }, + "v1SpectroClusterRepaveSpec": { + "properties": { + "reasons": { + "description": "Spectro cluster repave reasons", + "items": { + "$ref": "#/definitions/v1SpectroClusterRepaveReason" + }, + "type": "array" + }, + "source": { + "$ref": "#/definitions/v1ClusterRepaveSource" + }, + "spectroClusterUid": { + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterRepaveStatus": { + "properties": { + "message": { + "type": "string" + }, + "repaveTransitionTime": { + "$ref": "#/definitions/v1Time" + }, + "state": { + "$ref": "#/definitions/v1ClusterRepaveState" + } + }, + "type": "object" + }, + "v1SpectroClusterRepaveValidationResponse": { + "description": "Cluster repave validation response", + "properties": { + "isRepaveRequired": { + "description": "If true then the pack changes can cause cluster repave", + "type": "boolean", + "x-omitempty": false + }, + "reasons": { + "items": { + "$ref": "#/definitions/v1SpectroClusterRepaveReason" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroClusterRevision": { + "description": "Revision specification details for a cluster", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1SpectroClusterSpec" + } + }, + "type": "object" + }, + "v1SpectroClusterRevisionMeta": { + "description": "Revision spec uid along with the creationTimestamp for the revision", + "properties": { + "creationTimestamp": { + "$ref": "#/definitions/v1Time" + }, + "uid": { + "description": "The unique id of the spc revision document", + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterRevisionMetaList": { + "properties": { + "spcRevisions": { + "items": { + "$ref": "#/definitions/v1SpectroClusterRevisionMeta" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroClusterSortFields": { + "enum": [ + "environment", + "clusterName", + "healthState", + "creationTimestamp", + "lastModifiedTimestamp" + ], + "type": "string", + "x-nullable": true + }, + "v1SpectroClusterSortSpec": { + "properties": { + "field": { + "$ref": "#/definitions/v1SpectroClusterSortFields" + }, + "order": { + "$ref": "#/definitions/v1SortOrder" + } + } + }, + "v1SpectroClusterSpec": { + "description": "SpectroClusterSpec defines the desired state of SpectroCluster", + "properties": { + "cloudConfigRef": { + "$ref": "#/definitions/v1ObjectReference", + "description": "CloudConfigRef point to the cloud configuration for the cluster, input by user Ref types are: AwsCloudConfig/VsphereCloudConfig/BaremetalConfig/ etc this user config will be used to generate cloud specific cluster/machine spec for cluster-api For VM, it will contain information needed to launch VMs, like cloud account, instance type For BM, it will contain actual baremetal machines" + }, + "cloudType": { + "type": "string" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfig", + "description": "ClusterConfig is the configuration related to a general cluster. Configuration related to the health of the cluster." + }, + "clusterProfileTemplates": { + "description": "When a cluster created from a clusterprofile at t1, ClusterProfileTemplate is a copy of the draft version or latest published version of the clusterprofileSpec.clusterprofileTemplate then clusterprofile may evolve to v2 at t2, but before user decide to upgrade the cluster, it will stay as it is when user decide to upgrade, clusterProfileTemplate will be updated from the clusterprofile pointed by ClusterProfileRef", + "items": { + "$ref": "#/definitions/v1ClusterProfileTemplate" + }, + "type": "array" + }, + "clusterType": { + "enum": [ + "PureManage", + "AlloyMonitor", + "AlloyAssist", + "AlloyExtend" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroClusterStatus": { + "description": "SpectroClusterStatus", + "properties": { + "abortTimestamp": { + "$ref": "#/definitions/v1Time" + }, + "addOnServices": { + "items": { + "$ref": "#/definitions/v1SpectroClusterAddOnService" + }, + "type": "array" + }, + "apiEndpoints": { + "items": { + "$ref": "#/definitions/v1APIEndpoint" + }, + "type": "array" + }, + "clusterImport": { + "$ref": "#/definitions/v1ClusterImport" + }, + "conditions": { + "items": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "type": "array" + }, + "fips": { + "$ref": "#/definitions/v1ClusterFips" + }, + "location": { + "$ref": "#/definitions/v1ClusterLocation" + }, + "packs": { + "items": { + "$ref": "#/definitions/v1ClusterPackStatus" + }, + "type": "array" + }, + "profileStatus": { + "$ref": "#/definitions/v1ProfileStatus" + }, + "repave": { + "$ref": "#/definitions/v1ClusterRepaveStatus" + }, + "services": { + "items": { + "$ref": "#/definitions/v1LoadBalancerService" + }, + "type": "array" + }, + "spcApply": { + "$ref": "#/definitions/v1SpcApply" + }, + "state": { + "description": "current operational state", + "type": "string" + }, + "upgrades": { + "items": { + "$ref": "#/definitions/v1Upgrades" + }, + "type": "array" + }, + "virtual": { + "$ref": "#/definitions/v1Virtual" + } + }, + "type": "object" + }, + "v1SpectroClusterSummary": { + "description": "Spectro cluster summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "specSummary": { + "description": "Spectro cluster spec summary", + "properties": { + "archTypes": { + "description": "Architecture type of the cluster", + "items": { + "$ref": "#/definitions/v1ArchType" + }, + "type": "array" + }, + "cloudAccountMeta": { + "$ref": "#/definitions/v1CloudAccountMeta" + }, + "cloudConfig": { + "$ref": "#/definitions/v1CloudConfigMeta" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfigResponse" + }, + "clusterProfileTemplate": { + "$ref": "#/definitions/v1ClusterProfileTemplateMeta" + }, + "clusterProfileTemplates": { + "items": { + "$ref": "#/definitions/v1ClusterProfileTemplateMeta" + }, + "type": "array" + }, + "projectMeta": { + "$ref": "#/definitions/v1ProjectMeta" + } + }, + "type": "object" + }, + "status": { + "description": "Spectro cluster status summary", + "properties": { + "clusterImport": { + "$ref": "#/definitions/v1ClusterImport" + }, + "cost": { + "$ref": "#/definitions/v1ResourceCost" + }, + "fips": { + "$ref": "#/definitions/v1ClusterFips" + }, + "health": { + "$ref": "#/definitions/v1SpectroClusterHealthStatus" + }, + "hourlyRate": { + "$ref": "#/definitions/v1ResourceCost" + }, + "location": { + "$ref": "#/definitions/v1ClusterMetaSpecLocation" + }, + "metrics": { + "$ref": "#/definitions/v1SpectroClusterMetrics" + }, + "notifications": { + "$ref": "#/definitions/v1SpectroClusterNotifications" + }, + "repave": { + "$ref": "#/definitions/v1ClusterRepaveStatus" + }, + "state": { + "type": "string" + }, + "virtual": { + "$ref": "#/definitions/v1Virtual" + } + } + } + }, + "type": "object" + }, + "v1SpectroClusterSummarySpec": { + "description": "Spectro cluster filter summary spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1SpectroClusterFilterSpec" + }, + "sort": { + "items": { + "$ref": "#/definitions/v1SpectroClusterSortSpec" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1SpectroClusterUidStatusSummary": { + "description": "Spectro cluster status summary", + "properties": { + "abortTimestamp": { + "$ref": "#/definitions/v1Time" + }, + "addOnServices": { + "items": { + "$ref": "#/definitions/v1SpectroClusterAddOnServiceSummary" + }, + "type": "array" + }, + "apiEndpoints": { + "items": { + "$ref": "#/definitions/v1APIEndpoint" + }, + "type": "array" + }, + "clusterImport": { + "$ref": "#/definitions/v1ClusterImport" + }, + "conditions": { + "items": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "type": "array" + }, + "cost": { + "$ref": "#/definitions/v1ResourceCost" + }, + "fips": { + "$ref": "#/definitions/v1ClusterFips" + }, + "health": { + "$ref": "#/definitions/v1SpectroClusterHealthStatus" + }, + "hourlyRate": { + "$ref": "#/definitions/v1ResourceCost" + }, + "kubeMeta": { + "$ref": "#/definitions/v1KubeMeta" + }, + "location": { + "$ref": "#/definitions/v1ClusterMetaSpecLocation" + }, + "metrics": { + "$ref": "#/definitions/v1SpectroClusterMetrics" + }, + "notifications": { + "$ref": "#/definitions/v1SpectroClusterNotifications" + }, + "packs": { + "items": { + "$ref": "#/definitions/v1ClusterPackStatus" + }, + "type": "array" + }, + "services": { + "items": { + "$ref": "#/definitions/v1LoadBalancerService" + }, + "type": "array" + }, + "spcApply": { + "$ref": "#/definitions/v1SpcApply" + }, + "state": { + "description": "current operational state", + "type": "string" + }, + "upgrades": { + "items": { + "$ref": "#/definitions/v1Upgrades" + }, + "type": "array" + }, + "virtual": { + "$ref": "#/definitions/v1Virtual" + }, + "workspaces": { + "items": { + "$ref": "#/definitions/v1ResourceReference" + }, + "type": "array" + } + } + }, + "v1SpectroClusterUidSummary": { + "description": "Spectro cluster summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "description": "Spectro cluster spec summary", + "properties": { + "archTypes": { + "description": "Architecture types of the cluster", + "items": { + "$ref": "#/definitions/v1ArchType" + }, + "type": "array" + }, + "cloudConfig": { + "$ref": "#/definitions/v1CloudConfigMeta" + }, + "cloudaccount": { + "$ref": "#/definitions/v1CloudAccountMeta" + }, + "clusterProfileTemplate": { + "$ref": "#/definitions/v1ClusterProfileTemplateMeta" + }, + "clusterProfileTemplates": { + "items": { + "$ref": "#/definitions/v1ClusterProfileTemplateMeta" + }, + "type": "array" + } + }, + "type": "object" + }, + "status": { + "$ref": "#/definitions/v1SpectroClusterUidStatusSummary" + } + }, + "type": "object" + }, + "v1SpectroClusterUidUpgrades": { + "description": "Cluster status upgrades", + "properties": { + "upgrades": { + "items": { + "$ref": "#/definitions/v1Upgrades" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroClusterVMCloneEntity": { + "properties": { + "annotationFilters": { + "description": "Annotation filters", + "items": { + "type": "string" + }, + "type": "array" + }, + "cloneName": { + "description": "Cloning Virtual machine's name", + "type": "string" + }, + "labelFilters": { + "description": "Label filters", + "items": { + "type": "string" + }, + "type": "array" + }, + "newMacAddresses": { + "additionalProperties": { + "type": "string" + }, + "description": "NewMacAddresses manually sets that target interfaces' mac addresses. The key is the interface name and the value is the new mac address. If this field is not specified, a new MAC address will be generated automatically, as for any interface that is not included in this map", + "type": "object" + }, + "newSMBiosSerial": { + "description": "NewSMBiosSerial manually sets that target's SMbios serial. If this field is not specified, a new serial will be generated automatically.", + "type": "string" + } + }, + "required": [ + "cloneName" + ], + "type": "object" + }, + "v1SpectroClusterValidatorResponse": { + "description": "Cluster validator response", + "properties": { + "machinePools": { + "$ref": "#/definitions/v1ConstraintValidatorResponse" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileValidatorResponse" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1SpectroClusters": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1SpectroCluster" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1SpectroClustersAgentsNotifyEntity": { + "description": "SpectroClusters for which agents has to be notified", + "properties": { + "clusterUids": { + "items": { + "type": "string" + }, + "type": "array" + }, + "notifyAllClusters": { + "type": "boolean" + } + } + }, + "v1SpectroClustersCostComputeSpec": { + "description": "Cluster's cost compute spec", + "properties": { + "clusterUids": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "startTime": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1SpectroClustersHealth": { + "description": "Spectro Clusters health data", + "properties": { + "errored": { + "format": "int32", + "type": "integer", + "x-omitempty": false + }, + "healthy": { + "format": "int32", + "type": "integer", + "x-omitempty": false + }, + "running": { + "format": "int32", + "type": "integer", + "x-omitempty": false + }, + "unhealthy": { + "format": "int32", + "type": "integer", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1SpectroClustersMetadata": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1SpectroClustersMetadataSearch": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1SpectroClusterMetaSummary" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1SpectroClustersSummary": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1SpectroClusterSummary" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1SpectroClustersUsageComputeSpec": { + "description": "Cluster's usage compute spec", + "properties": { + "clusterUids": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "startTime": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1SpectroCoxEdgeClusterEntity": { + "description": "CoxEdge cluster request payload for create and update", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "cloudAccountUid": { + "description": "Cloud account uid to be used for cluster provisioning", + "type": "string" + }, + "cloudConfig": { + "$ref": "#/definitions/v1CoxEdgeClusterConfig" + }, + "cloudType": { + "type": "string" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1CoxEdgeMachinePoolConfigEntity" + }, + "type": "array" + }, + "policies": { + "$ref": "#/definitions/v1SpectroClusterPolicies" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "required": [ + "cloudType", + "cloudAccountUid", + "cloudConfig" + ], + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroCoxEdgeClusterRateEntity": { + "description": "Cox Edge cluster request payload for estimating rate", + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1CoxEdgeClusterConfig" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1CoxEdgeMachinePoolConfigEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroCustomClusterEntity": { + "description": "Custom cluster request payload for create and update", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "properties": { + "cloudAccountUid": { + "description": "Cloud account uid to be used for cluster provisioning", + "type": "string" + }, + "cloudConfig": { + "$ref": "#/definitions/v1CustomClusterConfig" + }, + "clusterConfig": { + "$ref": "#/definitions/v1CustomClusterConfigEntity", + "description": "General cluster configuration like patching settings, namespace resource allocation, rbac" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1CustomMachinePoolConfigEntity" + }, + "type": "array" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "required": [ + "cloudType", + "cloudAccountUid", + "cloudConfig" + ], + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroEdgeClusterEntity": { + "description": "Edge cluster request payload for create and update", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1EdgeClusterConfig" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1EdgeMachinePoolConfigEntity" + }, + "type": "array" + }, + "policies": { + "$ref": "#/definitions/v1SpectroClusterPolicies" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroEdgeClusterImportEntity": { + "description": "Spectro Edge cluster import request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1ImportClusterConfig" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroEdgeClusterRateEntity": { + "description": "Edge cluster request payload for estimating rate", + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1EdgeClusterConfig" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1EdgeMachinePoolConfigEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroEdgeNativeClusterEntity": { + "description": "EdgeNative cluster create or update request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1EdgeNativeClusterConfig" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfigParamEntity", + "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1EdgeNativeMachinePoolConfigEntity" + }, + "type": "array" + }, + "policies": { + "$ref": "#/definitions/v1SpectroClusterPolicies" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroEdgeNativeClusterImportEntity": { + "description": "Spectro EdgeNative cluster import request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1ImportClusterConfig" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroEdgeNativeClusterRateEntity": { + "description": "Edge-native cluster request payload for estimating rate", + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1EdgeNativeClusterConfig" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1EdgeNativeMachinePoolConfigEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroEksClusterEntity": { + "description": "Spectro EKS cluster request payload for create and update", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "cloudAccountUid": { + "description": "Cloud account uid to be used for cluster provisioning", + "type": "string" + }, + "cloudConfig": { + "$ref": "#/definitions/v1EksClusterConfig" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + }, + "fargateProfiles": { + "items": { + "$ref": "#/definitions/v1FargateProfile" + }, + "type": "array" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1EksMachinePoolConfigEntity" + }, + "type": "array" + }, + "policies": { + "$ref": "#/definitions/v1SpectroClusterPolicies" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "required": [ + "cloudAccountUid", + "cloudConfig" + ], + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroEksClusterRateEntity": { + "description": "Spectro EKS cluster request payload for estimating rate", + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1EksClusterConfig" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1EksMachinePoolConfigEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroGcpClusterEntity": { + "description": "GCP cluster request payload for create and update", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "cloudAccountUid": { + "description": "Cloud account uid to be used for cluster provisioning", + "type": "string" + }, + "cloudConfig": { + "$ref": "#/definitions/v1GcpClusterConfig" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1GcpMachinePoolConfigEntity" + }, + "type": "array" + }, + "policies": { + "$ref": "#/definitions/v1SpectroClusterPolicies" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "required": [ + "cloudType", + "cloudAccountUid", + "cloudConfig" + ], + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroGcpClusterImportEntity": { + "description": "Spectro GCP cluster import request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1ImportClusterConfig" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroGcpClusterRateEntity": { + "description": "Gcp cluster request payload for estimating rate", + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1GcpClusterConfig" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1GcpMachinePoolConfigEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroGenericClusterImportEntity": { + "description": "Spectro generic cluster import request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1ImportClusterConfig" + }, + "edgeConfig": { + "$ref": "#/definitions/v1ImportEdgeHostConfig" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroGenericClusterRateEntity": { + "description": "Generic cluster request payload for estimating rate", + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1GenericClusterConfig" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1GenericMachinePoolConfigEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroInstallerEntity": { + "description": "Spectro installer entity for create", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "cloudAccountUid": { + "type": "string" + }, + "privateGatewayUid": { + "type": "string" + }, + "spectroClusterUid": { + "type": "string" + } + }, + "type": "object" + }, + "status": { + "$ref": "#/definitions/v1InstallerStatus" + } + }, + "type": "object" + }, + "v1SpectroInstallerInputEntity": { + "description": "Spectro installer entity for create", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + } + }, + "type": "object" + }, + "v1SpectroInstallerStatus": { + "description": "spectro installer status", + "properties": { + "status": { + "$ref": "#/definitions/v1InstallerStatus" + } + }, + "type": "object" + }, + "v1SpectroInstallers": { + "description": "List Spectro installers", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1SpectroInstallerEntity" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "type": "object" + }, + "v1SpectroLibvirtClusterEntity": { + "description": "Libvirt cluster request payload for create and update", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1LibvirtClusterConfig" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1LibvirtMachinePoolConfigEntity" + }, + "type": "array" + }, + "policies": { + "$ref": "#/definitions/v1SpectroClusterPolicies" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroLibvirtClusterImportEntity": { + "description": "Spectro Libvirt cluster import request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1ImportClusterConfig" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroLibvirtClusterRateEntity": { + "description": "libvirt cluster request payload for estimating rate", + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1LibvirtClusterConfig" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1LibvirtMachinePoolConfigEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroMaasClusterEntity": { + "description": "Spectro Maas cluster request payload for create and update", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "cloudAccountUid": { + "description": "Cloud account uid to be used for cluster provisioning", + "type": "string" + }, + "cloudConfig": { + "$ref": "#/definitions/v1MaasClusterConfig" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1MaasMachinePoolConfigEntity" + }, + "type": "array" + }, + "policies": { + "$ref": "#/definitions/v1SpectroClusterPolicies" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "required": [ + "cloudType", + "cloudAccountUid", + "cloudConfig" + ], + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroMaasClusterImportEntity": { + "description": "Spectro maas cluster import request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1ImportClusterConfig" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroMaasClusterRateEntity": { + "description": "Maas cluster request payload for estimating rate", + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1MaasClusterConfig" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1MaasMachinePoolConfigEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroMgmt": { + "description": "Spectro management data", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1SpectroMgmtSpec" + }, + "status": { + "$ref": "#/definitions/v1SpectroMgmtStatus" + } + }, + "type": "object" + }, + "v1SpectroMgmtSpec": { + "description": "spectro management specifications", + "properties": { + "installerMode": { + "type": "string" + }, + "spectroClusterUid": { + "type": "string" + }, + "targetVersion": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "v1SpectroMgmtStatus": { + "description": "spectro management status information", + "properties": { + "appVersions": { + "items": { + "$ref": "#/definitions/v1AppVersion" + }, + "type": "array", + "uniqueItems": true + }, + "isFailed": { + "type": "boolean", + "x-omitempty": false + }, + "lastUpdatedTime": { + "$ref": "#/definitions/v1Time" + }, + "message": { + "type": "string" + }, + "messageLogs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "state": { + "type": "string" + }, + "upgradeHistory": { + "items": { + "$ref": "#/definitions/v1SpectroMgmtUpgrade" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1SpectroMgmtUpgrade": { + "description": "spectro management upgrade logs", + "properties": { + "upgradeTime": { + "$ref": "#/definitions/v1Time" + }, + "version": { + "type": "string" + } + } + }, + "v1SpectroMgmtUpgradePack": { + "description": "Spectro application management cluster upgrade pack information", + "properties": { + "diffMessage": { + "description": "Spectro application management cluster pack difference message", + "type": "string" + }, + "layer": { + "description": "Spectro application management cluster pack layer type", + "type": "string" + }, + "name": { + "description": "Spectro application management cluster pack name", + "type": "string" + }, + "registryUid": { + "description": "Spectro application management cluster pack registry unique identifier", + "type": "string" + }, + "type": { + "description": "Spectro application management cluster pack type", + "type": "string" + }, + "uid": { + "description": "Spectro application management cluster pack unique identifier", + "type": "string" + }, + "values": { + "description": "Spectro application management cluster pack values", + "type": "string" + }, + "version": { + "description": "Spectro application management cluster pack version", + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroMgmtUpgradeProfile": { + "description": "Spectro application management cluster upgrade pack information", + "properties": { + "packs": { + "description": "Spectro application management cluster upgrade packs", + "items": { + "$ref": "#/definitions/v1SpectroMgmtUpgradePack" + }, + "type": "array" + }, + "uid": { + "description": "Spectro application management cluster profile unique identifier", + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroMgmtUpgradeProfiles": { + "description": "Spectro application management cluster information", + "properties": { + "profiles": { + "description": "Spectro application management cluster profiles", + "items": { + "$ref": "#/definitions/v1SpectroMgmtUpgradeProfile" + }, + "type": "array" + }, + "version": { + "description": "Spectro application management cluster version", + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroMgmtUpgradeSpc": { + "description": "Spectro application management cluster upgrade profiles", + "properties": { + "current": { + "$ref": "#/definitions/v1SpectroMgmtUpgradeProfiles" + }, + "target": { + "$ref": "#/definitions/v1SpectroMgmtUpgradeProfiles" + } + }, + "type": "object" + }, + "v1SpectroOpenStackClusterEntity": { + "description": "OpenStack cluster request payload for create and update", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "cloudAccountUid": { + "description": "Cloud account uid to be used for cluster provisioning", + "type": "string" + }, + "cloudConfig": { + "$ref": "#/definitions/v1OpenStackClusterConfig" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1OpenStackMachinePoolConfigEntity" + }, + "type": "array" + }, + "policies": { + "$ref": "#/definitions/v1SpectroClusterPolicies" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "required": [ + "cloudAccountUid", + "cloudConfig" + ], + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroOpenStackClusterImportEntity": { + "description": "Spectro OpenStack cluster import request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1ImportClusterConfig" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroOpenStackClusterRateEntity": { + "description": "Openstack cluster request payload for estimating rate", + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1OpenStackClusterConfig" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1OpenStackMachinePoolConfigEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroTenantClusterMigration": { + "description": "Spectro tenant cluster migration status", + "properties": { + "message": { + "type": "string" + }, + "name": { + "type": "string" + }, + "state": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1SpectroTenantMigration": { + "description": "Spectro tenant migration status", + "properties": { + "clusters": { + "items": { + "$ref": "#/definitions/v1SpectroTenantClusterMigration" + }, + "type": "array", + "uniqueItems": true + }, + "state": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1SpectroTencentClusterEntity": { + "description": "Tencent cluster request payload for create and update", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "cloudAccountUid": { + "description": "Cloud account uid to be used for cluster provisioning", + "type": "string" + }, + "cloudConfig": { + "$ref": "#/definitions/v1TencentClusterConfig" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1TencentMachinePoolConfigEntity" + }, + "type": "array" + }, + "policies": { + "$ref": "#/definitions/v1SpectroClusterPolicies" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "required": [ + "cloudType", + "cloudAccountUid", + "cloudConfig" + ], + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroTencentClusterRateEntity": { + "description": "Spectro Tencent cluster request payload for estimating rate", + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1TencentClusterConfig" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1TencentMachinePoolConfigEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpectroVirtualClusterEntity": { + "description": "Spectro virtual cluster request payload for create and update", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1VirtualClusterConfig" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1VirtualMachinePoolConfigEntity" + }, + "type": "array" + }, + "policies": { + "$ref": "#/definitions/v1SpectroClusterPolicies" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "required": [ + "cloudType", + "clusterConfig" + ], + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroVsphereClusterEntity": { + "description": "vSphere cluster request payload for create and update", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "properties": { + "cloudAccountUid": { + "description": "Cloud account uid to be used for cluster provisioning", + "type": "string" + }, + "cloudConfig": { + "$ref": "#/definitions/v1VsphereClusterConfigEntity" + }, + "clusterConfig": { + "$ref": "#/definitions/v1ClusterConfigEntity", + "description": "General cluster configuration like health, patching settings, namespace resource allocation, rbac" + }, + "edgeHostUid": { + "description": "Appliance (Edge Host) uid for Edge env", + "type": "string" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1VsphereMachinePoolConfigEntity" + }, + "type": "array" + }, + "policies": { + "$ref": "#/definitions/v1SpectroClusterPolicies" + }, + "profiles": { + "items": { + "$ref": "#/definitions/v1SpectroClusterProfileEntity" + }, + "type": "array" + } + }, + "required": [ + "cloudConfig" + ], + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroVsphereClusterImportEntity": { + "description": "Spectro Vsphere cluster import request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1ImportClusterConfig" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SpectroVsphereClusterRateEntity": { + "description": "Vsphere cluster request payload for estimating rate", + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1VsphereClusterConfigEntity" + }, + "machinepoolconfig": { + "items": { + "$ref": "#/definitions/v1VsphereMachinePoolConfigEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1SpotMarketOptions": { + "description": "SpotMarketOptions defines the options available to a user when configuring Machines to run on Spot instances. Most users should provide an empty struct.", + "properties": { + "maxPrice": { + "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", + "type": "string" + } + }, + "type": "object" + }, + "v1SpotVMOptions": { + "description": "SpotVMOptions defines the options relevant to running the Machine on Spot VMs", + "properties": { + "maxPrice": { + "description": "MaxPrice defines the maximum price the user is willing to pay for Spot VM instances", + "type": "string" + } + }, + "type": "object" + }, + "v1SsoLogin": { + "description": "Describes the allowed sso login details", + "properties": { + "displayName": { + "description": "Describes the display name for the sso login", + "type": "string" + }, + "logo": { + "description": "Describes the url path for the sso login", + "type": "string" + }, + "name": { + "description": "Describes the processed name for the sso login", + "type": "string" + }, + "redirectUri": { + "description": "Describes the sso login url for the authentication", + "type": "string" + } + }, + "type": "object" + }, + "v1SsoLogins": { + "description": "Describes the allowed sso logins", + "items": { + "$ref": "#/definitions/v1SsoLogin" + }, + "type": "array", + "uniqueItems": true + }, + "v1StorageAccount": { + "description": "Azure storage account provides a unique namespace for your Azure resources", + "properties": { + "id": { + "description": "Fully qualified resource ID for the resource", + "type": "string" + }, + "kind": { + "description": "The kind of the resource", + "type": "string" + }, + "location": { + "description": "The geo-location where the resource lives", + "type": "string" + }, + "name": { + "description": "The name of the resource", + "type": "string" + } + }, + "type": "object" + }, + "v1StorageAccountEntity": { + "description": "Azure storage account entity", + "properties": { + "id": { + "description": "Azure storage account id", + "type": "string" + }, + "name": { + "description": "Azure storage account name", + "type": "string" + } + }, + "type": "object" + }, + "v1StorageContainer": { + "description": "Azure storage container organizes a set of blobs, similar to a directory in a file system", + "properties": { + "id": { + "description": "Fully qualified resource ID for the resource.", + "type": "string" + }, + "name": { + "description": "The name of the resource", + "type": "string" + }, + "type": { + "description": "The type of the resource. E.g. \"Microsoft.Compute/virtualMachines\"", + "type": "string" + } + }, + "type": "object" + }, + "v1StorageCost": { + "description": "Cloud storage cost", + "properties": { + "discountedUsage": { + "description": "Cloud storage upper limit which is free.", + "type": "string" + }, + "price": { + "description": "Array of cloud storage range prices", + "items": { + "$ref": "#/definitions/v1StoragePrice" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1StoragePrice": { + "description": "Cloud storage price within an upper limit.", + "properties": { + "limit": { + "description": "Upper limit of cloud storage usage", + "type": "string" + }, + "price": { + "description": "Price of cloud storage type", + "type": "string" + } + }, + "type": "object" + }, + "v1StorageRate": { + "description": "Storage estimated rate information", + "properties": { + "iops": { + "format": "float64", + "type": "number" + }, + "rate": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "sizeGB": { + "format": "float64", + "type": "number" + }, + "throughput": { + "format": "float64", + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "v1StorageType": { + "description": "Cloud cloud Storage type details", + "properties": { + "cost": { + "$ref": "#/definitions/v1StorageCost" + }, + "iopsCost": { + "$ref": "#/definitions/v1StorageCost" + }, + "kind": { + "description": "kind of storage type", + "type": "string" + }, + "name": { + "description": "Name of the storage type", + "type": "string" + }, + "throughputCost": { + "$ref": "#/definitions/v1StorageCost" + } + }, + "type": "object" + }, + "v1StripeKey": { + "description": "Stripe key object", + "properties": { + "publishKey": { + "description": "Publish stripe key", + "type": "string" + } + } + }, + "v1Subnet": { + "properties": { + "cidrBlock": { + "description": "CidrBlock is the CIDR block to be used when the provider creates a managed Vnet.", + "type": "string" + }, + "name": { + "type": "string" + }, + "securityGroupName": { + "description": "Network Security Group(NSG) to be attached to subnet. NSG for a control plane subnet, should allow inbound to port 6443, as port 6443 is used by kubeadm to bootstrap the control planes", + "type": "string" + } + }, + "type": "object" + }, + "v1Subscription": { + "description": "Azure Subscription Type", + "properties": { + "authorizationSource": { + "description": "The authorization source of the request. Valid values are one or more combinations of Legacy, RoleBased, Bypassed, Direct and Management", + "type": "string" + }, + "displayName": { + "description": "The subscription display name", + "type": "string" + }, + "state": { + "description": "The subscription state. Possible values are Enabled, Warned, PastDue, Disabled, and Deleted.", + "type": "string" + }, + "subscriptionId": { + "description": "The subscription ID", + "type": "string" + } + }, + "type": "object" + }, + "v1SyftDependency": { + "description": "Compliance Scan Syft Dependency", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "v1SyftDependencyEntity": { + "description": "Syft dependency", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "v1SyftEntity": { + "description": "Syft response", + "properties": { + "report": { + "$ref": "#/definitions/v1SyftReportEntity" + }, + "requestUid": { + "type": "string" + }, + "status": { + "enum": [ + "Completed", + "InProgress", + "Failed", + "Initiated" + ], + "type": "string" + } + }, + "required": [ + "requestUid", + "status", + "report" + ] + }, + "v1SyftImageContext": { + "description": "Compliance Scan Syft Image Context", + "properties": { + "containerName": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "podName": { + "type": "string" + } + } + }, + "v1SyftReport": { + "description": "Compliance Scan Syft Report", + "properties": { + "dependencies": { + "items": { + "$ref": "#/definitions/v1SyftDependency" + }, + "type": "array" + }, + "image": { + "type": "string" + }, + "imageContexts": { + "items": { + "$ref": "#/definitions/v1SyftImageContext" + }, + "type": "array" + }, + "isSBOMExist": { + "type": "boolean" + }, + "state": { + "type": "string" + }, + "time": { + "$ref": "#/definitions/v1Time" + }, + "vulnerabilities": { + "items": { + "$ref": "#/definitions/v1SyftVulnerability" + }, + "type": "array" + }, + "vulnerabilitySummary": { + "$ref": "#/definitions/v1SyftVulnerabilitySummary" + } + } + }, + "v1SyftReportEntity": { + "description": "Syft report", + "properties": { + "batchNo": { + "format": "int32", + "type": "integer" + }, + "batchSize": { + "format": "int32", + "type": "integer" + }, + "dependencies": { + "items": { + "$ref": "#/definitions/v1SyftDependencyEntity" + }, + "type": "array" + }, + "image": { + "type": "string" + }, + "imageContexts": { + "items": { + "$ref": "#/definitions/v1SyftImageContext" + }, + "type": "array" + }, + "sbom": { + "type": "string" + }, + "time": { + "$ref": "#/definitions/v1Time" + }, + "vulnerabilities": { + "items": { + "$ref": "#/definitions/v1SyftVulnerabilityEntity" + }, + "type": "array" + }, + "vulnerabilitySummary": { + "$ref": "#/definitions/v1SyftVulnerabilitySummaryEntity" + } + } + }, + "v1SyftScanContext": { + "description": "Compliance Scan Syft Context", + "properties": { + "format": { + "type": "string" + }, + "labelSelector": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "podName": { + "type": "string" + }, + "scope": { + "type": "string" + } + } + }, + "v1SyftVulnerability": { + "description": "Compliance Scan Syft Vulnerability", + "properties": { + "fixedIn": { + "type": "string" + }, + "installed": { + "type": "string" + }, + "name": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "type": { + "type": "string" + }, + "vulnerability": { + "type": "string" + } + } + }, + "v1SyftVulnerabilityEntity": { + "description": "Syft vulnerability", + "properties": { + "fixedIn": { + "type": "string" + }, + "installed": { + "type": "string" + }, + "name": { + "type": "string" + }, + "severity": { + "type": "string" + }, + "type": { + "type": "string" + }, + "vulnerability": { + "type": "string" + } + } + }, + "v1SyftVulnerabilitySummary": { + "description": "Compliance Scan Syft Vulnerability Summary", + "properties": { + "critical": { + "format": "int32", + "type": "integer" + }, + "high": { + "format": "int32", + "type": "integer" + }, + "low": { + "format": "int32", + "type": "integer" + }, + "medium": { + "format": "int32", + "type": "integer" + }, + "negligible": { + "format": "int32", + "type": "integer" + }, + "unknown": { + "format": "int32", + "type": "integer" + } + } + }, + "v1SyftVulnerabilitySummaryEntity": { + "description": "Syft vulnerability summary", + "properties": { + "critical": { + "format": "int32", + "type": "integer" + }, + "high": { + "format": "int32", + "type": "integer" + }, + "low": { + "format": "int32", + "type": "integer" + }, + "medium": { + "format": "int32", + "type": "integer" + }, + "negligible": { + "format": "int32", + "type": "integer" + }, + "unknown": { + "format": "int32", + "type": "integer" + } + } + }, + "v1SysLogin": { + "description": "System admin login input", + "properties": { + "emailId": { + "type": "string" + }, + "password": { + "format": "password", + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "v1SysUserToken": { + "description": "Auth token response", + "properties": { + "Authorization": { + "type": "string" + }, + "IsEmailSet": { + "type": "boolean", + "x-omitempty": false + }, + "IsEmailVerified": { + "type": "boolean", + "x-omitempty": false + }, + "IsMfa": { + "type": "boolean", + "x-omitempty": false + }, + "IsPasswordReset": { + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1SystemAdmin": { + "description": "System Admin information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1SystemAdministratorSpec" + }, + "status": { + "$ref": "#/definitions/v1SystemAdministratorStatus" + } + }, + "type": "object" + }, + "v1SystemAdminActivation": { + "description": "System Administrator Activation Specification", + "properties": { + "expiry": { + "$ref": "#/definitions/v1Time" + }, + "link": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemAdminEntity": { + "description": "System Admin information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "$ref": "#/definitions/v1SystemAdministratorSpec" + } + }, + "type": "object" + }, + "v1SystemAdminMfa": { + "description": "System Administrator MFA configuration", + "properties": { + "devices": { + "items": { + "type": "string" + }, + "type": "array" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemAdminProfile": { + "description": "System Administrator Profile Entity", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "$ref": "#/definitions/v1SystemAdminProfileSpec" + } + }, + "type": "object" + }, + "v1SystemAdminProfileSpec": { + "description": "System Administrator Profile Specification", + "properties": { + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemAdministratorSpec": { + "description": "System Administrator Entity Specification", + "properties": { + "adminType": { + "enum": [ + "AccountAdmin", + "OperationAdmin" + ], + "type": "string" + }, + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "mfa": { + "$ref": "#/definitions/v1SystemAdminMfa", + "type": "string" + } + }, + "required": [ + "firstName", + "lastName", + "emailId", + "adminType" + ], + "type": "object" + }, + "v1SystemAdministratorStatus": { + "description": "System Administrator Status", + "properties": { + "activation": { + "$ref": "#/definitions/v1SystemAdminActivation" + }, + "createdBy": { + "type": "string" + }, + "lastPasswordUpdate": { + "$ref": "#/definitions/v1Time" + }, + "lastSignIn": { + "$ref": "#/definitions/v1Time" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemAdmins": { + "description": "List of System Admin information's", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1SystemAdmin" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1SystemAwsAccount": { + "description": "SystemAdmin", + "properties": { + "spec": { + "$ref": "#/definitions/v1SystemAwsSpec" + } + }, + "type": "object" + }, + "v1SystemAwsImage": { + "description": "SystemAdmin", + "properties": { + "spec": { + "$ref": "#/definitions/v1SystemAwsImageSpec" + } + }, + "type": "object" + }, + "v1SystemAwsImageSpec": { + "description": "system aws account specifications", + "properties": { + "goldenImageRegion": { + "type": "string" + } + } + }, + "v1SystemAwsSpec": { + "description": "system aws account specifications", + "properties": { + "accessKey": { + "type": "string" + }, + "secretKey": { + "type": "string" + } + } + }, + "v1SystemAwsStsAccount": { + "description": "System AWS Gov account specifications", + "properties": { + "accessKey": { + "type": "string" + }, + "accountId": { + "type": "string" + }, + "secretKey": { + "type": "string" + } + } + }, + "v1SystemAzureAccount": { + "description": "SystemAdmin", + "properties": { + "spec": { + "$ref": "#/definitions/v1SystemAzureSpec" + } + }, + "type": "object" + }, + "v1SystemAzureSpec": { + "description": "system azure account specifications", + "properties": { + "clientId": { + "type": "string" + }, + "clientSecret": { + "type": "string" + }, + "subscriptionId": { + "type": "string" + }, + "tenantId": { + "type": "string" + } + } + }, + "v1SystemAzureStorage": { + "description": "SystemAdmin", + "properties": { + "spec": { + "$ref": "#/definitions/v1SystemAzureStorageSpec" + } + }, + "type": "object" + }, + "v1SystemAzureStorageSpec": { + "description": "system aws account specifications", + "properties": { + "accessKey": { + "type": "string" + }, + "container": { + "type": "string" + }, + "storageName": { + "type": "string" + } + } + }, + "v1SystemBackupConfigSpec": { + "description": "system backup config spec", + "properties": { + "ftp": { + "$ref": "#/definitions/v1SystemFtpSpec" + }, + "hourOfTheDay": { + "type": "integer", + "x-omitempty": false + }, + "interval": { + "type": "integer", + "x-omitempty": false + }, + "retentionPeriod": { + "type": "integer", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1SystemBackupFtpConfigSpec": { + "description": "system backup config spec", + "properties": { + "backupSpec": { + "$ref": "#/definitions/v1SystemBackupSpec" + }, + "ftp": { + "$ref": "#/definitions/v1SystemFtpSpec" + } + }, + "type": "object" + }, + "v1SystemBackupS3ConfigSpec": { + "description": "system backup config spec", + "properties": { + "backupSpec": { + "$ref": "#/definitions/v1SystemBackupSpec" + }, + "s3": { + "$ref": "#/definitions/v1SystemS3Spec" + } + }, + "type": "object" + }, + "v1SystemBackupSpec": { + "description": "system backup config spec", + "properties": { + "hourOfTheDay": { + "type": "integer", + "x-omitempty": false + }, + "interval": { + "type": "integer", + "x-omitempty": false + }, + "retentionPeriod": { + "type": "integer", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1SystemCertificateSpec": { + "description": "system smtp config spec", + "properties": { + "caCert": { + "type": "string" + }, + "crt": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" + }, + "key": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemConfigAuth": { + "description": "System config auth", + "properties": { + "enforceServiceAuthToken": { + "type": "boolean", + "x-omitempty": false + }, + "enforceTlsVerify": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1SystemConfigCluster": { + "description": "System config cluster", + "properties": { + "stableEndpointAccess": { + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1SystemConfigDomainSpec": { + "description": "system domain config spec", + "properties": { + "apiServer": { + "type": "string" + }, + "derivedApiServer": { + "type": "string" + }, + "derivedRootDomain": { + "type": "string" + }, + "rootDomain": { + "type": "string" + }, + "urlProtocol": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemConfigStoreEntity": { + "properties": { + "key": { + "type": "string", + "x-omitempty": false + }, + "value": { + "type": "string", + "x-omitempty": false + } + }, + "required": [ + "key", + "value" + ], + "type": "object" + }, + "v1SystemCryptoData": { + "description": "SystemAdmin", + "properties": { + "input": { + "type": "string" + }, + "result": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemCryptoInput": { + "description": "SystemAdmin", + "properties": { + "input": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemEdgeImage": { + "description": "SystemAdmin", + "properties": { + "spec": { + "$ref": "#/definitions/v1SystemEdgeImageSpec" + } + }, + "type": "object" + }, + "v1SystemEdgeImageSpec": { + "description": "system edge account specifications", + "properties": { + "caCert": { + "type": "string" + }, + "imagesHostEndpoint": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" + } + } + }, + "v1SystemEdgeNativeImage": { + "description": "SystemAdmin", + "properties": { + "spec": { + "$ref": "#/definitions/v1SystemEdgeNativeImageSpec" + } + }, + "type": "object" + }, + "v1SystemEdgeNativeImageSpec": { + "description": "system edge-native account specifications", + "properties": { + "caCert": { + "type": "string" + }, + "imagesHostEndpoint": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" + }, + "stylusImagesEndpoint": { + "type": "string" + } + } + }, + "v1SystemFtpSpec": { + "description": "system ftp config spec", + "properties": { + "dir": { + "type": "string", + "x-omitempty": false + }, + "password": { + "type": "string", + "x-omitempty": false + }, + "server": { + "type": "string", + "x-omitempty": false + }, + "username": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1SystemGcpAccount": { + "description": "SystemAdmin", + "properties": { + "spec": { + "$ref": "#/definitions/v1SystemGcpSpec" + } + }, + "type": "object" + }, + "v1SystemGcpImage": { + "description": "SystemAdmin", + "properties": { + "spec": { + "$ref": "#/definitions/v1SystemGcpImageSpec" + } + }, + "type": "object" + }, + "v1SystemGcpImageSpec": { + "description": "system gcp account specifications", + "properties": { + "imageProject": { + "type": "string" + } + } + }, + "v1SystemGcpSpec": { + "description": "system gcp account specifications", + "properties": { + "json": { + "type": "string" + } + } + }, + "v1SystemGitAuthSpec": { + "description": "system git auth account specifications", + "properties": { + "_type": { + "type": "string" + }, + "password": { + "type": "string" + }, + "token": { + "type": "string" + }, + "username": { + "$ref": "#/definitions/v1SystemGitAuthSpec" + } + } + }, + "v1SystemGithubSsoSpec": { + "description": "system sso github config spec", + "properties": { + "clientId": { + "type": "string" + }, + "clientSecretKey": { + "type": "string" + }, + "isEnabled": { + "type": "boolean" + }, + "logoUrl": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1SystemKubectlSpec": { + "description": "system web kubectl config spec", + "properties": { + "endpoint": { + "type": "string" + }, + "isEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "v1SystemLibvirtImage": { + "description": "SystemAdmin", + "properties": { + "spec": { + "$ref": "#/definitions/v1SystemLibvirtImageSpec" + } + }, + "type": "object" + }, + "v1SystemLibvirtImageSpec": { + "description": "system libvirt account specifications", + "properties": { + "caCert": { + "type": "string" + }, + "imagesHostEndpoint": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" + } + } + }, + "v1SystemLoggerSpec": { + "description": "system logger config spec", + "properties": { + "format": { + "type": "string" + }, + "level": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemMaasImage": { + "description": "SystemAdmin", + "properties": { + "spec": { + "$ref": "#/definitions/v1SystemMaasImageSpec" + } + }, + "type": "object" + }, + "v1SystemMaasImageSpec": { + "description": "system maas account specifications", + "properties": { + "caCert": { + "type": "string" + }, + "imagesHostEndpoint": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" + } + } + }, + "v1SystemOciImageRegistry": { + "description": "system web kubectl config spec", + "properties": { + "baseContentPath": { + "type": "string" + }, + "caCert": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" + }, + "mirrorRegistries": { + "type": "string" + }, + "name": { + "type": "string" + }, + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemOidcClaims": { + "properties": { + "Email": { + "type": "string", + "x-omitempty": false + }, + "FirstName": { + "type": "string", + "x-omitempty": false + }, + "LastName": { + "type": "string", + "x-omitempty": false + }, + "SpectroTeam": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1SystemOidcClientSpec": { + "description": "system sso oidc config spec", + "properties": { + "callbackUrl": { + "type": "string", + "x-omitempty": false + }, + "clientId": { + "type": "string", + "x-omitempty": false + }, + "clientSecret": { + "type": "string", + "x-omitempty": false + }, + "isEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "issuerUrl": { + "description": "the issuer is the URL identifier for the service", + "type": "string", + "x-omitempty": false + }, + "logoUrl": { + "type": "string", + "x-omitempty": false + }, + "requiredClaims": { + "$ref": "#/definitions/v1SystemOidcClaims" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1SystemOpenstackImage": { + "description": "SystemAdmin", + "properties": { + "spec": { + "$ref": "#/definitions/v1SystemOpenstackImageSpec" + } + }, + "type": "object" + }, + "v1SystemOpenstackImageSpec": { + "description": "system openstack account specifications", + "properties": { + "imagesHostEndpoint": { + "type": "string" + } + } + }, + "v1SystemPasswordPolicySpec": { + "description": "system password policy", + "properties": { + "creationTimestamp": { + "$ref": "#/definitions/v1Time" + }, + "expiryDurationInDays": { + "type": "integer" + }, + "firstReminderInDays": { + "type": "integer" + }, + "isRegex": { + "type": "boolean" + }, + "minLength": { + "type": "integer" + }, + "minNumOfBlockLetters": { + "type": "integer" + }, + "minNumOfDigits": { + "type": "integer" + }, + "minNumOfSmallLetters": { + "type": "integer" + }, + "minNumOfSpecialCharacters": { + "type": "integer" + }, + "regex": { + "type": "string" + }, + "reminderFrequency": { + "type": "integer" + }, + "updateTimestamp": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1SystemPlan": { + "description": "system plan", + "properties": { + "freeCredits": { + "items": { + "$ref": "#/definitions/v1SystemPlanCredit" + }, + "type": "array" + }, + "planLimit": { + "$ref": "#/definitions/v1SystemPlanLimit" + }, + "slaCredits": { + "items": { + "$ref": "#/definitions/v1SystemPlanCredit" + }, + "type": "array" + }, + "systemStartDate": { + "$ref": "#/definitions/v1Time" + } + } + }, + "v1SystemPlanCredit": { + "description": "Plan Credit", + "properties": { + "cpuCoreHours": { + "format": "int64", + "type": "number", + "x-omitempty": false + }, + "creditUid": { + "type": "string" + }, + "expiry": { + "$ref": "#/definitions/v1Time", + "description": "credit expiry time" + }, + "name": { + "type": "string" + }, + "start": { + "$ref": "#/definitions/v1Time", + "description": "credit start time" + }, + "type": { + "enum": [ + "Pure", + "Alloy" + ], + "type": "string" + } + }, + "required": [ + "type" + ] + }, + "v1SystemPlanLimit": { + "description": "System Monthly Plan Limit", + "properties": { + "alloy": { + "$ref": "#/definitions/v1SystemPlanLimitSpec" + }, + "isUnlimited": { + "description": "is unlimited cpu core hours", + "type": "boolean", + "x-omitempty": false + }, + "pure": { + "$ref": "#/definitions/v1SystemPlanLimitSpec" + } + } + }, + "v1SystemPlanLimitSpec": { + "description": "Monthly Plan Limit spec", + "properties": { + "cpuCoreHours": { + "description": "cpu cores hours", + "format": "int64", + "type": "integer", + "x-omitempty": false + }, + "overageLimitPercentage": { + "default": 25, + "description": "overage limit in percentage", + "format": "int8", + "type": "integer", + "x-omitempty": false + }, + "warnLimitPercentage": { + "default": 90, + "description": "warning limit in percentage", + "format": "int8", + "type": "integer", + "x-omitempty": false + } + } + }, + "v1SystemPlanLimitUpdate": { + "description": "System Plan limit change update entity", + "properties": { + "planLimit": { + "$ref": "#/definitions/v1SystemPlanLimit" + } + } + }, + "v1SystemProductUsage": { + "description": "Yearly usage", + "properties": { + "allocatedCredits": { + "description": "Allocated credits", + "format": "int64", + "type": "number" + }, + "breachedCredits": { + "description": "Credits exceeded the allocated and free credits", + "format": "float64", + "type": "number" + }, + "freeSlaCredits": { + "description": "Free allocated SLA credits", + "format": "int64", + "type": "number" + }, + "usedCredits": { + "description": "Used credits", + "format": "float64", + "type": "number" + } + } + }, + "v1SystemProxySpec": { + "description": "system proxy config spec", + "properties": { + "httpProxy": { + "type": "string" + }, + "httpsProxy": { + "type": "string" + }, + "noProxy": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemRateLimit": { + "description": "system rate-limit", + "properties": { + "isActive": { + "type": "boolean" + } + } + }, + "v1SystemRegistry": { + "description": "Registry configuration", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1RegistryConf" + } + }, + "type": "object" + }, + "v1SystemResourceLimit": { + "properties": { + "kind": { + "$ref": "#/definitions/v1ResourceLimitType", + "type": "string", + "x-omitempty": false + }, + "limit": { + "format": "int64", + "type": "number", + "x-omitempty": false + } + } + }, + "v1SystemResourceLimits": { + "description": "System resource limits. Supported resources keys are 'user','project','apiKey','team','role','cloudaccount','clusterprofile','workspace','registry','privategateway','location','certificate','macro','sshkey','alert','spectrocluster','edgehost'.", + "properties": { + "resources": { + "items": { + "$ref": "#/definitions/v1SystemResourceLimit" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1SystemRetentionPolicy": { + "description": "system retention policy", + "properties": { + "retentionPeriod": { + "type": "integer", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1SystemReverseProxy": { + "description": "system config reverse proxy", + "properties": { + "caCert": { + "type": "string" + }, + "clientCert": { + "type": "string" + }, + "clientKey": { + "type": "string" + }, + "port": { + "type": "integer" + }, + "protocol": { + "enum": [ + "http", + "https" + ], + "type": "string" + }, + "server": { + "type": "string" + }, + "vHostPort": { + "type": "integer" + } + } + }, + "v1SystemS3Spec": { + "description": "system backup s3 storage config spec", + "properties": { + "accessKey": { + "type": "string", + "x-omitempty": false + }, + "bucket": { + "type": "string", + "x-omitempty": false + }, + "folder": { + "type": "string", + "x-omitempty": false + }, + "region": { + "type": "string", + "x-omitempty": false + }, + "secretKey": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1SystemScarSpec": { + "description": "system scar config spec", + "properties": { + "baseContentPath": { + "type": "string" + }, + "caCert": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "insecureVerify": { + "type": "boolean" + }, + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemScarValidationResponse": { + "description": "system proxy config spec", + "properties": { + "spectroVersion": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemSecurityMode": { + "description": "System service mode", + "properties": { + "securityMode": { + "type": "string" + } + } + }, + "v1SystemServiceLogin": { + "description": "System service login input", + "properties": { + "authToken": { + "description": "authToken helps in two step verification for the authorization.", + "type": "string" + }, + "isSystem": { + "type": "boolean" + }, + "overlordUid": { + "type": "string" + }, + "serviceName": { + "type": "string" + }, + "serviceVersion": { + "type": "string" + }, + "spectroClusterUid": { + "type": "string" + }, + "tenantUid": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemSmtpSpec": { + "description": "system smtp config spec", + "properties": { + "fromEmailId": { + "type": "string" + }, + "insecureSkipVerifyTls": { + "type": "boolean" + }, + "password": { + "type": "string" + }, + "smtpPort": { + "type": "integer" + }, + "smtpServer": { + "type": "string" + }, + "userName": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemSsoAuthSpec": { + "description": "system sso config spec", + "properties": { + "github": { + "$ref": "#/definitions/v1SystemGithubSsoSpec" + }, + "oidcAuthSpecs": { + "additionalProperties": { + "$ref": "#/definitions/v1SystemOidcClientSpec" + }, + "type": "object" + } + }, + "type": "object" + }, + "v1SystemSsoSpec": { + "description": "system sso config spec", + "properties": { + "acsUrlRoot": { + "type": "string" + }, + "acsUrlScheme": { + "type": "string" + }, + "apiVersion": { + "type": "string" + }, + "audienceUrl": { + "type": "string" + }, + "authSpec": { + "$ref": "#/definitions/v1SystemSsoAuthSpec" + }, + "entityId": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemStartDate": { + "description": "system start date", + "properties": { + "systemStartDate": { + "$ref": "#/definitions/v1Time" + } + } + }, + "v1SystemStorageS3ConfigSpec": { + "description": "system storage s3 config spec", + "properties": { + "isEnabled": { + "type": "boolean" + }, + "retentionPolicy": { + "$ref": "#/definitions/v1SystemRetentionPolicy" + }, + "s3": { + "$ref": "#/definitions/v1SystemS3Spec" + } + }, + "type": "object" + }, + "v1SystemTencentAccount": { + "description": "SystemAdmin", + "properties": { + "spec": { + "$ref": "#/definitions/v1SystemTencentSpec" + } + }, + "type": "object" + }, + "v1SystemTencentSpec": { + "description": "system tencent account specifications", + "properties": { + "secretId": { + "type": "string" + }, + "secretKey": { + "type": "string" + } + } + }, + "v1SystemTimeseriesMetrics": { + "description": "system timeseries metrics config", + "properties": { + "archivalInterval": { + "type": "integer" + }, + "batchInterval": { + "type": "integer" + }, + "enabled": { + "type": "boolean", + "x-omitempty": false + }, + "retentionPeriod": { + "type": "integer" + } + }, + "type": "object" + }, + "v1SystemTimeseriesSpec": { + "description": "system timeseries config spec", + "properties": { + "machine": { + "$ref": "#/definitions/v1SystemTimeseriesMetrics" + }, + "pod": { + "$ref": "#/definitions/v1SystemTimeseriesMetrics" + } + }, + "type": "object" + }, + "v1SystemUsage": { + "description": "System usage billing object", + "properties": { + "planLimit": { + "$ref": "#/definitions/v1PlanLimit" + }, + "usageBillingPeriod": { + "$ref": "#/definitions/v1InvoiceBillingPeriod" + }, + "yearlyUsages": { + "description": "List of every year system usage", + "items": { + "$ref": "#/definitions/v1YearlyUsage" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1SystemUserMe": { + "description": "User information wrt permissions", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1SystemUserSpec" + }, + "status": { + "$ref": "#/definitions/v1SystemUserMeStatus" + } + }, + "type": "object" + }, + "v1SystemUserMeStatus": { + "description": "User status with permissions", + "properties": { + "isEmailSet": { + "type": "boolean", + "x-omitempty": false + }, + "isEmailVerified": { + "type": "boolean", + "x-omitempty": false + }, + "isMfaEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "isPasswordReset": { + "type": "boolean", + "x-omitempty": false + }, + "lastEmailUpdateTime": { + "$ref": "#/definitions/v1Time" + }, + "lastEmailVerifiedTime": { + "$ref": "#/definitions/v1Time" + }, + "lastLoginTime": { + "$ref": "#/definitions/v1Time" + }, + "lastPasswordUpdateTime": { + "$ref": "#/definitions/v1Time" + } + } + }, + "v1SystemUserSpec": { + "description": "User specifications", + "properties": { + "adminType": { + "description": "Admin type", + "type": "string" + }, + "emailId": { + "description": "System User's email id", + "type": "string" + } + } + }, + "v1SystemVersionInfo": { + "description": "system version info", + "properties": { + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1SystemVsphereImage": { + "description": "SystemAdmin", + "properties": { + "spec": { + "$ref": "#/definitions/v1SystemVsphereImageSpec" + } + }, + "type": "object" + }, + "v1SystemVsphereImageSpec": { + "description": "system vsphere account specifications", + "properties": { + "caCert": { + "type": "string" + }, + "imagesHostEndpoint": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "boolean" + }, + "overlordOvaLocation": { + "type": "string" + } + } + }, + "v1TagFilter": { + "description": "Tag Filter create spec", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "$ref": "#/definitions/v1TagFilterSpec" + } + }, + "type": "object" + }, + "v1TagFilterGroup": { + "properties": { + "conjunction": { + "$ref": "#/definitions/v1SearchFilterConjunctionOperator" + }, + "filters": { + "items": { + "$ref": "#/definitions/v1TagFilterItem" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1TagFilterItem": { + "properties": { + "key": { + "type": "string" + }, + "negation": { + "type": "boolean" + }, + "operator": { + "$ref": "#/definitions/v1SearchFilterKeyValueOperator" + }, + "values": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1TagFilterSpec": { + "description": "Filter create spec", + "properties": { + "filterGroup": { + "$ref": "#/definitions/v1TagFilterGroup" + } + }, + "type": "object" + }, + "v1TagFilterSummary": { + "description": "Filter summary object", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1TagFilterSpec" + } + }, + "type": "object" + }, + "v1Taint": { + "description": "Taint", + "properties": { + "effect": { + "enum": [ + "NoSchedule", + "PreferNoSchedule", + "NoExecute" + ], + "type": "string" + }, + "key": { + "description": "The taint key to be applied to a node", + "type": "string" + }, + "timeAdded": { + "$ref": "#/definitions/v1Time" + }, + "value": { + "description": "The taint value corresponding to the taint key.", + "type": "string" + } + }, + "type": "object" + }, + "v1Team": { + "description": "Team information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1TeamSpec" + }, + "status": { + "$ref": "#/definitions/v1TeamStatus" + } + }, + "type": "object" + }, + "v1TeamPatch": { + "items": { + "$ref": "#/definitions/v1HttpPatch" + }, + "type": "array" + }, + "v1TeamRoleMap": { + "properties": { + "roles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "teamId": { + "type": "string" + } + } + }, + "v1TeamSpec": { + "description": "Team specifications", + "properties": { + "roles": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "sources": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "users": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1TeamSpecSummary": { + "properties": { + "emailId": { + "type": "string" + }, + "projects": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + }, + "roles": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + }, + "users": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1TeamStatus": { + "description": "Team status", + "type": "object" + }, + "v1TeamSummary": { + "description": "Team summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1TeamSpecSummary" + }, + "status": { + "$ref": "#/definitions/v1TeamStatus" + } + }, + "type": "object" + }, + "v1TeamSummarySortFields": { + "enum": [ + "name", + "creationTimestamp" + ], + "type": "string", + "x-nullable": true + }, + "v1TeamSummarySortSpec": { + "properties": { + "field": { + "$ref": "#/definitions/v1TeamSummarySortFields" + }, + "order": { + "$ref": "#/definitions/v1SortOrder" + } + } + }, + "v1TeamTenantRolesEntity": { + "properties": { + "roles": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1TeamTenantRolesUpdate": { + "properties": { + "roles": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1Teams": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1Team" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1TeamsBatch": { + "items": { + "$ref": "#/definitions/v1Team" + }, + "type": "array", + "uniqueItems": true + }, + "v1TeamsFilterSpec": { + "description": "Teams filter spec", + "properties": { + "name": { + "$ref": "#/definitions/v1FilterString" + } + } + }, + "v1TeamsMetadata": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1ObjectEntity" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1TeamsSummary": { + "description": "Deprecated, Use v1UsersSummaryList - Returns User summary", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1TeamSummary" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1TeamsSummaryList": { + "description": "Returns Team summary", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1TeamSummary" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1TeamsSummarySpec": { + "description": "Teams filter summary spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1TeamsFilterSpec" + }, + "sort": { + "items": { + "$ref": "#/definitions/v1TeamSummarySortSpec" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1Tenant": { + "description": "Tenant", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1TenantSpec" + }, + "status": { + "$ref": "#/definitions/v1TenantStatus" + } + }, + "type": "object" + }, + "v1TenantActivate": { + "description": "Activate/Deactivate tenant", + "properties": { + "isActive": { + "default": true, + "type": "boolean" + } + }, + "type": "object" + }, + "v1TenantActivity": { + "description": "Active tenant and clusters data", + "properties": { + "clustersInfo": { + "$ref": "#/definitions/v1ClustersInfo" + }, + "org": { + "type": "string" + }, + "planType": { + "type": "string" + }, + "totalProjects": { + "format": "int64", + "type": "number" + }, + "totalUsers": { + "format": "int64", + "type": "number" + }, + "uid": { + "type": "string" + }, + "users": { + "items": { + "$ref": "#/definitions/v1UserActivityInfo" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1TenantAddressPatch": { + "description": "Tenant Address", + "properties": { + "address": { + "$ref": "#/definitions/v1Address" + } + }, + "type": "object" + }, + "v1TenantAssetCert": { + "description": "tenant cert", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1Cert" + } + }, + "type": "object" + }, + "v1TenantAssetCerts": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1TenantAssetCert" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1TenantBasicEntity": { + "description": "Tenant Basic param", + "properties": { + "emailId": { + "type": "string" + }, + "orgName": { + "type": "string" + } + }, + "type": "object" + }, + "v1TenantCleanUpStatus": { + "description": "Tenant CleanUp Status", + "properties": { + "cleanUpError": { + "type": "string" + }, + "cleanUpStages": { + "type": "string" + }, + "cleanUpTimestamp": { + "$ref": "#/definitions/v1Time" + }, + "cleanedResources": { + "items": { + "type": "string" + }, + "type": "array" + }, + "isCompleted": { + "type": "boolean", + "x-omitempty": false + }, + "isInProgress": { + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1TenantClusterSettings": { + "properties": { + "nodesAutoRemediationSetting": { + "$ref": "#/definitions/v1NodesAutoRemediationSettings" + } + } + }, + "v1TenantContractSpec": { + "description": "Tenant contract settings", + "properties": { + "acceptedTime": { + "$ref": "#/definitions/v1Time", + "description": "If the contract is accepted offline, set the accepted time" + }, + "isAccepted": { + "description": "If the contract is accepted offline, then set this field to true", + "type": "boolean" + }, + "isRequired": { + "description": "Is the contract required, for on-prem installation it will be false", + "type": "boolean" + } + }, + "required": [ + "isRequired", + "isAccepted" + ], + "type": "object" + }, + "v1TenantDomains": { + "description": "Tenant domains", + "properties": { + "domains": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1TenantEmailPatch": { + "description": "Tenant EmailId", + "properties": { + "emailId": { + "type": "string" + } + }, + "type": "object" + }, + "v1TenantEnableClusterGroup": { + "description": "Enable or Disable cluster group for a tenant", + "properties": { + "hideSystemClusterGroups": { + "type": "boolean", + "x-omitempty": false + }, + "isClusterGroupEnabled": { + "description": "Deprecated. Use hideSystemClusterGroups field", + "type": "boolean", + "x-omitempty": false + } + } + }, + "v1TenantEntity": { + "description": "Tenant Entity", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1TenantSpecEntity" + } + }, + "type": "object" + }, + "v1TenantFreemium": { + "description": "Tenant freemium configuration", + "properties": { + "activeClustersLimit": { + "type": "integer", + "x-omitempty": false + }, + "isFreemium": { + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "type": "boolean", + "x-omitempty": false + }, + "overageUsageLimit": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "totalUsageLimit": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + } + }, + "v1TenantFreemiumUsage": { + "properties": { + "isFreemium": { + "type": "boolean", + "x-omitempty": false + }, + "isUnlimited": { + "type": "boolean", + "x-omitempty": false + }, + "limit": { + "$ref": "#/definitions/v1FreemiumUsageLimit" + }, + "usage": { + "$ref": "#/definitions/v1FreemiumUsage" + } + }, + "type": "object" + }, + "v1TenantOidcClaims": { + "properties": { + "Email": { + "type": "string", + "x-omitempty": false + }, + "FirstName": { + "type": "string", + "x-omitempty": false + }, + "LastName": { + "type": "string", + "x-omitempty": false + }, + "SpectroTeam": { + "type": "string", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1TenantOidcClientSpec": { + "description": "Tenant", + "properties": { + "callbackUrl": { + "type": "string", + "x-omitempty": false + }, + "clientId": { + "type": "string", + "x-omitempty": false + }, + "clientSecret": { + "type": "string", + "x-omitempty": false + }, + "defaultTeams": { + "items": { + "type": "string" + }, + "type": "array", + "x-omitempty": false + }, + "isSsoEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "issuerUrl": { + "description": "the issuer is the URL identifier for the service", + "type": "string", + "x-omitempty": false + }, + "logoutUrl": { + "type": "string", + "x-omitempty": false + }, + "requiredClaims": { + "$ref": "#/definitions/v1TenantOidcClaims" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array", + "x-omitempty": false + }, + "scopesDelimiter": { + "type": "string", + "x-omitempty": false + }, + "syncSsoTeams": { + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1TenantPasswordPolicyEntity": { + "description": "Tenant Password Policy Entity", + "properties": { + "creationTimestamp": { + "$ref": "#/definitions/v1Time" + }, + "expiryDurationInDays": { + "type": "integer" + }, + "firstReminderInDays": { + "type": "integer" + }, + "isRegex": { + "type": "boolean" + }, + "minLength": { + "type": "integer" + }, + "minNumOfBlockLetters": { + "type": "integer" + }, + "minNumOfDigits": { + "type": "integer" + }, + "minNumOfSmallLetters": { + "type": "integer" + }, + "minNumOfSpecialCharacters": { + "type": "integer" + }, + "regex": { + "type": "string" + }, + "updateTimestamp": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1TenantResourceLimit": { + "properties": { + "kind": { + "$ref": "#/definitions/v1ResourceLimitType", + "type": "string" + }, + "label": { + "type": "string" + }, + "limit": { + "format": "int64", + "type": "number", + "x-omitempty": false + } + } + }, + "v1TenantResourceLimitEntity": { + "properties": { + "kind": { + "$ref": "#/definitions/v1ResourceLimitType", + "type": "string", + "x-omitempty": false + }, + "limit": { + "format": "int64", + "type": "number", + "x-omitempty": false + } + } + }, + "v1TenantResourceLimits": { + "description": "Tenant resource limits", + "properties": { + "resources": { + "items": { + "$ref": "#/definitions/v1TenantResourceLimit" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1TenantResourceLimitsEntity": { + "description": "Tenant resource limits. Supported resources keys are 'user','project','apiKey','team','role','cloudaccount','clusterprofile','workspace','registry','privategateway','location','certificate','macro','sshkey','alert','spectrocluster','edgehost'.", + "properties": { + "resources": { + "items": { + "$ref": "#/definitions/v1TenantResourceLimitEntity" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1TenantSamlRequestSpec": { + "description": "Tenant", + "properties": { + "attributes": { + "items": { + "$ref": "#/definitions/v1TenantSamlSpecAttribute" + }, + "type": "array" + }, + "defaultTeams": { + "items": { + "type": "string" + }, + "type": "array" + }, + "federationMetadata": { + "type": "string" + }, + "identityProvider": { + "type": "string" + }, + "isSingleLogoutEnabled": { + "type": "boolean" + }, + "isSsoEnabled": { + "type": "boolean" + }, + "nameIdFormat": { + "type": "string" + }, + "syncSsoTeams": { + "type": "boolean" + } + }, + "type": "object" + }, + "v1TenantSamlSpec": { + "description": "Tenant", + "properties": { + "acsUrl": { + "type": "string" + }, + "attributes": { + "items": { + "$ref": "#/definitions/v1TenantSamlSpecAttribute" + }, + "type": "array" + }, + "audienceUrl": { + "description": "same as entity id", + "type": "string" + }, + "certificate": { + "description": "certificate for slo", + "type": "string" + }, + "defaultTeams": { + "items": { + "type": "string" + }, + "type": "array" + }, + "entityId": { + "type": "string" + }, + "federationMetadata": { + "type": "string" + }, + "identityProvider": { + "type": "string" + }, + "isSingleLogoutEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "isSsoEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "issuer": { + "description": "same as entity id", + "type": "string" + }, + "nameIdFormat": { + "type": "string" + }, + "serviceProviderMetadata": { + "type": "string" + }, + "singleLogoutUrl": { + "description": "slo url", + "type": "string", + "x-omitempty": false + }, + "syncSsoTeams": { + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1TenantSamlSpecAttribute": { + "properties": { + "attributeValue": { + "type": "string" + }, + "mappedAttribute": { + "type": "string" + }, + "name": { + "type": "string" + }, + "nameFormat": { + "type": "string" + } + }, + "type": "object" + }, + "v1TenantSelfSignUpSpec": { + "description": "Tenant sign up data", + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "loginMode": { + "default": "devops", + "enum": [ + "dev", + "devops" + ], + "type": "string" + }, + "notifyTenantAdmin": { + "type": "boolean" + }, + "orgName": { + "type": "string" + } + }, + "required": [ + "firstName", + "lastName", + "emailId", + "orgName" + ], + "type": "object" + }, + "v1TenantSpec": { + "description": "Tenant Spec", + "properties": { + "address": { + "$ref": "#/definitions/v1Address" + }, + "authType": { + "type": "string" + }, + "defaultLoginMode": { + "type": "string" + }, + "orgEmailId": { + "type": "string" + }, + "orgName": { + "type": "string" + }, + "planUid": { + "type": "string" + } + }, + "type": "object" + }, + "v1TenantSpecEntity": { + "description": "Tenant Entity input", + "properties": { + "address": { + "$ref": "#/definitions/v1Address" + }, + "authType": { + "type": "string" + }, + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "loginMode": { + "default": "devops", + "enum": [ + "dev", + "devops" + ], + "type": "string" + }, + "orgEmailId": { + "type": "string" + }, + "orgName": { + "type": "string" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ssoApp": { + "type": "string" + } + }, + "type": "object" + }, + "v1TenantSsoAuthProvidersEntity": { + "properties": { + "isEnabled": { + "type": "boolean", + "x-omitempty": false + }, + "ssoLogins": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1TenantStatus": { + "description": "Tenant Status", + "properties": { + "cleanUpStatus": { + "$ref": "#/definitions/v1TenantCleanUpStatus" + }, + "isActive": { + "type": "boolean", + "x-omitempty": false + }, + "toBeDeleted": { + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1TenantUpgradeSettingsEntity": { + "properties": { + "enableLock": { + "type": "boolean", + "x-omitempty": false + }, + "supportedVersionsRange": { + "type": "integer", + "x-omitempty": false + } + } + }, + "v1TenantUsage": { + "description": "Tenant usage object", + "properties": { + "orgName": { + "description": "Organization name", + "type": "string" + }, + "tenantUid": { + "description": "Tenant uid", + "type": "string" + }, + "usedAlloyCredits": { + "description": "Credits used by imported clusters", + "format": "float64", + "type": "number" + }, + "usedPureCredits": { + "description": "Credits used by managed clusters", + "format": "float64", + "type": "number" + } + } + }, + "v1Tenants": { + "description": "Tenants list", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1Tenant" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1TenantsAccountsNas": { + "properties": { + "failures": { + "items": { + "type": "string" + }, + "type": "array" + }, + "success": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1TenantsActivities": { + "description": "Active tenants and clusters data", + "properties": { + "tenants": { + "additionalProperties": { + "$ref": "#/definitions/v1TenantActivity" + }, + "type": "object" + } + }, + "type": "object" + }, + "v1TencentAccount": { + "description": "Tencent cloud account information", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the account.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1TencentCloudAccount" + }, + "status": { + "$ref": "#/definitions/v1CloudAccountStatus" + } + }, + "type": "object" + }, + "v1TencentAccounts": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1TencentAccount" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1TencentAvailabilityZone": { + "description": "Tencent availability zone", + "properties": { + "name": { + "description": "Tencent availability zone name", + "type": "string" + }, + "state": { + "description": "Tencent availability zone state", + "type": "string" + }, + "zoneId": { + "description": "Tencent availability zone id", + "type": "string" + } + }, + "type": "object" + }, + "v1TencentAvailabilityZones": { + "description": "List of Tencent Availability zones", + "properties": { + "zones": { + "items": { + "$ref": "#/definitions/v1TencentAvailabilityZone" + }, + "type": "array" + } + }, + "required": [ + "zones" + ], + "type": "object" + }, + "v1TencentCloudAccount": { + "properties": { + "secretId": { + "description": "Tencent api secretID", + "type": "string" + }, + "secretKey": { + "description": "Tencent api secret key", + "type": "string" + } + }, + "required": [ + "secretId", + "secretKey" + ], + "type": "object" + }, + "v1TencentCloudClusterConfigEntity": { + "description": "Tencent cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1TencentClusterConfig" + } + }, + "type": "object" + }, + "v1TencentCloudConfig": { + "description": "TencentCloudConfig is the Schema for the tencentcloudconfigs API", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1TencentCloudConfigSpec" + } + }, + "type": "object" + }, + "v1TencentCloudConfigSpec": { + "description": "TencentCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec/machinespec for cluster-api", + "properties": { + "cloudAccountRef": { + "$ref": "#/definitions/v1ObjectReference", + "description": "cloudAccountRef should point to the secret which contains TencentCloudAccount" + }, + "clusterConfig": { + "$ref": "#/definitions/v1TencentClusterConfig" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1TencentMachinePoolConfig" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1TencentClusterConfig": { + "description": "Cluster level configuration for tencent cloud and applicable for all the machine pools", + "properties": { + "endpointAccess": { + "$ref": "#/definitions/v1TkeEndpointAccess", + "description": "Endpoints specifies access to this cluster's control plane endpoints" + }, + "region": { + "type": "string" + }, + "sshKeyIDs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "vpcID": { + "description": "VPC Id to deploy cluster into should have one public and one private subnet for the the cluster creation, this field is optional, If VPC Id is not provided a fully managed VPC will be created", + "type": "string" + } + }, + "required": [ + "region" + ], + "type": "object" + }, + "v1TencentInstanceTypes": { + "description": "List of Tencent instance types", + "properties": { + "instanceTypes": { + "items": { + "$ref": "#/definitions/v1InstanceType" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1TencentKeypair": { + "description": "Tencent Keypair entity", + "properties": { + "id": { + "description": "Tencent keypair id", + "type": "string" + }, + "name": { + "description": "Tencent keypair name", + "type": "string" + }, + "publickey": { + "description": "Tencent public key", + "type": "string" + } + }, + "type": "object" + }, + "v1TencentKeypairs": { + "description": "List of Tencent keypairs", + "properties": { + "keypairs": { + "items": { + "$ref": "#/definitions/v1TencentKeypair" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1TencentMachine": { + "description": "Tencent cloud VM definition", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the machine.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1TencentMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudMachineStatus" + } + }, + "type": "object" + }, + "v1TencentMachinePoolCloudConfigEntity": { + "properties": { + "azs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "instanceType": { + "description": "instance type", + "type": "string" + }, + "rootDeviceSize": { + "description": "rootDeviceSize in GBs", + "format": "int64", + "maximum": 2000, + "minimum": 1, + "type": "integer" + }, + "subnetIds": { + "additionalProperties": { + "type": "string" + }, + "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment", + "type": "object" + } + }, + "type": "object" + }, + "v1TencentMachinePoolConfig": { + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalLabels", + "type": "object" + }, + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", + "type": "object" + }, + "azs": { + "description": "AZs is only used for dynamic placement", + "items": { + "type": "string" + }, + "type": "array" + }, + "instanceConfig": { + "$ref": "#/definitions/v1InstanceConfig" + }, + "instanceType": { + "description": "instance type", + "type": "string" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean" + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "machinePoolProperties": { + "$ref": "#/definitions/v1MachinePoolProperties" + }, + "maxSize": { + "description": "max size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "minSize": { + "description": "min size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "nodeRepaveInterval": { + "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", + "format": "int32", + "type": "integer" + }, + "rootDeviceSize": { + "description": "rootDeviceSize in GBs", + "format": "int64", + "type": "integer" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "subnetIds": { + "additionalProperties": { + "type": "string" + }, + "description": "AZ to subnet mapping filled by ally from hubble SubnetIDs [\"ap-guangzhou-6\"] = \"subnet-079b6061\" This field is optional If we don't provide a subnetId then by default the first subnet from the AZ will be picked up for deployment", + "type": "object" + }, + "taints": { + "description": "master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array" + }, + "updateStrategy": { + "$ref": "#/definitions/v1UpdateStrategy", + "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" + } + }, + "type": "object" + }, + "v1TencentMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1TencentMachinePoolCloudConfigEntity" + }, + "poolConfig": { + "$ref": "#/definitions/v1MachinePoolConfigEntity" + } + }, + "required": [ + "cloudConfig" + ], + "type": "object" + }, + "v1TencentMachineSpec": { + "description": "Tencent cloud VM definition spec", + "properties": { + "dnsName": { + "type": "string" + }, + "imageId": { + "type": "string" + }, + "instanceType": { + "type": "string" + }, + "nics": { + "items": { + "$ref": "#/definitions/v1TencentNic" + }, + "type": "array" + }, + "securityGroups": { + "items": { + "type": "string" + }, + "type": "array" + }, + "subnetId": { + "type": "string" + }, + "type": { + "type": "string" + }, + "vpcId": { + "type": "string" + }, + "zoneId": { + "type": "string" + } + }, + "required": [ + "nics", + "instanceType", + "imageId" + ], + "type": "object" + }, + "v1TencentMachines": { + "description": "Tencent machine list", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1TencentMachine" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1TencentNic": { + "description": "Tencent network interface", + "properties": { + "index": { + "format": "int8", + "type": "integer" + }, + "privateIPs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "publicIp": { + "type": "string" + } + }, + "type": "object" + }, + "v1TencentRegion": { + "description": "Tencent region entity", + "properties": { + "name": { + "description": "Name of tencent region", + "type": "string" + }, + "state": { + "description": "State of tencent region", + "type": "string" + } + }, + "type": "object" + }, + "v1TencentRegions": { + "description": "List of tencent regions", + "properties": { + "regions": { + "description": "Tencent regions entity", + "items": { + "$ref": "#/definitions/v1TencentRegion" + }, + "type": "array" + } + }, + "required": [ + "regions" + ], + "type": "object" + }, + "v1TencentSecurityGroup": { + "description": "Tencent Security Group. A security group is a virtual firewall that features stateful data packet filtering", + "properties": { + "id": { + "description": "Tencent security group id", + "type": "string" + }, + "isDefault": { + "description": "Whether it is the default security group, the default security group does not support deletion.", + "type": "boolean" + }, + "name": { + "description": "Tencent security group name", + "type": "string" + }, + "projectId": { + "description": "Tencent security group associated to a project", + "type": "string" + } + }, + "type": "object" + }, + "v1TencentSecurityGroups": { + "description": "List of Tencent security groups", + "properties": { + "groups": { + "items": { + "$ref": "#/definitions/v1TencentSecurityGroup" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1TencentStorageTypes": { + "description": "List of Tencent storage types", + "properties": { + "storageTypes": { + "items": { + "$ref": "#/definitions/v1StorageType" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1TencentSubnet": { + "description": "Tencent Subnet entity", + "properties": { + "az": { + "description": "Availability zone associated with tencent subnet", + "type": "string" + }, + "cidrBlock": { + "description": "Tencent subnet CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32", + "type": "string" + }, + "name": { + "description": "Tencent subnet name", + "type": "string" + }, + "subnetId": { + "description": "Tencent subnet id", + "type": "string" + } + }, + "type": "object" + }, + "v1TencentVpc": { + "description": "Tencent VPC entity", + "properties": { + "cidrBlock": { + "description": "Tencent VPC CIDR. The CIDR notation consists of an IP address, a slash character ('/') and a decimal number from 0 to 32", + "type": "string" + }, + "name": { + "description": "Tencent VPC name", + "type": "string" + }, + "subnets": { + "items": { + "$ref": "#/definitions/v1TencentSubnet" + }, + "type": "array" + }, + "vpcId": { + "description": "Tencent VPC id", + "type": "string" + } + }, + "required": [ + "vpcId" + ], + "type": "object" + }, + "v1TencentVpcs": { + "description": "List of Tencent VPCs", + "properties": { + "vpcs": { + "items": { + "$ref": "#/definitions/v1TencentVpc" + }, + "type": "array" + } + }, + "required": [ + "vpcs" + ], + "type": "object" + }, + "v1TierPrice": { + "description": "tier price", + "properties": { + "alloyPricing": { + "items": { + "$ref": "#/definitions/v1PriceRange" + }, + "type": "array", + "uniqueItems": true + }, + "purePricing": { + "items": { + "$ref": "#/definitions/v1PriceRange" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1Time": { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "format": "date-time", + "type": "string" + }, + "v1TkeEndpointAccess": { + "description": "TKEEndpointAccess specifies how control plane endpoints are accessible", + "properties": { + "IsExtranet": { + "description": "IsExtranet Whether it is external network access (TRUE external network access FALSE internal network access, default value: FALSE)", + "type": "boolean" + }, + "private": { + "description": "Private points VPC-internal control plane access to the private endpoint", + "type": "boolean" + }, + "privateCIDR": { + "description": "Deprecated. PrivateCIDRs specifies which blocks can access the public endpoint", + "type": "string" + }, + "public": { + "description": "Public controls whether control plane endpoints are publicly accessible", + "type": "boolean" + }, + "publicCIDRs": { + "description": "Deprecated. PublicCIDRs specifies which blocks can access the public endpoint", + "items": { + "type": "string" + }, + "type": "array" + }, + "securityGroup": { + "description": "Tencent security group", + "type": "string" + }, + "subnetId": { + "description": "Tencent Subnet", + "type": "string" + } + }, + "type": "object" + }, + "v1TlsConfiguration": { + "description": "TLS configuration", + "properties": { + "ca": { + "type": "string" + }, + "certificate": { + "type": "string" + }, + "enabled": { + "type": "boolean", + "x-omitempty": false + }, + "insecureSkipVerify": { + "type": "boolean", + "x-omitempty": false + }, + "key": { + "type": "string" + } + }, + "type": "object" + }, + "v1TotalClusterRate": { + "description": "Cluster total estimated rate information", + "properties": { + "compute": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "storage": { + "format": "float64", + "type": "number", + "x-omitempty": false + }, + "total": { + "format": "float64", + "type": "number", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1TotalResourceUsage": { + "description": "Total Resource Usage", + "properties": { + "projects": { + "items": { + "$ref": "#/definitions/v1ProjectResourceUsage" + }, + "type": "array", + "uniqueItems": true + }, + "totalAlloyCpuCoreHours": { + "type": "number", + "x-omitempty": false + }, + "totalPureCpuCoreHours": { + "type": "number", + "x-omitempty": false + } + } + }, + "v1TransferJob": { + "description": "transfer job details", + "properties": { + "finishTime": { + "$ref": "#/definitions/v1Time" + }, + "folder": { + "type": "string" + }, + "isCompleted": { + "type": "boolean" + }, + "message": { + "items": { + "type": "string" + }, + "type": "array" + }, + "startTime": { + "$ref": "#/definitions/v1Time" + }, + "state": { + "type": "string" + }, + "status": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1Uid": { + "properties": { + "uid": { + "type": "string" + } + }, + "required": [ + "uid" + ], + "type": "object" + }, + "v1UidRoleSummary": { + "properties": { + "inheritedRoles": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "roles": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1UidSummary": { + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1Uids": { + "items": { + "$ref": "#/definitions/v1Uid" + }, + "type": "array", + "uniqueItems": true + }, + "v1UpdateStrategy": { + "description": "UpdatesStrategy will be used to translate to RollingUpdateStrategy of a MachineDeployment We'll start with default values for the translation, can expose more details later Following is details of parameters translated from the type ScaleOut => maxSurge=1, maxUnavailable=0 ScaleIn => maxSurge=0, maxUnavailable=1", + "properties": { + "type": { + "description": "update strategy, either ScaleOut or ScaleIn if empty, will default to RollingUpdateScaleOut", + "enum": [ + "RollingUpdateScaleOut", + "RollingUpdateScaleIn" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1UpdateTenantStatus": { + "description": "Update tenant status", + "properties": { + "errorMessage": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "stage": { + "type": "string" + } + }, + "type": "object" + }, + "v1Updated": { + "description": "The resource was updated successfully" + }, + "v1UpdatedMsg": { + "description": "Update response with message", + "properties": { + "msg": { + "type": "string" + } + } + }, + "v1Upgrades": { + "description": "Upgrades represent the reason of the last upgrade that took place", + "properties": { + "reason": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timestamp": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1User": { + "description": "User", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1UserSpec" + }, + "status": { + "$ref": "#/definitions/v1UserStatus" + } + }, + "type": "object" + }, + "v1UserActivateInfo": { + "properties": { + "passwordToken": { + "type": "string" + } + }, + "type": "object" + }, + "v1UserActivateLink": { + "properties": { + "activationLink": { + "type": "string" + } + }, + "type": "object" + }, + "v1UserActivityInfo": { + "description": "Active user data", + "properties": { + "lastLogin": { + "type": "string" + }, + "lastLoginTimestamp": { + "$ref": "#/definitions/v1Time" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1UserAssetSsh": { + "description": "SSH key information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1UserAssetSshSpec" + } + }, + "type": "object" + }, + "v1UserAssetSshEntity": { + "description": "SSH Key request payload", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "$ref": "#/definitions/v1UserAssetSshSpec" + } + }, + "type": "object" + }, + "v1UserAssetSshSpec": { + "description": "SSH key specification", + "properties": { + "publicKey": { + "type": "string" + } + }, + "type": "object" + }, + "v1UserAssetsLocation": { + "description": "Location object", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1UserAssetsLocationSpec" + } + }, + "type": "object" + }, + "v1UserAssetsLocationAzure": { + "description": "Azure location object", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "$ref": "#/definitions/v1UserAssetsLocationAzureSpec" + } + }, + "type": "object" + }, + "v1UserAssetsLocationAzureSpec": { + "description": "Azure location specification", + "properties": { + "config": { + "$ref": "#/definitions/v1AzureStorageConfig" + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "Azure location type [azure]", + "type": "string" + } + }, + "required": [ + "config" + ], + "type": "object" + }, + "v1UserAssetsLocationGcp": { + "description": "GCP location object", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "$ref": "#/definitions/v1UserAssetsLocationGcpSpec" + } + }, + "type": "object" + }, + "v1UserAssetsLocationGcpSpec": { + "description": "GCP location specification", + "properties": { + "config": { + "$ref": "#/definitions/v1GcpStorageConfig" + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "GCP location type [gcp]", + "type": "string" + } + }, + "required": [ + "config" + ], + "type": "object" + }, + "v1UserAssetsLocationS3": { + "description": "S3 location object", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + }, + "spec": { + "$ref": "#/definitions/v1UserAssetsLocationS3Spec" + } + }, + "type": "object" + }, + "v1UserAssetsLocationS3Spec": { + "description": "S3 location specification", + "properties": { + "config": { + "$ref": "#/definitions/v1S3StorageConfig" + }, + "isDefault": { + "description": "Set to 'true', if location has to be set as default", + "type": "boolean" + }, + "type": { + "description": "S3 location type [s3/minio]", + "type": "string" + } + }, + "required": [ + "config" + ], + "type": "object" + }, + "v1UserAssetsLocationSpec": { + "description": "Location specification", + "properties": { + "isDefault": { + "type": "boolean" + }, + "storage": { + "$ref": "#/definitions/v1LocationType" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "v1UserAssetsLocations": { + "properties": { + "items": { + "description": "List of locations", + "items": { + "$ref": "#/definitions/v1UserAssetsLocation" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1UserAssetsSsh": { + "properties": { + "items": { + "description": "List of SSH keys", + "items": { + "$ref": "#/definitions/v1UserAssetSsh" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1UserAuthenticatedUrl": { + "description": "Returns the Authenticated redirect Url for the palette oidc", + "properties": { + "redirectUrl": { + "description": "authenticated redirect Url for the palette oidc", + "type": "string" + } + }, + "type": "object" + }, + "v1UserEntity": { + "description": "User", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1UserSpecEntity" + } + }, + "type": "object" + }, + "v1UserInfoResponse": { + "properties": { + "address": { + "description": "End-User's preferred postal address", + "type": "string" + }, + "birthdate": { + "description": "End-User's birthday, represented as an ISO 8601:2004 [ISO8601‑2004] YYYY-MM-DD format", + "type": "string" + }, + "email": { + "description": "End-User's preferred e-mail address", + "type": "string" + }, + "email_verified": { + "description": "User at the time the verification was performed", + "type": "boolean" + }, + "family_name": { + "description": "Surname(s) or last name(s) of the End-User", + "type": "string" + }, + "gender": { + "description": "End-User's gender", + "type": "string" + }, + "given_name": { + "description": "Given name(s) or first name(s) of the End-User", + "type": "string" + }, + "locale": { + "description": "End-User's locale, represented as a BCP47 [RFC5646] language tag", + "type": "string" + }, + "middle_name": { + "description": "Middle name(s) of the End-User", + "type": "string" + }, + "name": { + "description": "End-User's full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User's locale and preferences", + "type": "string" + }, + "nickname": { + "description": "Casual name of the End-User that may or may not be the same as the given_name", + "type": "string" + }, + "phone_number": { + "description": "End-User's preferred telephone number", + "type": "string" + }, + "phone_number_verified": { + "description": "User at the time the verification was performed", + "type": "boolean" + }, + "picture": { + "description": "URL of the End-User's profile picture", + "type": "string" + }, + "preferred_username": { + "description": "Shorthand name by which the End-User wishes to be referred to at the RP, such as janedoe or j.doe", + "type": "string" + }, + "profile": { + "description": "URL of the End-User's profile page", + "type": "string" + }, + "sub": { + "description": "Subject - Identifier for the End-User at the Issuer", + "type": "string" + }, + "updated_at": { + "description": "Time the End-User's information was last updated", + "type": "integer" + }, + "website": { + "description": "URL of the End-User's Web page or blog", + "type": "string" + }, + "zoneinfo": { + "description": "String from zoneinfo [zoneinfo] time zone database representing the End-User's time zone", + "type": "string" + } + }, + "type": "object" + }, + "v1UserKubectlSession": { + "properties": { + "clusterUid": { + "type": "string" + }, + "creationTime": { + "type": "string" + }, + "isActive": { + "type": "boolean" + }, + "podIp": { + "type": "string" + }, + "podName": { + "type": "string" + }, + "port": { + "type": "string" + }, + "projectUid": { + "type": "string" + }, + "sessionUid": { + "type": "string" + }, + "shellyCluster": { + "type": "string" + }, + "tenantClusterEndpoint": { + "type": "string" + }, + "userName": { + "type": "string" + }, + "userUid": { + "type": "string" + } + }, + "type": "object" + }, + "v1UserMe": { + "description": "User information wrt permissions", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1UserSpec" + }, + "status": { + "$ref": "#/definitions/v1UserMeStatus" + } + }, + "type": "object" + }, + "v1UserMeStatus": { + "description": "User status with permissions", + "properties": { + "activationLink": { + "description": "Contains activation link for the user", + "type": "string" + }, + "isActive": { + "description": "Specifies if user account is active/disabled", + "type": "boolean" + }, + "isContractAccepted": { + "description": "Specifies if user account has accepted the contract", + "type": "boolean", + "x-omitempty": false + }, + "loginMode": { + "description": "User's login Mode", + "type": "string" + }, + "projectPermissions": { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": "object" + }, + "tenant": { + "$ref": "#/definitions/v1UserMeTenant", + "description": "users's tenant information" + }, + "tenantPermissions": { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": "object" + } + } + }, + "v1UserMeTenant": { + "properties": { + "orgName": { + "type": "string" + }, + "tenantUid": { + "type": "string" + } + }, + "type": "object" + }, + "v1UserMeta": { + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "org": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1UserMetaEntity": { + "description": "User meta entity", + "properties": { + "emailId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1UserPatch": { + "items": { + "$ref": "#/definitions/v1HttpPatch" + }, + "type": "array" + }, + "v1UserProfile": { + "description": "User Profile", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1UserProfileSpec" + }, + "status": { + "$ref": "#/definitions/v1UserProfileStatus" + } + }, + "type": "object" + }, + "v1UserProfileSpec": { + "description": "User Profile specifications", + "properties": { + "emailId": { + "description": "User's email id", + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + } + } + }, + "v1UserProfileStatus": { + "description": "User Profile status", + "properties": { + "lastPasswordPolicyMail": { + "$ref": "#/definitions/v1Time", + "description": "user's last password policy time" + }, + "lastPasswordUpdate": { + "$ref": "#/definitions/v1Time", + "description": "user's last password update time" + } + } + }, + "v1UserProfiles": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1UserProfile" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1UserRoleMap": { + "properties": { + "roles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "userId": { + "type": "string" + } + } + }, + "v1UserRoleUIDs": { + "properties": { + "roles": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1UserRolesEntity": { + "properties": { + "inheritedRoles": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + }, + "roles": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1UserRsaToken": { + "description": "Rsa Auth token response", + "properties": { + "token": { + "type": "string" + } + }, + "type": "object" + }, + "v1UserSpec": { + "description": "User specifications", + "properties": { + "emailId": { + "description": "User's email id", + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1UserSpecEntity": { + "description": "User Entity input", + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "loginMode": { + "type": "string" + }, + "roles": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "teams": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1UserSpecSummary": { + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "projects": { + "description": "Deprecated.", + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + }, + "projectsCount": { + "format": "int32", + "type": "integer", + "x-omitempty": false + }, + "roles": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + }, + "teams": { + "items": { + "$ref": "#/definitions/v1UidSummary" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1UserStatus": { + "description": "User status", + "properties": { + "activationLink": { + "description": "provides the link to activate or reset the user password", + "type": "string", + "x-omitempty": false + }, + "isActive": { + "description": "Specifies if user account is active/disabled", + "type": "boolean", + "x-omitempty": false + }, + "isPasswordResetting": { + "description": "Specifies if user in multi org requested password reset", + "type": "boolean", + "x-omitempty": false + }, + "lastSignIn": { + "$ref": "#/definitions/v1Time", + "description": "user's last sign in time" + } + } + }, + "v1UserStatusLoginMode": { + "properties": { + "loginMode": { + "enum": [ + "dev", + "devops" + ], + "type": "string" + } + }, + "type": "object" + }, + "v1UserSummary": { + "description": "User summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1UserSpecSummary" + }, + "status": { + "$ref": "#/definitions/v1UserStatus" + } + }, + "type": "object" + }, + "v1UserSummarySortFields": { + "enum": [ + "name", + "creationTimestamp" + ], + "type": "string", + "x-nullable": true + }, + "v1UserSummarySortSpec": { + "properties": { + "field": { + "$ref": "#/definitions/v1UserSummarySortFields" + }, + "order": { + "$ref": "#/definitions/v1SortOrder" + } + } + }, + "v1UserToken": { + "description": "Returns the Authorization token. To be used for further api calls", + "properties": { + "Authorization": { + "description": "Describes the authentication token in jwt format.", + "type": "string" + }, + "isMfa": { + "description": "Indicates the authentication flow using MFA", + "type": "boolean", + "x-omitempty": false + } + }, + "type": "object" + }, + "v1UserUpdateEntity": { + "description": "User", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1UserUpdateSpecEntity" + } + }, + "type": "object" + }, + "v1UserUpdateSpecEntity": { + "description": "User Entity input", + "properties": { + "emailId": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "roles": { + "description": "Deprecated. Use 'v1/users/{uid}/roles' API to assign roles.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1Users": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1User" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1UsersFilterSpec": { + "description": "Users filter spec", + "properties": { + "emailId": { + "$ref": "#/definitions/v1FilterString" + }, + "name": { + "$ref": "#/definitions/v1FilterString" + } + } + }, + "v1UsersMetadata": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1UserMetaEntity" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1UsersSummary": { + "description": "Deprecated, Use v1UsersSummaryList - Returns User summary", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1UserSummary" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1UsersSummaryList": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1UserSummary" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1UsersSummarySpec": { + "description": "Users filter summary spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1UsersFilterSpec" + }, + "sort": { + "items": { + "$ref": "#/definitions/v1UserSummarySortSpec" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1V1SystemAdminEmail": { + "description": "SystemAdmin", + "properties": { + "email": { + "type": "string" + }, + "insecureVerify": { + "type": "boolean" + }, + "password": { + "type": "string" + } + }, + "type": "object" + }, + "v1V1SystemAdminPasswordResetEntity": { + "description": "SystemAdmin", + "properties": { + "email": { + "type": "string" + }, + "newPassword": { + "type": "string" + }, + "oldPassword": { + "type": "string" + } + }, + "type": "object" + }, + "v1VMAddVolumeEntity": { + "properties": { + "addVolumeOptions": { + "$ref": "#/definitions/v1VmAddVolumeOptions", + "description": "Parameters required to add volume to virtual machine/virtual machine instance" + }, + "dataVolumeTemplate": { + "$ref": "#/definitions/v1VmDataVolumeTemplateSpec", + "description": "dataVolumeTemplates is a list of dataVolumes that the VirtualMachineInstance template can reference. DataVolumes in this list are dynamically created for the VirtualMachine and are tied to the VirtualMachine's life-cycle." + }, + "persist": { + "description": "If 'true' add the disk to the Virtual Machine & Virtual Machine Instance, else add the disk to the Virtual Machine Instance only", + "type": "boolean" + } + }, + "required": [ + "addVolumeOptions" + ], + "type": "object" + }, + "v1VMCluster": { + "description": "VM Dashboard enabled Spectro cluster", + "properties": { + "metadata": { + "properties": { + "name": { + "type": "string" + }, + "projectUid": { + "type": "string" + }, + "uid": { + "type": "string" + } + } + }, + "spec": { + "description": "Spectro cluster spec", + "properties": { + "cloudType": { + "type": "string" + } + }, + "type": "object" + }, + "status": { + "description": "Spectro cluster status", + "properties": { + "clusterState": { + "type": "string" + } + } + } + }, + "type": "object" + }, + "v1VMClusters": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1VMCluster" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1VMRemoveVolumeEntity": { + "properties": { + "persist": { + "description": "If 'true' remove the disk from the Virtual Machine & Virtual Machine Instance, else remove the disk from the Virtual Machine Instance only", + "type": "boolean" + }, + "removeVolumeOptions": { + "$ref": "#/definitions/v1VmRemoveVolumeOptions", + "description": "Parameters required to remove volume from virtual machine/virtual machine instance" + } + }, + "required": [ + "removeVolumeOptions" + ], + "type": "object" + }, + "v1Variable": { + "description": "Unique variable field with schema definition", + "properties": { + "defaultValue": { + "description": "The default value of the variable", + "type": "string" + }, + "description": { + "description": "Variable description", + "type": "string" + }, + "displayName": { + "description": "Unique display name of the variable", + "type": "string" + }, + "format": { + "$ref": "#/definitions/v1VariableFormat" + }, + "hidden": { + "description": "If true, then variable will be hidden for overriding the value. By default the hidden flag will be set to false", + "type": "boolean", + "x-omitempty": false + }, + "immutable": { + "description": "If true, then variable value can't be editable. By default the immutable flag will be set to false", + "type": "boolean", + "x-omitempty": false + }, + "isSensitive": { + "description": "If true, then default value will be masked. By default the isSensitive flag will be set to false", + "type": "boolean", + "x-omitempty": false + }, + "name": { + "description": "Variable name", + "type": "string" + }, + "regex": { + "description": "Regular expression pattern which the variable value must match", + "type": "string" + }, + "required": { + "description": "Flag to specify if the variable is optional or mandatory. If it is mandatory then default value must be provided", + "type": "boolean", + "x-omitempty": false + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1VariableFormat": { + "default": "string", + "description": "Format type of the variable value", + "enum": [ + "string", + "number", + "boolean", + "ipv4", + "ipv4cidr", + "ipv6", + "version" + ], + "type": "string" + }, + "v1VariableNames": { + "properties": { + "variables": { + "description": "Array of variable names", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "variables" + ] + }, + "v1Variables": { + "properties": { + "variables": { + "description": "List of unique variable fields with schema constraints", + "items": { + "$ref": "#/definitions/v1Variable" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1Virtual": { + "properties": { + "appDeployments": { + "description": "list of apps deployed on the virtual cluster", + "items": { + "$ref": "#/definitions/v1ObjectResReference" + }, + "type": "array" + }, + "clusterGroup": { + "$ref": "#/definitions/v1ObjectResReference", + "description": "cluster group details of virtual cluster" + }, + "hostCluster": { + "$ref": "#/definitions/v1ObjectResReference", + "description": "host cluster reference" + }, + "lifecycleStatus": { + "$ref": "#/definitions/v1LifecycleStatus", + "description": "cluster life cycle status of virtual cluster" + }, + "state": { + "description": "cluster virtual host status", + "type": "string" + }, + "virtualClusters": { + "description": "list of virtual clusters deployed on the cluster", + "items": { + "$ref": "#/definitions/v1ObjectResReference" + }, + "type": "array" + } + } + }, + "v1VirtualCloudClusterConfigEntity": { + "description": "Virtual cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1VirtualClusterConfig" + } + }, + "type": "object" + }, + "v1VirtualCloudConfig": { + "description": "VirtualCloudConfig is the Schema for the virtual cloudconfigs API", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1VirtualCloudConfigSpec" + }, + "status": { + "$ref": "#/definitions/v1NestedCloudConfigStatus" + } + }, + "type": "object" + }, + "v1VirtualCloudConfigSpec": { + "description": "VirtualCloudConfigSpec defines the cloud configuration input by user This will translate to clusterspec for cluster-api.", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1VirtualClusterConfig" + }, + "hostClusterUid": { + "type": "string" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1VirtualMachinePoolConfig" + }, + "type": "array" + } + }, + "required": [ + "clusterConfig", + "hostClusterUid", + "machinePoolConfig" + ], + "type": "object" + }, + "v1VirtualClusterConfig": { + "description": "Cluster level configuration for virtual cluster", + "properties": { + "controlPlaneEndpoint": { + "$ref": "#/definitions/v1APIEndpoint" + }, + "helmRelease": { + "$ref": "#/definitions/v1VirtualClusterHelmRelease" + }, + "kubernetesVersion": { + "default": "", + "type": "string" + } + }, + "type": "object" + }, + "v1VirtualClusterHelmChart": { + "properties": { + "name": { + "default": "", + "type": "string" + }, + "repo": { + "default": "", + "type": "string" + }, + "version": { + "default": "", + "type": "string" + } + }, + "type": "object" + }, + "v1VirtualClusterHelmRelease": { + "properties": { + "chart": { + "$ref": "#/definitions/v1VirtualClusterHelmChart" + }, + "values": { + "default": "", + "type": "string" + } + }, + "type": "object" + }, + "v1VirtualClusterResize": { + "properties": { + "instanceType": { + "$ref": "#/definitions/v1VirtualInstanceType" + } + }, + "required": [ + "instanceType" + ], + "type": "object" + }, + "v1VirtualInstanceType": { + "properties": { + "maxCPU": { + "description": "Maximum CPU cores", + "format": "int32", + "type": "integer" + }, + "maxMemInMiB": { + "description": "Maximum memory in MiB", + "format": "int32", + "type": "integer" + }, + "maxStorageGiB": { + "description": "Maximum storage in GiB", + "format": "int32", + "type": "integer" + }, + "minCPU": { + "description": "Minimum CPU cores", + "format": "int32", + "type": "integer" + }, + "minMemInMiB": { + "description": "Minimum memory in MiB", + "format": "int32", + "type": "integer" + }, + "minStorageGiB": { + "description": "Minimum storage in GiB", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1VirtualMachine": { + "description": "Virtual cloud machine definition", + "properties": { + "kind": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1VirtualMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudMachineStatus" + } + }, + "type": "object" + }, + "v1VirtualMachinePoolCloudConfigEntity": { + "properties": { + "instanceType": { + "$ref": "#/definitions/v1VirtualInstanceType" + } + }, + "required": [ + "instanceType" + ], + "type": "object" + }, + "v1VirtualMachinePoolConfig": { + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "additionalLabels", + "type": "object" + }, + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", + "type": "object" + }, + "azs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "instanceType": { + "$ref": "#/definitions/v1VirtualInstanceType", + "description": "InstanceType defines the required CPU, Memory" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean" + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "machinePoolProperties": { + "$ref": "#/definitions/v1MachinePoolProperties" + }, + "maxSize": { + "description": "max size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "minSize": { + "description": "min size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "resourcePool": { + "type": "string" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "taints": { + "description": "master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array", + "uniqueItems": true + }, + "updateStrategy": { + "$ref": "#/definitions/v1UpdateStrategy", + "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean" + } + }, + "required": [ + "instanceType" + ], + "type": "object" + }, + "v1VirtualMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1VirtualMachinePoolCloudConfigEntity" + } + }, + "required": [ + "cloudConfig" + ], + "type": "object" + }, + "v1VirtualMachineSnapshot": { + "description": "VirtualMachineSnapshot defines the operation of snapshotting a VM", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1VmObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1VirtualMachineSnapshotSpec" + }, + "status": { + "$ref": "#/definitions/v1VirtualMachineSnapshotStatus" + } + }, + "required": [ + "spec" + ], + "type": "object" + }, + "v1VirtualMachineSnapshotList": { + "description": "VirtualMachineSnapshotList is a list of VirtualMachineSnapshot resources", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "items": { + "items": { + "$ref": "#/definitions/v1VirtualMachineSnapshot" + }, + "type": "array" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1VmListMeta" + } + }, + "required": [ + "metadata", + "items" + ], + "type": "object" + }, + "v1VirtualMachineSnapshotSpec": { + "description": "VirtualMachineSnapshotSpec is the spec for a VirtualMachineSnapshot resource", + "properties": { + "deletionPolicy": { + "type": "string" + }, + "failureDeadline": { + "$ref": "#/definitions/v1VmDuration" + }, + "source": { + "$ref": "#/definitions/v1VmTypedLocalObjectReference" + } + }, + "required": [ + "source" + ], + "type": "object" + }, + "v1VirtualMachineSnapshotStatus": { + "description": "VirtualMachineSnapshotStatus is the status for a VirtualMachineSnapshot resource", + "properties": { + "conditions": { + "items": { + "$ref": "#/definitions/v1VmCondition" + }, + "type": "array" + }, + "creationTime": { + "$ref": "#/definitions/v1Time" + }, + "error": { + "$ref": "#/definitions/v1VmError" + }, + "indications": { + "items": { + "type": "string" + }, + "type": "array", + "x-kubernetes-list-type": "set" + }, + "phase": { + "type": "string" + }, + "readyToUse": { + "type": "boolean" + }, + "snapshotVolumes": { + "$ref": "#/definitions/v1VmSnapshotVolumesLists" + }, + "sourceUID": { + "type": "string" + }, + "virtualMachineSnapshotContentName": { + "type": "string" + } + }, + "type": "object", + "x-nullable": true + }, + "v1VirtualMachineSpec": { + "description": "Virtual cloud machine definition spec", + "properties": { + "hostname": { + "type": "string" + } + }, + "type": "object" + }, + "v1VirtualMachines": { + "description": "List of virtual machines", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1VirtualMachine" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1VirtualNetwork": { + "description": "Azure virtual network is the fundamental building block for your private network in Azure.", + "properties": { + "addressSpaces": { + "description": "Location of the virtual network", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "description": "The ID of the resource group", + "type": "string" + }, + "location": { + "description": "Location of the virtual network", + "type": "string" + }, + "name": { + "description": "Name of the virtual network", + "type": "string" + }, + "subnets": { + "description": "List of subnets associated with Azure VPC", + "items": { + "$ref": "#/definitions/v1Subnet" + }, + "type": "array" + }, + "type": { + "description": "Type of the virtual network", + "type": "string" + } + }, + "type": "object" + }, + "v1VmAccessCredential": { + "description": "AccessCredential represents a credential source that can be used to authorize remote access to the vm guest Only one of its members may be specified.", + "properties": { + "sshPublicKey": { + "$ref": "#/definitions/v1VmSshPublicKeyAccessCredential" + }, + "userPassword": { + "$ref": "#/definitions/v1VmUserPasswordAccessCredential" + } + }, + "type": "object" + }, + "v1VmAccessCredentialSecretSource": { + "properties": { + "secretName": { + "description": "SecretName represents the name of the secret in the VMI's namespace", + "type": "string" + } + }, + "required": [ + "secretName" + ], + "type": "object" + }, + "v1VmAddVolumeOptions": { + "description": "AddVolumeOptions is provided when dynamically hot plugging a volume and disk", + "properties": { + "disk": { + "$ref": "#/definitions/v1VmDisk" + }, + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "items": { + "type": "string" + }, + "type": "array", + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that will be used to map the disk to the corresponding volume. This overrides any name set inside the Disk struct itself.", + "type": "string" + }, + "volumeSource": { + "$ref": "#/definitions/v1VmHotplugVolumeSource" + } + }, + "required": [ + "name", + "disk", + "volumeSource" + ], + "type": "object" + }, + "v1VmAffinity": { + "description": "Affinity is a group of affinity scheduling rules.", + "properties": { + "nodeAffinity": { + "$ref": "#/definitions/v1VmNodeAffinity" + }, + "podAffinity": { + "$ref": "#/definitions/v1VmPodAffinity" + }, + "podAntiAffinity": { + "$ref": "#/definitions/v1PodAntiAffinity" + } + }, + "type": "object" + }, + "v1VmBIOS": { + "description": "If set (default), BIOS will be used.", + "properties": { + "useSerial": { + "description": "If set, the BIOS output will be transmitted over serial", + "type": "boolean" + } + }, + "type": "object" + }, + "v1VmBlockSize": { + "description": "BlockSize provides the option to change the block size presented to the VM for a disk. Only one of its members may be specified.", + "properties": { + "custom": { + "$ref": "#/definitions/v1VmCustomBlockSize" + }, + "matchVolume": { + "$ref": "#/definitions/v1VmFeatureState" + } + }, + "type": "object" + }, + "v1VmBootloader": { + "description": "Represents the firmware blob used to assist in the domain creation process. Used for setting the QEMU BIOS file path for the libvirt domain.", + "properties": { + "bios": { + "$ref": "#/definitions/v1VmBIOS" + }, + "efi": { + "$ref": "#/definitions/v1VmEFI" + } + }, + "type": "object" + }, + "v1VmCDRomTarget": { + "properties": { + "bus": { + "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", + "type": "string" + }, + "readonly": { + "description": "ReadOnly. Defaults to true.", + "type": "boolean" + }, + "tray": { + "description": "Tray indicates if the tray of the device is open or closed. Allowed values are \"open\" and \"closed\". Defaults to closed.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmChassis": { + "description": "Chassis specifies the chassis info passed to the domain.", + "properties": { + "asset": { + "type": "string" + }, + "manufacturer": { + "type": "string" + }, + "serial": { + "type": "string" + }, + "sku": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "v1VmClientPassthroughDevices": { + "description": "Represent a subset of client devices that can be accessed by VMI. At the moment only, USB devices using Usbredir's library and tooling. Another fit would be a smartcard with libcacard.\n\nThe struct is currently empty as there is no immediate request for user-facing APIs. This structure simply turns on USB redirection of UsbClientPassthroughMaxNumberOf devices.", + "type": "object" + }, + "v1VmClock": { + "description": "Represents the clock and timers of a vmi.", + "properties": { + "timer": { + "$ref": "#/definitions/v1VmTimer" + }, + "timezone": { + "description": "Timezone sets the guest clock to the specified timezone. Zone name follows the TZ environment variable format (e.g. 'America/New_York').", + "type": "string" + }, + "utc": { + "$ref": "#/definitions/v1VmClockOffsetUTC" + } + }, + "type": "object" + }, + "v1VmClockOffsetUTC": { + "description": "UTC sets the guest clock to UTC on each boot.", + "properties": { + "offsetSeconds": { + "description": "OffsetSeconds specifies an offset in seconds, relative to UTC. If set, guest changes to the clock will be kept during reboots and not reset.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1VmCloudInitConfigDriveSource": { + "description": "Represents a cloud-init config drive user data source. More info: https://cloudinit.readthedocs.io/en/latest/topics/datasources/configdrive.html", + "properties": { + "networkData": { + "description": "NetworkData contains config drive inline cloud-init networkdata.", + "type": "string" + }, + "networkDataBase64": { + "description": "NetworkDataBase64 contains config drive cloud-init networkdata as a base64 encoded string.", + "type": "string" + }, + "networkDataSecretRef": { + "$ref": "#/definitions/v1VmLocalObjectReference" + }, + "secretRef": { + "$ref": "#/definitions/v1VmLocalObjectReference" + }, + "userData": { + "description": "UserData contains config drive inline cloud-init userdata.", + "type": "string" + }, + "userDataBase64": { + "description": "UserDataBase64 contains config drive cloud-init userdata as a base64 encoded string.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmCloudInitNoCloudSource": { + "description": "Represents a cloud-init nocloud user data source. More info: http://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html", + "properties": { + "networkData": { + "description": "NetworkData contains NoCloud inline cloud-init networkdata.", + "type": "string" + }, + "networkDataBase64": { + "description": "NetworkDataBase64 contains NoCloud cloud-init networkdata as a base64 encoded string.", + "type": "string" + }, + "networkDataSecretRef": { + "$ref": "#/definitions/v1VmLocalObjectReference" + }, + "secretRef": { + "$ref": "#/definitions/v1VmLocalObjectReference" + }, + "userData": { + "description": "UserData contains NoCloud inline cloud-init userdata.", + "type": "string" + }, + "userDataBase64": { + "description": "UserDataBase64 contains NoCloud cloud-init userdata as a base64 encoded string.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmCondition": { + "description": "Condition defines conditions", + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "type", + "status" + ], + "type": "object" + }, + "v1VmConfigDriveSshPublicKeyAccessCredentialPropagation": { + "type": "object" + }, + "v1VmConfigMapVolumeSource": { + "description": "ConfigMapVolumeSource adapts a ConfigMap into a volume. More info: https://kubernetes.io/docs/concepts/storage/volumes/#configmap", + "properties": { + "name": { + "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "optional": { + "description": "Specify whether the ConfigMap or it's keys must be defined", + "type": "boolean" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + }, + "type": "object" + }, + "v1VmContainerDiskSource": { + "description": "Represents a docker image with an embedded disk.", + "properties": { + "image": { + "description": "Image is the name of the image with the embedded disk.", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "imagePullSecret": { + "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", + "type": "string" + }, + "path": { + "description": "Path defines the path to disk file in the container", + "type": "string" + } + }, + "required": [ + "image" + ], + "type": "object" + }, + "v1VmCoreDataVolumeSource": { + "properties": { + "hotpluggable": { + "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", + "type": "boolean" + }, + "name": { + "description": "Name of both the DataVolume and the PVC in the same namespace. After PVC population the DataVolume is garbage collected by default.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1VmCoreResourceRequirements": { + "description": "ResourceRequirements describes the compute resource requirements.", + "properties": { + "limits": { + "additionalProperties": { + "$ref": "#/definitions/v1VmQuantity" + }, + "description": "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + }, + "requests": { + "additionalProperties": { + "$ref": "#/definitions/v1VmQuantity" + }, + "description": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", + "type": "object" + } + }, + "type": "object" + }, + "v1VmCpu": { + "description": "CPU allows specifying the CPU topology.", + "properties": { + "cores": { + "description": "Cores specifies the number of cores inside the vmi. Must be a value greater or equal 1.", + "format": "int64", + "type": "integer" + }, + "dedicatedCpuPlacement": { + "description": "DedicatedCPUPlacement requests the scheduler to place the VirtualMachineInstance on a node with enough dedicated pCPUs and pin the vCPUs to it.", + "type": "boolean" + }, + "features": { + "description": "Features specifies the CPU features list inside the VMI.", + "items": { + "$ref": "#/definitions/v1VmCpuFeature" + }, + "type": "array" + }, + "isolateEmulatorThread": { + "description": "IsolateEmulatorThread requests one more dedicated pCPU to be allocated for the VMI to place the emulator thread on it.", + "type": "boolean" + }, + "model": { + "description": "Model specifies the CPU model inside the VMI. List of available models https://github.com/libvirt/libvirt/tree/master/src/cpu_map. It is possible to specify special cases like \"host-passthrough\" to get the same CPU as the node and \"host-model\" to get CPU closest to the node one. Defaults to host-model.", + "type": "string" + }, + "numa": { + "$ref": "#/definitions/v1VmNUMA" + }, + "realtime": { + "$ref": "#/definitions/v1VmRealtime" + }, + "sockets": { + "description": "Sockets specifies the number of sockets inside the vmi. Must be a value greater or equal 1.", + "format": "int64", + "type": "integer" + }, + "threads": { + "description": "Threads specifies the number of threads inside the vmi. Must be a value greater or equal 1.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "v1VmCpuFeature": { + "description": "CPUFeature allows specifying a CPU feature.", + "properties": { + "name": { + "description": "Name of the CPU feature", + "type": "string" + }, + "policy": { + "description": "Policy is the CPU feature attribute which can have the following attributes: force - The virtual CPU will claim the feature is supported regardless of it being supported by host CPU. require - Guest creation will fail unless the feature is supported by the host CPU or the hypervisor is able to emulate it. optional - The feature will be supported by virtual CPU if and only if it is supported by host CPU. disable - The feature will not be supported by virtual CPU. forbid - Guest creation will fail if the feature is supported by host CPU. Defaults to require", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1VmCustomBlockSize": { + "description": "CustomBlockSize represents the desired logical and physical block size for a VM disk.", + "properties": { + "logical": { + "format": "int32", + "type": "integer" + }, + "physical": { + "format": "int32", + "type": "integer" + } + }, + "required": [ + "logical", + "physical" + ], + "type": "object" + }, + "v1VmDHCPOptions": { + "description": "Extra DHCP options to use in the interface.", + "properties": { + "bootFileName": { + "description": "If specified will pass option 67 to interface's DHCP server", + "type": "string" + }, + "ntpServers": { + "description": "If specified will pass the configured NTP server to the VM via DHCP option 042.", + "items": { + "type": "string" + }, + "type": "array" + }, + "privateOptions": { + "description": "If specified will pass extra DHCP options for private use, range: 224-254", + "items": { + "$ref": "#/definitions/v1VmDHCPPrivateOptions" + }, + "type": "array" + }, + "tftpServerName": { + "description": "If specified will pass option 66 to interface's DHCP server", + "type": "string" + } + }, + "type": "object" + }, + "v1VmDHCPPrivateOptions": { + "description": "DHCPExtraOptions defines Extra DHCP options for a VM.", + "properties": { + "option": { + "description": "Option is an Integer value from 224-254 Required.", + "format": "int32", + "type": "integer" + }, + "value": { + "description": "Value is a String value for the Option provided Required.", + "type": "string" + } + }, + "required": [ + "option", + "value" + ], + "type": "object" + }, + "v1VmDataVolumeBlankImage": { + "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC", + "type": "object" + }, + "v1VmDataVolumeCheckpoint": { + "description": "DataVolumeCheckpoint defines a stage in a warm migration.", + "properties": { + "current": { + "description": "Current is the identifier of the snapshot created for this checkpoint.", + "type": "string" + }, + "previous": { + "description": "Previous is the identifier of the snapshot from the previous checkpoint.", + "type": "string" + } + }, + "required": [ + "previous", + "current" + ], + "type": "object" + }, + "v1VmDataVolumeSource": { + "description": "DataVolumeSource represents the source for our Data Volume, this can be HTTP, Imageio, S3, Registry or an existing PVC", + "properties": { + "blank": { + "$ref": "#/definitions/v1VmDataVolumeBlankImage" + }, + "http": { + "$ref": "#/definitions/v1VmDataVolumeSourceHttp" + }, + "imageio": { + "$ref": "#/definitions/v1VmDataVolumeSourceImageIO" + }, + "pvc": { + "$ref": "#/definitions/v1VmDataVolumeSourcePVC" + }, + "registry": { + "$ref": "#/definitions/v1VmDataVolumeSourceRegistry" + }, + "s3": { + "$ref": "#/definitions/v1VmDataVolumeSourceS3" + }, + "upload": { + "$ref": "#/definitions/v1VmDataVolumeSourceUpload" + }, + "vddk": { + "$ref": "#/definitions/v1VmDataVolumeSourceVDDK" + } + }, + "type": "object" + }, + "v1VmDataVolumeSourceHttp": { + "description": "DataVolumeSourceHTTP can be either an http or https endpoint, with an optional basic auth user name and password, and an optional configmap containing additional CAs", + "properties": { + "certConfigMap": { + "description": "CertConfigMap is a configmap reference, containing a Certificate Authority(CA) public key, and a base64 encoded pem certificate", + "type": "string" + }, + "extraHeaders": { + "description": "ExtraHeaders is a list of strings containing extra headers to include with HTTP transfer requests", + "items": { + "type": "string" + }, + "type": "array" + }, + "secretExtraHeaders": { + "description": "SecretExtraHeaders is a list of Secret references, each containing an extra HTTP header that may include sensitive information", + "items": { + "type": "string" + }, + "type": "array" + }, + "secretRef": { + "description": "SecretRef A Secret reference, the secret should contain accessKeyId (user name) base64 encoded, and secretKey (password) also base64 encoded", + "type": "string" + }, + "url": { + "description": "URL is the URL of the http(s) endpoint", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "v1VmDataVolumeSourceImageIO": { + "description": "DataVolumeSourceImageIO provides the parameters to create a Data Volume from an imageio source", + "properties": { + "certConfigMap": { + "description": "CertConfigMap provides a reference to the CA cert", + "type": "string" + }, + "diskId": { + "description": "DiskID provides id of a disk to be imported", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the ovirt-engine", + "type": "string" + }, + "url": { + "description": "URL is the URL of the ovirt-engine", + "type": "string" + } + }, + "required": [ + "url", + "diskId" + ], + "type": "object" + }, + "v1VmDataVolumeSourcePVC": { + "description": "DataVolumeSourcePVC provides the parameters to create a Data Volume from an existing PVC", + "properties": { + "name": { + "description": "The name of the source PVC", + "type": "string" + }, + "namespace": { + "description": "The namespace of the source PVC", + "type": "string" + } + }, + "required": [ + "namespace", + "name" + ], + "type": "object" + }, + "v1VmDataVolumeSourceRef": { + "description": "DataVolumeSourceRef defines an indirect reference to the source of data for the DataVolume", + "properties": { + "kind": { + "description": "The kind of the source reference, currently only \"DataSource\" is supported", + "type": "string" + }, + "name": { + "description": "The name of the source reference", + "type": "string" + }, + "namespace": { + "description": "The namespace of the source reference, defaults to the DataVolume namespace", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "v1VmDataVolumeSourceRegistry": { + "description": "DataVolumeSourceRegistry provides the parameters to create a Data Volume from an registry source", + "properties": { + "certConfigMap": { + "description": "CertConfigMap provides a reference to the Registry certs", + "type": "string" + }, + "imageStream": { + "description": "ImageStream is the name of image stream for import", + "type": "string" + }, + "pullMethod": { + "description": "PullMethod can be either \"pod\" (default import), or \"node\" (node docker cache based import)", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the Registry source", + "type": "string" + }, + "url": { + "description": "URL is the url of the registry source (starting with the scheme: docker, oci-archive)", + "type": "string" + } + }, + "type": "object" + }, + "v1VmDataVolumeSourceS3": { + "description": "DataVolumeSourceS3 provides the parameters to create a Data Volume from an S3 source", + "properties": { + "certConfigMap": { + "description": "CertConfigMap is a configmap reference, containing a Certificate Authority(CA) public key, and a base64 encoded pem certificate", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides the secret reference needed to access the S3 source", + "type": "string" + }, + "url": { + "description": "URL is the url of the S3 source", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "v1VmDataVolumeSourceUpload": { + "description": "DataVolumeSourceUpload provides the parameters to create a Data Volume by uploading the source", + "type": "object" + }, + "v1VmDataVolumeSourceVDDK": { + "description": "DataVolumeSourceVDDK provides the parameters to create a Data Volume from a Vmware source", + "properties": { + "backingFile": { + "description": "BackingFile is the path to the virtual hard disk to migrate from vCenter/ESXi", + "type": "string" + }, + "initImageURL": { + "description": "InitImageURL is an optional URL to an image containing an extracted VDDK library, overrides v2v-vmware config map", + "type": "string" + }, + "secretRef": { + "description": "SecretRef provides a reference to a secret containing the username and password needed to access the vCenter or ESXi host", + "type": "string" + }, + "thumbprint": { + "description": "Thumbprint is the certificate thumbprint of the vCenter or ESXi host", + "type": "string" + }, + "url": { + "description": "URL is the URL of the vCenter or ESXi host with the VM to migrate", + "type": "string" + }, + "uuid": { + "description": "UUID is the UUID of the virtual machine that the backing file is attached to in vCenter/ESXi", + "type": "string" + } + }, + "type": "object" + }, + "v1VmDataVolumeSpec": { + "description": "DataVolumeSpec defines the DataVolume type specification", + "properties": { + "checkpoints": { + "description": "Checkpoints is a list of DataVolumeCheckpoints, representing stages in a multistage import.", + "items": { + "$ref": "#/definitions/v1VmDataVolumeCheckpoint" + }, + "type": "array" + }, + "contentType": { + "description": "DataVolumeContentType options: \"kubevirt\", \"archive\"", + "type": "string" + }, + "finalCheckpoint": { + "description": "FinalCheckpoint indicates whether the current DataVolumeCheckpoint is the final checkpoint.", + "type": "boolean" + }, + "preallocation": { + "description": "Preallocation controls whether storage for DataVolumes should be allocated in advance.", + "type": "boolean" + }, + "priorityClassName": { + "description": "PriorityClassName for Importer, Cloner and Uploader pod", + "type": "string" + }, + "pvc": { + "$ref": "#/definitions/v1VmPersistentVolumeClaimSpec" + }, + "source": { + "$ref": "#/definitions/v1VmDataVolumeSource" + }, + "sourceRef": { + "$ref": "#/definitions/v1VmDataVolumeSourceRef" + }, + "storage": { + "$ref": "#/definitions/v1VmStorageSpec" + } + }, + "type": "object" + }, + "v1VmDataVolumeTemplateSpec": { + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values.", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1VmObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1VmDataVolumeSpec" + } + }, + "required": [ + "spec" + ], + "type": "object" + }, + "v1VmDevices": { + "properties": { + "autoattachGraphicsDevice": { + "description": "Whether to attach the default graphics device or not. VNC will not be available if set to false. Defaults to true.", + "type": "boolean" + }, + "autoattachInputDevice": { + "description": "Whether to attach an Input Device. Defaults to false.", + "type": "boolean" + }, + "autoattachMemBalloon": { + "description": "Whether to attach the Memory balloon device with default period. Period can be adjusted in virt-config. Defaults to true.", + "type": "boolean" + }, + "autoattachPodInterface": { + "description": "Whether to attach a pod network interface. Defaults to true.", + "type": "boolean" + }, + "autoattachSerialConsole": { + "description": "Whether to attach the default serial console or not. Serial console access will not be available if set to false. Defaults to true.", + "type": "boolean" + }, + "autoattachVSOCK": { + "description": "Whether to attach the VSOCK CID to the VM or not. VSOCK access will be available if set to true. Defaults to false.", + "type": "boolean" + }, + "blockMultiQueue": { + "description": "Whether or not to enable virtio multi-queue for block devices. Defaults to false.", + "type": "boolean" + }, + "clientPassthrough": { + "$ref": "#/definitions/v1VmClientPassthroughDevices" + }, + "disableHotplug": { + "description": "DisableHotplug disabled the ability to hotplug disks.", + "type": "boolean" + }, + "disks": { + "description": "Disks describes disks, cdroms and luns which are connected to the vmi.", + "items": { + "$ref": "#/definitions/v1VmDisk" + }, + "type": "array" + }, + "filesystems": { + "description": "Filesystems describes filesystem which is connected to the vmi.", + "items": { + "$ref": "#/definitions/v1VmFilesystem" + }, + "type": "array", + "x-kubernetes-list-type": "atomic" + }, + "gpus": { + "description": "Whether to attach a GPU device to the vmi.", + "items": { + "$ref": "#/definitions/v1VmGPU" + }, + "type": "array", + "x-kubernetes-list-type": "atomic" + }, + "hostDevices": { + "description": "Whether to attach a host device to the vmi.", + "items": { + "$ref": "#/definitions/v1VmHostDevice" + }, + "type": "array", + "x-kubernetes-list-type": "atomic" + }, + "inputs": { + "description": "Inputs describe input devices", + "items": { + "$ref": "#/definitions/v1VmInput" + }, + "type": "array" + }, + "interfaces": { + "description": "Interfaces describe network interfaces which are added to the vmi.", + "items": { + "$ref": "#/definitions/v1VmInterface" + }, + "type": "array" + }, + "networkInterfaceMultiqueue": { + "description": "If specified, virtual network interfaces configured with a virtio bus will also enable the vhost multiqueue feature for network devices. The number of queues created depends on additional factors of the VirtualMachineInstance, like the number of guest CPUs.", + "type": "boolean" + }, + "rng": { + "$ref": "#/definitions/v1VmRng" + }, + "sound": { + "$ref": "#/definitions/v1VmSoundDevice" + }, + "tpm": { + "$ref": "#/definitions/v1VmTPMDevice" + }, + "useVirtioTransitional": { + "description": "Fall back to legacy virtio 0.9 support if virtio bus is selected on devices. This is helpful for old machines like CentOS6 or RHEL6 which do not understand virtio_non_transitional (virtio 1.0).", + "type": "boolean" + }, + "watchdog": { + "$ref": "#/definitions/v1VmWatchdog" + } + }, + "type": "object" + }, + "v1VmDisk": { + "properties": { + "blockSize": { + "$ref": "#/definitions/v1VmBlockSize" + }, + "bootOrder": { + "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each disk or interface that has a boot order must have a unique value. Disks without a boot order are not tried if a disk with a boot order exists.", + "format": "int32", + "type": "integer" + }, + "cache": { + "description": "Cache specifies which kvm disk cache mode should be used. Supported values are: CacheNone, CacheWriteThrough.", + "type": "string" + }, + "cdrom": { + "$ref": "#/definitions/v1VmCDRomTarget" + }, + "dedicatedIOThread": { + "description": "dedicatedIOThread indicates this disk should have an exclusive IO Thread. Enabling this implies useIOThreads = true. Defaults to false.", + "type": "boolean" + }, + "disk": { + "$ref": "#/definitions/v1VmDiskTarget" + }, + "io": { + "description": "IO specifies which QEMU disk IO mode should be used. Supported values are: native, default, threads.", + "type": "string" + }, + "lun": { + "$ref": "#/definitions/v1VmLunTarget" + }, + "name": { + "description": "Name is the device name", + "type": "string" + }, + "serial": { + "description": "Serial provides the ability to specify a serial number for the disk device.", + "type": "string" + }, + "shareable": { + "description": "If specified the disk is made sharable and multiple write from different VMs are permitted", + "type": "boolean" + }, + "tag": { + "description": "If specified, disk address and its tag will be provided to the guest via config drive metadata", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1VmDiskTarget": { + "properties": { + "bus": { + "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi, usb.", + "type": "string" + }, + "pciAddress": { + "description": "If specified, the virtual disk will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", + "type": "string" + }, + "readonly": { + "description": "ReadOnly. Defaults to false.", + "type": "boolean" + } + }, + "type": "object" + }, + "v1VmDomainSpec": { + "properties": { + "chassis": { + "$ref": "#/definitions/v1VmChassis" + }, + "clock": { + "$ref": "#/definitions/v1VmClock" + }, + "cpu": { + "$ref": "#/definitions/v1VmCpu" + }, + "devices": { + "$ref": "#/definitions/v1VmDevices" + }, + "features": { + "$ref": "#/definitions/v1VmFeatures" + }, + "firmware": { + "$ref": "#/definitions/v1VmFirmware" + }, + "ioThreadsPolicy": { + "description": "Controls whether or not disks will share IOThreads. Omitting IOThreadsPolicy disables use of IOThreads. One of: shared, auto", + "type": "string" + }, + "launchSecurity": { + "$ref": "#/definitions/v1VmLaunchSecurity" + }, + "machine": { + "$ref": "#/definitions/v1VmMachine" + }, + "memory": { + "$ref": "#/definitions/v1VmMemory" + }, + "resources": { + "$ref": "#/definitions/v1VmResourceRequirements" + } + }, + "required": [ + "devices" + ], + "type": "object" + }, + "v1VmDownwardApiVolumeFile": { + "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field", + "properties": { + "fieldRef": { + "$ref": "#/definitions/v1VmObjectFieldSelector" + }, + "mode": { + "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.", + "format": "int32", + "type": "integer" + }, + "path": { + "description": "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'", + "type": "string" + }, + "resourceFieldRef": { + "$ref": "#/definitions/v1VmResourceFieldSelector" + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "v1VmDownwardApiVolumeSource": { + "description": "DownwardAPIVolumeSource represents a volume containing downward API info.", + "properties": { + "fields": { + "description": "Fields is a list of downward API volume file", + "items": { + "$ref": "#/definitions/v1VmDownwardApiVolumeFile" + }, + "type": "array" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + }, + "type": "object" + }, + "v1VmDownwardMetricsVolumeSource": { + "description": "DownwardMetricsVolumeSource adds a very small disk to VMIs which contains a limited view of host and guest metrics. The disk content is compatible with vhostmd (https://github.com/vhostmd/vhostmd) and vm-dump-metrics.", + "type": "object" + }, + "v1VmDuration": { + "description": "Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json.", + "type": "string" + }, + "v1VmEFI": { + "description": "If set, EFI will be used instead of BIOS.", + "properties": { + "secureBoot": { + "description": "If set, SecureBoot will be enabled and the OVMF roms will be swapped for SecureBoot-enabled ones. Requires SMM to be enabled. Defaults to true", + "type": "boolean" + } + }, + "type": "object" + }, + "v1VmEmptyDiskSource": { + "description": "EmptyDisk represents a temporary disk which shares the vmis lifecycle.", + "properties": { + "capacity": { + "$ref": "#/definitions/v1VmQuantity" + } + }, + "required": [ + "capacity" + ], + "type": "object" + }, + "v1VmEphemeralVolumeSource": { + "properties": { + "persistentVolumeClaim": { + "$ref": "#/definitions/v1VmPersistentVolumeClaimVolumeSource" + } + }, + "type": "object" + }, + "v1VmError": { + "description": "Error is the last error encountered during the snapshot/restore", + "properties": { + "message": { + "type": "string" + }, + "time": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1VmExecAction": { + "description": "ExecAction describes a \"run in container\" action.", + "properties": { + "command": { + "description": "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1VmFeatureApiC": { + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "endOfInterrupt": { + "description": "EndOfInterrupt enables the end of interrupt notification in the guest. Defaults to false.", + "type": "boolean" + } + }, + "type": "object" + }, + "v1VmFeatureHyperv": { + "description": "Hyperv specific features.", + "properties": { + "evmcs": { + "$ref": "#/definitions/v1VmFeatureState" + }, + "frequencies": { + "$ref": "#/definitions/v1VmFeatureState" + }, + "ipi": { + "$ref": "#/definitions/v1VmFeatureState" + }, + "reenlightenment": { + "$ref": "#/definitions/v1VmFeatureState" + }, + "relaxed": { + "$ref": "#/definitions/v1VmFeatureState" + }, + "reset": { + "$ref": "#/definitions/v1VmFeatureState" + }, + "runtime": { + "$ref": "#/definitions/v1VmFeatureState" + }, + "spinlocks": { + "$ref": "#/definitions/v1VmFeatureSpinlocks" + }, + "synic": { + "$ref": "#/definitions/v1VmFeatureState" + }, + "synictimer": { + "$ref": "#/definitions/v1VmSyNICTimer" + }, + "tlbflush": { + "$ref": "#/definitions/v1VmFeatureState" + }, + "vapic": { + "$ref": "#/definitions/v1VmFeatureState" + }, + "vendorid": { + "$ref": "#/definitions/v1VmFeatureVendorId" + }, + "vpindex": { + "$ref": "#/definitions/v1VmFeatureState" + } + }, + "type": "object" + }, + "v1VmFeatureKVm": { + "properties": { + "hidden": { + "description": "Hide the KVM hypervisor from standard MSR based discovery. Defaults to false", + "type": "boolean" + } + }, + "type": "object" + }, + "v1VmFeatureSpinlocks": { + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "spinlocks": { + "description": "Retries indicates the number of retries. Must be a value greater or equal 4096. Defaults to 4096.", + "format": "int64", + "type": "integer" + } + }, + "type": "object" + }, + "v1VmFeatureState": { + "description": "Represents if a feature is enabled or disabled.", + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + } + }, + "type": "object" + }, + "v1VmFeatureVendorId": { + "properties": { + "enabled": { + "description": "Enabled determines if the feature should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "vendorid": { + "description": "VendorID sets the hypervisor vendor id, visible to the vmi. String up to twelve characters.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmFeatures": { + "properties": { + "acpi": { + "$ref": "#/definitions/v1VmFeatureState" + }, + "apic": { + "$ref": "#/definitions/v1VmFeatureApiC" + }, + "hyperv": { + "$ref": "#/definitions/v1VmFeatureHyperv" + }, + "kvm": { + "$ref": "#/definitions/v1VmFeatureKVm" + }, + "pvspinlock": { + "$ref": "#/definitions/v1VmFeatureState" + }, + "smm": { + "$ref": "#/definitions/v1VmFeatureState" + } + }, + "type": "object" + }, + "v1VmFieldsV1": { + "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:\\', where \\ is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", + "properties": { + "Raw": { + "items": { + "format": "byte", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1VmFilesystem": { + "properties": { + "name": { + "description": "Name is the device name", + "type": "string" + }, + "virtiofs": { + "$ref": "#/definitions/v1VmFilesystemVirtiofs" + } + }, + "required": [ + "name", + "virtiofs" + ], + "type": "object" + }, + "v1VmFilesystemVirtiofs": { + "type": "object" + }, + "v1VmFirmware": { + "properties": { + "bootloader": { + "$ref": "#/definitions/v1VmBootloader" + }, + "kernelBoot": { + "$ref": "#/definitions/v1VmKernelBoot" + }, + "serial": { + "description": "The system-serial-number in SMBIOS", + "type": "string" + }, + "uuid": { + "description": "UUID reported by the vmi bios. Defaults to a random generated uid.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmGPU": { + "properties": { + "deviceName": { + "type": "string" + }, + "name": { + "description": "Name of the GPU device as exposed by a device plugin", + "type": "string" + }, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "type": "string" + }, + "virtualGPUOptions": { + "$ref": "#/definitions/v1VmVGPUOptions" + } + }, + "required": [ + "name", + "deviceName" + ], + "type": "object" + }, + "v1VmGuestAgentPing": { + "description": "GuestAgentPing configures the guest-agent based ping probe", + "type": "object" + }, + "v1VmHPETTimer": { + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"merge\", \"discard\".", + "type": "string" + } + }, + "type": "object" + }, + "v1VmHostDevice": { + "properties": { + "deviceName": { + "description": "DeviceName is the resource name of the host device exposed by a device plugin", + "type": "string" + }, + "name": { + "type": "string" + }, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "type": "string" + } + }, + "required": [ + "name", + "deviceName" + ], + "type": "object" + }, + "v1VmHostDisk": { + "description": "Represents a disk created on the cluster level", + "properties": { + "capacity": { + "$ref": "#/definitions/v1VmQuantity" + }, + "path": { + "description": "The path to HostDisk image located on the cluster", + "type": "string" + }, + "shared": { + "description": "Shared indicate whether the path is shared between nodes", + "type": "boolean" + }, + "type": { + "description": "Contains information if disk.img exists or should be created allowed options are 'Disk' and 'DiskOrCreate'", + "type": "string" + } + }, + "required": [ + "path", + "type" + ], + "type": "object" + }, + "v1VmHotplugVolumeSource": { + "description": "HotplugVolumeSource Represents the source of a volume to mount which are capable of being hotplugged on a live running VMI. Only one of its members may be specified.", + "properties": { + "dataVolume": { + "$ref": "#/definitions/v1VmCoreDataVolumeSource" + }, + "persistentVolumeClaim": { + "$ref": "#/definitions/v1VmPersistentVolumeClaimVolumeSource" + } + }, + "type": "object" + }, + "v1VmHttpGetAction": { + "description": "HTTPGetAction describes an action based on HTTP Get requests.", + "properties": { + "host": { + "description": "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.", + "type": "string" + }, + "httpHeaders": { + "description": "Custom headers to set in the request. HTTP allows repeated headers.", + "items": { + "$ref": "#/definitions/v1VmHttpHeader" + }, + "type": "array" + }, + "path": { + "description": "Path to access on the HTTP server.", + "type": "string" + }, + "port": { + "description": "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", + "type": [ + "string", + "number" + ] + }, + "scheme": { + "description": "Scheme to use for connecting to the host. Defaults to HTTP.", + "type": "string" + } + }, + "required": [ + "port" + ], + "type": "object" + }, + "v1VmHttpHeader": { + "description": "HTTPHeader describes a custom header to be used in HTTP probes", + "properties": { + "name": { + "description": "The header field name", + "type": "string" + }, + "value": { + "description": "The header field value", + "type": "string" + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "v1VmHugepages": { + "description": "Hugepages allow to use hugepages for the VirtualMachineInstance instead of regular memory.", + "properties": { + "pageSize": { + "description": "PageSize specifies the hugepage size, for x86_64 architecture valid values are 1Gi and 2Mi.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmHypervTimer": { + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + } + }, + "type": "object" + }, + "v1VmI6300ESBWatchdog": { + "description": "i6300esb watchdog device.", + "properties": { + "action": { + "description": "The action to take. Valid values are poweroff, reset, shutdown. Defaults to reset.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmInput": { + "properties": { + "bus": { + "description": "Bus indicates the bus of input device to emulate. Supported values: virtio, usb.", + "type": "string" + }, + "name": { + "description": "Name is the device name", + "type": "string" + }, + "type": { + "description": "Type indicated the type of input device. Supported values: tablet.", + "type": "string" + } + }, + "required": [ + "type", + "name" + ], + "type": "object" + }, + "v1VmInstancetypeMatcher": { + "description": "InstancetypeMatcher references a instancetype that is used to fill fields in the VMI template.", + "properties": { + "inferFromVolume": { + "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the instancetype to be used through known annotations on the underlying resource. Once applied to the InstancetypeMatcher this field is removed.", + "type": "string" + }, + "kind": { + "description": "Kind specifies which instancetype resource is referenced. Allowed values are: \"VirtualMachineInstancetype\" and \"VirtualMachineClusterInstancetype\". If not specified, \"VirtualMachineClusterInstancetype\" is used by default.", + "type": "string" + }, + "name": { + "description": "Name is the name of the VirtualMachineInstancetype or VirtualMachineClusterInstancetype", + "type": "string" + }, + "revisionName": { + "description": "RevisionName specifies a ControllerRevision containing a specific copy of the VirtualMachineInstancetype or VirtualMachineClusterInstancetype to be used. This is initially captured the first time the instancetype is applied to the VirtualMachineInstance.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmInterface": { + "properties": { + "acpiIndex": { + "description": "If specified, the ACPI index is used to provide network interface device naming, that is stable across changes in PCI addresses assigned to the device. This value is required to be unique across all devices and be between 1 and (16*1024-1).", + "format": "int32", + "type": "integer" + }, + "bootOrder": { + "description": "BootOrder is an integer value > 0, used to determine ordering of boot devices. Lower values take precedence. Each interface or disk that has a boot order must have a unique value. Interfaces without a boot order are not tried.", + "format": "int32", + "type": "integer" + }, + "bridge": { + "$ref": "#/definitions/v1VmInterfaceBridge" + }, + "dhcpOptions": { + "$ref": "#/definitions/v1VmDHCPOptions" + }, + "macAddress": { + "description": "Interface MAC address. For example: de:ad:00:00:be:af or DE-AD-00-00-BE-AF.", + "type": "string" + }, + "macvtap": { + "$ref": "#/definitions/v1VmInterfaceMacvtap" + }, + "masquerade": { + "$ref": "#/definitions/v1VmInterfaceMasquerade" + }, + "model": { + "description": "Interface model. One of: e1000, e1000e, ne2k_pci, pcnet, rtl8139, virtio. Defaults to virtio.", + "type": "string" + }, + "name": { + "description": "Logical name of the interface as well as a reference to the associated networks. Must match the Name of a Network.", + "type": "string" + }, + "passt": { + "$ref": "#/definitions/v1VmInterfacePasst" + }, + "pciAddress": { + "description": "If specified, the virtual network interface will be placed on the guests pci address with the specified PCI address. For example: 0000:81:01.10", + "type": "string" + }, + "ports": { + "description": "List of ports to be forwarded to the virtual machine.", + "items": { + "$ref": "#/definitions/v1VmPort" + }, + "type": "array" + }, + "slirp": { + "$ref": "#/definitions/v1VmInterfaceSlirp" + }, + "sriov": { + "$ref": "#/definitions/v1VmInterfaceSRIOV" + }, + "tag": { + "description": "If specified, the virtual network interface address and its tag will be provided to the guest via config drive", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1VmInterfaceBridge": { + "description": "InterfaceBridge connects to a given network via a linux bridge.", + "type": "object" + }, + "v1VmInterfaceMacvtap": { + "description": "InterfaceMacvtap connects to a given network by extending the Kubernetes node's L2 networks via a macvtap interface.", + "type": "object" + }, + "v1VmInterfaceMasquerade": { + "description": "InterfaceMasquerade connects to a given network using netfilter rules to nat the traffic.", + "type": "object" + }, + "v1VmInterfacePasst": { + "description": "InterfacePasst connects to a given network.", + "type": "object" + }, + "v1VmInterfaceSRIOV": { + "description": "InterfaceSRIOV connects to a given network by passing-through an SR-IOV PCI device via vfio.", + "type": "object" + }, + "v1VmInterfaceSlirp": { + "description": "InterfaceSlirp connects to a given network using QEMU user networking mode.", + "type": "object" + }, + "v1VmKVmTimer": { + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + } + }, + "type": "object" + }, + "v1VmKernelBoot": { + "description": "Represents the firmware blob used to assist in the kernel boot process. Used for setting the kernel, initrd and command line arguments", + "properties": { + "container": { + "$ref": "#/definitions/v1VmKernelBootContainer" + }, + "kernelArgs": { + "description": "Arguments to be passed to the kernel at boot time", + "type": "string" + } + }, + "type": "object" + }, + "v1VmKernelBootContainer": { + "description": "If set, the VM will be booted from the defined kernel / initrd.", + "properties": { + "image": { + "description": "Image that contains initrd / kernel files.", + "type": "string" + }, + "imagePullPolicy": { + "description": "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images", + "type": "string" + }, + "imagePullSecret": { + "description": "ImagePullSecret is the name of the Docker registry secret required to pull the image. The secret must already exist.", + "type": "string" + }, + "initrdPath": { + "description": "the fully-qualified path to the ramdisk image in the host OS", + "type": "string" + }, + "kernelPath": { + "description": "The fully-qualified path to the kernel image in the host OS", + "type": "string" + } + }, + "required": [ + "image" + ], + "type": "object" + }, + "v1VmLabelSelector": { + "description": "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.", + "properties": { + "matchExpressions": { + "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", + "items": { + "$ref": "#/definitions/v1VmLabelSelectorRequirement" + }, + "type": "array" + }, + "matchLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "matchLabels is a map of key-value pairs. A single key-value in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "type": "object" + } + }, + "type": "object" + }, + "v1VmLabelSelectorRequirement": { + "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "properties": { + "key": { + "description": "key is the label key that the selector applies to.", + "type": "string", + "x-kubernetes-patch-merge-key": "key", + "x-kubernetes-patch-strategy": "merge" + }, + "operator": { + "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", + "type": "string" + }, + "values": { + "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "key", + "operator" + ], + "type": "object" + }, + "v1VmLaunchSecurity": { + "properties": { + "sev": { + "$ref": "#/definitions/v1VmSEV" + } + }, + "type": "object" + }, + "v1VmListMeta": { + "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.", + "properties": { + "continue": { + "description": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message.", + "type": "string" + }, + "remainingItemCount": { + "description": "remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact.", + "format": "int64", + "type": "integer" + }, + "resourceVersion": { + "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only.", + "type": "string" + }, + "selfLink": { + "description": "selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmLocalObjectReference": { + "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", + "properties": { + "name": { + "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + } + }, + "type": "object" + }, + "v1VmLunTarget": { + "properties": { + "bus": { + "description": "Bus indicates the type of disk device to emulate. supported values: virtio, sata, scsi.", + "type": "string" + }, + "readonly": { + "description": "ReadOnly. Defaults to false.", + "type": "boolean" + } + }, + "type": "object" + }, + "v1VmMachine": { + "properties": { + "type": { + "description": "QEMU machine type is the actual chipset of the VirtualMachineInstance.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmManagedFieldsEntry": { + "description": "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted.", + "type": "string" + }, + "fieldsType": { + "description": "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\"", + "type": "string" + }, + "fieldsV1": { + "$ref": "#/definitions/v1VmFieldsV1" + }, + "manager": { + "description": "Manager is an identifier of the workflow managing these fields.", + "type": "string" + }, + "operation": { + "description": "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'.", + "type": "string" + }, + "subresource": { + "description": "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource.", + "type": "string" + }, + "time": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1VmMemory": { + "description": "Memory allows specifying the VirtualMachineInstance memory features.", + "properties": { + "guest": { + "$ref": "#/definitions/v1VmQuantity" + }, + "hugepages": { + "$ref": "#/definitions/v1VmHugepages" + } + }, + "type": "object" + }, + "v1VmMemoryDumpVolumeSource": { + "properties": { + "claimName": { + "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "type": "string" + }, + "hotpluggable": { + "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", + "type": "boolean" + }, + "readOnly": { + "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", + "type": "boolean" + } + }, + "required": [ + "claimName" + ], + "type": "object" + }, + "v1VmMultusNetwork": { + "description": "Represents the multus cni network.", + "properties": { + "default": { + "description": "Select the default network and add it to the multus-cni.io/default-network annotation.", + "type": "boolean" + }, + "networkName": { + "description": "References to a NetworkAttachmentDefinition CRD object. Format: , /. If namespace is not specified, VMI namespace is assumed.", + "type": "string" + } + }, + "required": [ + "networkName" + ], + "type": "object" + }, + "v1VmNUMA": { + "properties": { + "guestMappingPassthrough": { + "$ref": "#/definitions/v1VmNUMAGuestMappingPassthrough" + } + }, + "type": "object" + }, + "v1VmNUMAGuestMappingPassthrough": { + "description": "NUMAGuestMappingPassthrough instructs kubevirt to model numa topology which is compatible with the CPU pinning on the guest. This will result in a subset of the node numa topology being passed through, ensuring that virtual numa nodes and their memory never cross boundaries coming from the node numa mapping.", + "type": "object" + }, + "v1VmNetwork": { + "description": "Network represents a network type and a resource that should be connected to the vm.", + "properties": { + "multus": { + "$ref": "#/definitions/v1VmMultusNetwork" + }, + "name": { + "description": "Network name. Must be a DNS_LABEL and unique within the vm. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "pod": { + "$ref": "#/definitions/v1VmPodNetwork" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1VmNodeAffinity": { + "description": "Node affinity is a group of node affinity scheduling rules.", + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.", + "items": { + "$ref": "#/definitions/v1VmPreferredSchedulingTerm" + }, + "type": "array" + }, + "requiredDuringSchedulingIgnoredDuringExecution": { + "$ref": "#/definitions/v1VmNodeSelector" + } + }, + "type": "object" + }, + "v1VmNodeSelector": { + "description": "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms.", + "properties": { + "nodeSelectorTerms": { + "description": "Required. A list of node selector terms. The terms are ORed.", + "items": { + "$ref": "#/definitions/v1VmNodeSelectorTerm" + }, + "type": "array" + } + }, + "required": [ + "nodeSelectorTerms" + ], + "type": "object" + }, + "v1VmNodeSelectorRequirement": { + "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "properties": { + "key": { + "description": "The label key that the selector applies to.", + "type": "string" + }, + "operator": { + "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.", + "type": "string" + }, + "values": { + "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "key", + "operator" + ], + "type": "object" + }, + "v1VmNodeSelectorTerm": { + "description": "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.", + "properties": { + "matchExpressions": { + "description": "A list of node selector requirements by node's labels.", + "items": { + "$ref": "#/definitions/v1VmNodeSelectorRequirement" + }, + "type": "array" + }, + "matchFields": { + "description": "A list of node selector requirements by node's fields.", + "items": { + "$ref": "#/definitions/v1VmNodeSelectorRequirement" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1VmObjectFieldSelector": { + "description": "ObjectFieldSelector selects an APIVersioned field of an object.", + "properties": { + "apiVersion": { + "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", + "type": "string" + }, + "fieldPath": { + "description": "Path of the field to select in the specified API version.", + "type": "string" + } + }, + "required": [ + "fieldPath" + ], + "type": "object" + }, + "v1VmObjectMeta": { + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", + "properties": { + "annotations": { + "additionalProperties": { + "type": "string" + }, + "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", + "type": "object" + }, + "clusterName": { + "description": "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.", + "type": "string" + }, + "creationTimestamp": { + "description": "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "type": "string" + }, + "deletionGracePeriodSeconds": { + "description": "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.", + "format": "int64", + "type": "integer" + }, + "deletionTimestamp": { + "description": "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "format": "date-time", + "type": "string", + "x-nullable": true + }, + "finalizers": { + "description": "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order. Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list.", + "items": { + "type": "string" + }, + "type": "array", + "x-kubernetes-patch-strategy": "merge" + }, + "generateName": { + "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.", + "type": "string" + }, + "generation": { + "description": "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.", + "format": "int64", + "type": "integer" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", + "type": "object" + }, + "managedFields": { + "description": "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object.", + "items": { + "$ref": "#/definitions/v1VmManagedFieldsEntry" + }, + "type": "array" + }, + "name": { + "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + }, + "namespace": { + "description": "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\nMust be a DNS_LABEL. Cannot be updated.", + "type": "string" + }, + "ownerReferences": { + "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", + "items": { + "$ref": "#/definitions/v1VmOwnerReference" + }, + "type": "array", + "x-kubernetes-patch-merge-key": "uid", + "x-kubernetes-patch-strategy": "merge" + }, + "resourceVersion": { + "description": "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\nPopulated by the system. Read-only. Value must be treated as opaque by clients.", + "type": "string" + }, + "selfLink": { + "description": "SelfLink is a URL representing this object. Populated by the system. Read-only.\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release.", + "type": "string" + }, + "uid": { + "description": "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\nPopulated by the system. Read-only.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmOwnerReference": { + "description": "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field.", + "properties": { + "apiVersion": { + "description": "API version of the referent.", + "type": "string" + }, + "blockOwnerDeletion": { + "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned.", + "type": "boolean" + }, + "controller": { + "description": "If true, this reference points to the managing controller.", + "type": "boolean" + }, + "kind": { + "description": "Kind of the referent.", + "type": "string" + }, + "name": { + "description": "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names", + "type": "string" + }, + "uid": { + "description": "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids", + "type": "string" + } + }, + "required": [ + "apiVersion", + "kind", + "name", + "uid" + ], + "type": "object" + }, + "v1VmPITTimer": { + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\", \"discard\".", + "type": "string" + } + }, + "type": "object" + }, + "v1VmPersistentVolumeClaimSpec": { + "description": "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes", + "properties": { + "accessModes": { + "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", + "items": { + "type": "string" + }, + "type": "array" + }, + "dataSource": { + "$ref": "#/definitions/v1VmTypedLocalObjectReference" + }, + "dataSourceRef": { + "$ref": "#/definitions/v1VmTypedLocalObjectReference" + }, + "resources": { + "$ref": "#/definitions/v1VmCoreResourceRequirements" + }, + "selector": { + "$ref": "#/definitions/v1VmLabelSelector" + }, + "storageClassName": { + "description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", + "type": "string" + }, + "volumeMode": { + "description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", + "type": "string" + }, + "volumeName": { + "description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmPersistentVolumeClaimVolumeSource": { + "description": "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. Directly attached to the vmi via qemu. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "properties": { + "claimName": { + "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "type": "string" + }, + "hotpluggable": { + "description": "Hotpluggable indicates whether the volume can be hotplugged and hotunplugged.", + "type": "boolean" + }, + "readOnly": { + "description": "Will force the ReadOnly setting in VolumeMounts. Default false.", + "type": "boolean" + } + }, + "required": [ + "claimName" + ], + "type": "object" + }, + "v1VmPodAffinity": { + "description": "Pod affinity is a group of inter pod affinity scheduling rules.", + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.", + "items": { + "$ref": "#/definitions/v1VmWeightedPodAffinityTerm" + }, + "type": "array" + }, + "requiredDuringSchedulingIgnoredDuringExecution": { + "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.", + "items": { + "$ref": "#/definitions/v1VmPodAffinityTerm" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1VmPodAffinityTerm": { + "description": "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running", + "properties": { + "labelSelector": { + "$ref": "#/definitions/v1VmLabelSelector" + }, + "namespaceSelector": { + "$ref": "#/definitions/v1VmLabelSelector" + }, + "namespaces": { + "description": "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"", + "items": { + "type": "string" + }, + "type": "array" + }, + "topologyKey": { + "description": "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.", + "type": "string" + } + }, + "required": [ + "topologyKey" + ], + "type": "object" + }, + "v1VmPodDnsConfig": { + "description": "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.", + "properties": { + "nameservers": { + "description": "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed.", + "items": { + "type": "string" + }, + "type": "array" + }, + "options": { + "description": "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy.", + "items": { + "$ref": "#/definitions/v1VmPodDnsConfigOption" + }, + "type": "array" + }, + "searches": { + "description": "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1VmPodDnsConfigOption": { + "description": "PodDNSConfigOption defines DNS resolver options of a pod.", + "properties": { + "name": { + "description": "Required.", + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "v1VmPodNetwork": { + "description": "Represents the stock pod network interface.", + "properties": { + "vmIPv6NetworkCIDR": { + "description": "IPv6 CIDR for the vm network. Defaults to fd10:0:2::/120 if not specified.", + "type": "string" + }, + "vmNetworkCIDR": { + "description": "CIDR for vm network. Default 10.0.2.0/24 if not specified.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmPort": { + "description": "Port represents a port to expose from the virtual machine. Default protocol TCP. The port field is mandatory", + "properties": { + "name": { + "description": "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.", + "type": "string" + }, + "port": { + "description": "Number of port to expose for the virtual machine. This must be a valid port number, 0 < x < 65536.", + "format": "int32", + "type": "integer" + }, + "protocol": { + "description": "Protocol for port. Must be UDP or TCP. Defaults to \"TCP\".", + "type": "string" + } + }, + "required": [ + "port" + ], + "type": "object" + }, + "v1VmPreferenceMatcher": { + "description": "PreferenceMatcher references a set of preference that is used to fill fields in the VMI template.", + "properties": { + "inferFromVolume": { + "description": "InferFromVolume lists the name of a volume that should be used to infer or discover the preference to be used through known annotations on the underlying resource. Once applied to the PreferenceMatcher this field is removed.", + "type": "string" + }, + "kind": { + "description": "Kind specifies which preference resource is referenced. Allowed values are: \"VirtualMachinePreference\" and \"VirtualMachineClusterPreference\". If not specified, \"VirtualMachineClusterPreference\" is used by default.", + "type": "string" + }, + "name": { + "description": "Name is the name of the VirtualMachinePreference or VirtualMachineClusterPreference", + "type": "string" + }, + "revisionName": { + "description": "RevisionName specifies a ControllerRevision containing a specific copy of the VirtualMachinePreference or VirtualMachineClusterPreference to be used. This is initially captured the first time the instancetype is applied to the VirtualMachineInstance.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmPreferredSchedulingTerm": { + "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", + "properties": { + "preference": { + "$ref": "#/definitions/v1VmNodeSelectorTerm" + }, + "weight": { + "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", + "format": "int32", + "type": "integer" + } + }, + "required": [ + "weight", + "preference" + ], + "type": "object" + }, + "v1VmProbe": { + "description": "Probe describes a health check to be performed against a VirtualMachineInstance to determine whether it is alive or ready to receive traffic.", + "properties": { + "exec": { + "$ref": "#/definitions/v1VmExecAction" + }, + "failureThreshold": { + "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.", + "format": "int32", + "type": "integer" + }, + "guestAgentPing": { + "$ref": "#/definitions/v1VmGuestAgentPing" + }, + "httpGet": { + "$ref": "#/definitions/v1VmHttpGetAction" + }, + "initialDelaySeconds": { + "description": "Number of seconds after the VirtualMachineInstance has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "format": "int32", + "type": "integer" + }, + "periodSeconds": { + "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.", + "format": "int32", + "type": "integer" + }, + "successThreshold": { + "description": "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.", + "format": "int32", + "type": "integer" + }, + "tcpSocket": { + "$ref": "#/definitions/v1VmTcpSocketAction" + }, + "timeoutSeconds": { + "description": "Number of seconds after which the probe times out. For exec probes the timeout fails the probe but does not terminate the command running on the guest. This means a blocking command can result in an increasing load on the guest. A small buffer will be added to the resulting workload exec probe to compensate for delays caused by the qemu guest exec mechanism. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "v1VmQemuGuestAgentSshPublicKeyAccessCredentialPropagation": { + "properties": { + "users": { + "description": "Users represents a list of guest users that should have the ssh public keys added to their authorized_keys file.", + "items": { + "type": "string" + }, + "type": "array", + "x-kubernetes-list-type": "set" + } + }, + "required": [ + "users" + ], + "type": "object" + }, + "v1VmQemuGuestAgentUserPasswordAccessCredentialPropagation": { + "type": "object" + }, + "v1VmQuantity": { + "description": "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n ::= \n (Note that may be empty, from the \"\" case in .)\n ::= 0 | 1 | ... | 9 ::= | ::= | . | . | . ::= \"+\" | \"-\" ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei\n (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n ::= m | \"\" | k | M | G | T | P | E\n (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n ::= \"e\" | \"E\" \n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n a. No precision is lost\n b. No fractional digits will be emitted\n c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n 1.5 will be serialized as \"1500m\"\n 1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.", + "type": "string" + }, + "v1VmRTCTimer": { + "properties": { + "present": { + "description": "Enabled set to false makes sure that the machine type or a preset can't add the timer. Defaults to true.", + "type": "boolean" + }, + "tickPolicy": { + "description": "TickPolicy determines what happens when QEMU misses a deadline for injecting a tick to the guest. One of \"delay\", \"catchup\".", + "type": "string" + }, + "track": { + "description": "Track the guest or the wall clock.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmRealtime": { + "description": "Realtime holds the tuning knobs specific for realtime workloads.", + "properties": { + "mask": { + "description": "Mask defines the vcpu mask expression that defines which vcpus are used for realtime. Format matches libvirt's expressions. Example: \"0-3,^1\",\"0,2,3\",\"2-3\"", + "type": "string" + } + }, + "type": "object" + }, + "v1VmRemoveVolumeOptions": { + "description": "RemoveVolumeOptions is provided when dynamically hot unplugging volume and disk", + "properties": { + "dryRun": { + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "items": { + "type": "string" + }, + "type": "array", + "x-kubernetes-list-type": "atomic" + }, + "name": { + "description": "Name represents the name that maps to both the disk and volume that should be removed", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1VmResourceFieldSelector": { + "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", + "properties": { + "containerName": { + "description": "Container name: required for volumes, optional for env vars", + "type": "string" + }, + "divisor": { + "$ref": "#/definitions/v1VmQuantity" + }, + "resource": { + "description": "Required: resource to select", + "type": "string" + } + }, + "required": [ + "resource" + ], + "type": "object" + }, + "v1VmResourceRequirements": { + "properties": { + "limits": { + "description": "Limits describes the maximum amount of compute resources allowed. Valid resource keys are \"memory\" and \"cpu\".", + "type": "object" + }, + "overcommitGuestOverhead": { + "description": "Don't ask the scheduler to take the guest-management overhead into account. Instead put the overhead only into the container's memory limit. This can lead to crashes if all memory is in use on a node. Defaults to false.", + "type": "boolean" + }, + "requests": { + "description": "Requests is a description of the initial vmi resources. Valid resource keys are \"memory\" and \"cpu\".", + "type": "object" + } + }, + "type": "object" + }, + "v1VmRng": { + "description": "Rng represents the random device passed from host", + "type": "object" + }, + "v1VmSEV": { + "type": "object" + }, + "v1VmSecretVolumeSource": { + "description": "SecretVolumeSource adapts a Secret into a volume.", + "properties": { + "optional": { + "description": "Specify whether the Secret or it's keys must be defined", + "type": "boolean" + }, + "secretName": { + "description": "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret", + "type": "string" + }, + "volumeLabel": { + "description": "The volume label of the resulting disk inside the VMI. Different bootstrapping mechanisms require different values. Typical values are \"cidata\" (cloud-init), \"config-2\" (cloud-init) or \"OEMDRV\" (kickstart).", + "type": "string" + } + }, + "type": "object" + }, + "v1VmServiceAccountVolumeSource": { + "description": "ServiceAccountVolumeSource adapts a ServiceAccount into a volume.", + "properties": { + "serviceAccountName": { + "description": "Name of the service account in the pod's namespace to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/", + "type": "string" + } + }, + "type": "object" + }, + "v1VmSnapshotVolumesLists": { + "description": "SnapshotVolumesLists includes the list of volumes which were included in the snapshot and volumes which were excluded from the snapshot", + "properties": { + "excludedVolumes": { + "items": { + "type": "string" + }, + "type": "array", + "x-kubernetes-list-type": "set" + }, + "includedVolumes": { + "items": { + "type": "string" + }, + "type": "array", + "x-kubernetes-list-type": "set" + } + }, + "type": "object" + }, + "v1VmSoundDevice": { + "description": "Represents the user's configuration to emulate sound cards in the VMI.", + "properties": { + "model": { + "description": "We only support ich9 or ac97. If SoundDevice is not set: No sound card is emulated. If SoundDevice is set but Model is not: ich9", + "type": "string" + }, + "name": { + "description": "User's defined name for this sound device", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1VmSshPublicKeyAccessCredential": { + "description": "SSHPublicKeyAccessCredential represents a source and propagation method for injecting ssh public keys into a vm guest", + "properties": { + "propagationMethod": { + "$ref": "#/definitions/v1VmSshPublicKeyAccessCredentialPropagationMethod" + }, + "source": { + "$ref": "#/definitions/v1VmSshPublicKeyAccessCredentialSource" + } + }, + "required": [ + "source", + "propagationMethod" + ], + "type": "object" + }, + "v1VmSshPublicKeyAccessCredentialPropagationMethod": { + "description": "SSHPublicKeyAccessCredentialPropagationMethod represents the method used to inject a ssh public key into the vm guest. Only one of its members may be specified.", + "properties": { + "configDrive": { + "$ref": "#/definitions/v1VmConfigDriveSshPublicKeyAccessCredentialPropagation" + }, + "qemuGuestAgent": { + "$ref": "#/definitions/v1VmQemuGuestAgentSshPublicKeyAccessCredentialPropagation" + } + }, + "type": "object" + }, + "v1VmSshPublicKeyAccessCredentialSource": { + "description": "SSHPublicKeyAccessCredentialSource represents where to retrieve the ssh key credentials Only one of its members may be specified.", + "properties": { + "secret": { + "$ref": "#/definitions/v1VmAccessCredentialSecretSource" + } + }, + "type": "object" + }, + "v1VmStorageSpec": { + "description": "StorageSpec defines the Storage type specification", + "properties": { + "accessModes": { + "description": "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1", + "items": { + "type": "string" + }, + "type": "array" + }, + "dataSource": { + "$ref": "#/definitions/v1VmTypedLocalObjectReference" + }, + "resources": { + "$ref": "#/definitions/v1VmCoreResourceRequirements" + }, + "selector": { + "$ref": "#/definitions/v1VmLabelSelector" + }, + "storageClassName": { + "description": "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1", + "type": "string" + }, + "volumeMode": { + "description": "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.", + "type": "string" + }, + "volumeName": { + "description": "VolumeName is the binding reference to the PersistentVolume backing this claim.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmSyNICTimer": { + "properties": { + "direct": { + "$ref": "#/definitions/v1VmFeatureState" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "v1VmSysprepSource": { + "description": "Represents a Sysprep volume source.", + "properties": { + "configMap": { + "$ref": "#/definitions/v1VmLocalObjectReference" + }, + "secret": { + "$ref": "#/definitions/v1VmLocalObjectReference" + } + }, + "type": "object" + }, + "v1VmTPMDevice": { + "type": "object" + }, + "v1VmTcpSocketAction": { + "description": "TCPSocketAction describes an action based on opening a socket", + "properties": { + "host": { + "description": "Optional: Host name to connect to, defaults to the pod IP.", + "type": "string" + }, + "port": { + "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.", + "type": [ + "string", + "number" + ] + } + }, + "required": [ + "port" + ], + "type": "object" + }, + "v1VmTimer": { + "description": "Represents all available timers in a vmi.", + "properties": { + "hpet": { + "$ref": "#/definitions/v1VmHPETTimer" + }, + "hyperv": { + "$ref": "#/definitions/v1VmHypervTimer" + }, + "kvm": { + "$ref": "#/definitions/v1VmKVmTimer" + }, + "pit": { + "$ref": "#/definitions/v1VmPITTimer" + }, + "rtc": { + "$ref": "#/definitions/v1VmRTCTimer" + } + }, + "type": "object" + }, + "v1VmToleration": { + "description": "The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .", + "properties": { + "effect": { + "description": "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.", + "type": "string" + }, + "key": { + "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.", + "type": "string" + }, + "operator": { + "description": "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.", + "type": "string" + }, + "tolerationSeconds": { + "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.", + "format": "int64", + "type": "integer" + }, + "value": { + "description": "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.", + "type": "string" + } + }, + "type": "object" + }, + "v1VmTopologySpreadConstraint": { + "description": "TopologySpreadConstraint specifies how to spread matching pods among the given topology.", + "properties": { + "labelSelector": { + "$ref": "#/definitions/v1VmLabelSelector" + }, + "maxSkew": { + "description": "MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It's a required field. Default value is 1 and 0 is not allowed.", + "format": "int32", + "type": "integer" + }, + "topologyKey": { + "description": "TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a \"bucket\", and try to put balanced number of pods into each bucket. It's a required field.", + "type": "string" + }, + "whenUnsatisfiable": { + "description": "WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,\n but giving higher precedence to topologies that would help reduce the\n skew.\nA constraint is considered \"Unsatisfiable\" for an incoming pod if and only if every possible node assignment for that pod would violate \"MaxSkew\" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.", + "type": "string" + } + }, + "required": [ + "maxSkew", + "topologyKey", + "whenUnsatisfiable" + ], + "type": "object" + }, + "v1VmTypedLocalObjectReference": { + "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.", + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.", + "type": "string" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string" + } + }, + "required": [ + "kind", + "name" + ], + "type": "object" + }, + "v1VmUserPasswordAccessCredential": { + "description": "UserPasswordAccessCredential represents a source and propagation method for injecting user passwords into a vm guest Only one of its members may be specified.", + "properties": { + "propagationMethod": { + "$ref": "#/definitions/v1VmUserPasswordAccessCredentialPropagationMethod" + }, + "source": { + "$ref": "#/definitions/v1VmUserPasswordAccessCredentialSource" + } + }, + "required": [ + "source", + "propagationMethod" + ], + "type": "object" + }, + "v1VmUserPasswordAccessCredentialPropagationMethod": { + "description": "UserPasswordAccessCredentialPropagationMethod represents the method used to inject a user passwords into the vm guest. Only one of its members may be specified.", + "properties": { + "qemuGuestAgent": { + "$ref": "#/definitions/v1VmQemuGuestAgentUserPasswordAccessCredentialPropagation" + } + }, + "type": "object" + }, + "v1VmUserPasswordAccessCredentialSource": { + "description": "UserPasswordAccessCredentialSource represents where to retrieve the user password credentials Only one of its members may be specified.", + "properties": { + "secret": { + "$ref": "#/definitions/v1VmAccessCredentialSecretSource" + } + }, + "type": "object" + }, + "v1VmVGPUDisplayOptions": { + "properties": { + "enabled": { + "description": "Enabled determines if a display addapter backed by a vGPU should be enabled or disabled on the guest. Defaults to true.", + "type": "boolean" + }, + "ramFB": { + "$ref": "#/definitions/v1VmFeatureState" + } + }, + "type": "object" + }, + "v1VmVGPUOptions": { + "properties": { + "display": { + "$ref": "#/definitions/v1VmVGPUDisplayOptions" + } + }, + "type": "object" + }, + "v1VmVirtualMachineCondition": { + "description": "VirtualMachineCondition represents the state of VirtualMachine", + "properties": { + "lastProbeTime": { + "type": "string" + }, + "lastTransitionTime": { + "type": "string" + }, + "message": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "status": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "type", + "status" + ], + "type": "object" + }, + "v1VmVirtualMachineInstanceSpec": { + "description": "VirtualMachineInstanceSpec is a description of a VirtualMachineInstance.", + "properties": { + "accessCredentials": { + "description": "Specifies a set of public keys to inject into the vm guest", + "items": { + "$ref": "#/definitions/v1VmAccessCredential" + }, + "type": "array", + "x-kubernetes-list-type": "atomic" + }, + "affinity": { + "$ref": "#/definitions/v1VmAffinity" + }, + "dnsConfig": { + "$ref": "#/definitions/v1VmPodDnsConfig" + }, + "dnsPolicy": { + "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", + "type": "string" + }, + "domain": { + "$ref": "#/definitions/v1VmDomainSpec" + }, + "evictionStrategy": { + "description": "EvictionStrategy can be set to \"LiveMigrate\" if the VirtualMachineInstance should be migrated instead of shut-off in case of a node drain.", + "type": "string" + }, + "hostname": { + "description": "Specifies the hostname of the vmi If not specified, the hostname will be set to the name of the vmi, if dhcp or cloud-init is configured properly.", + "type": "string" + }, + "livenessProbe": { + "$ref": "#/definitions/v1VmProbe" + }, + "networks": { + "description": "List of networks that can be attached to a vm's virtual interface.", + "items": { + "$ref": "#/definitions/v1VmNetwork" + }, + "type": "array" + }, + "nodeSelector": { + "additionalProperties": { + "type": "string" + }, + "description": "NodeSelector is a selector which must be true for the vmi to fit on a node. Selector which must match a node's labels for the vmi to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/", + "type": "object" + }, + "priorityClassName": { + "description": "If specified, indicates the pod's priority. If not specified, the pod priority will be default or zero if there is no default.", + "type": "string" + }, + "readinessProbe": { + "$ref": "#/definitions/v1VmProbe" + }, + "schedulerName": { + "description": "If specified, the VMI will be dispatched by specified scheduler. If not specified, the VMI will be dispatched by default scheduler.", + "type": "string" + }, + "startStrategy": { + "description": "StartStrategy can be set to \"Paused\" if Virtual Machine should be started in paused state.", + "type": "string" + }, + "subdomain": { + "description": "If specified, the fully qualified vmi hostname will be \"...svc.\". If not specified, the vmi will not have a domainname at all. The DNS entry will resolve to the vmi, no matter if the vmi itself can pick up a hostname.", + "type": "string" + }, + "terminationGracePeriodSeconds": { + "description": "Grace period observed after signalling a VirtualMachineInstance to stop after which the VirtualMachineInstance is force terminated.", + "format": "int64", + "type": "integer" + }, + "tolerations": { + "description": "If toleration is specified, obey all the toleration rules.", + "items": { + "$ref": "#/definitions/v1VmToleration" + }, + "type": "array" + }, + "topologySpreadConstraints": { + "description": "TopologySpreadConstraints describes how a group of VMIs will be spread across a given topology domains. K8s scheduler will schedule VMI pods in a way which abides by the constraints.", + "items": { + "$ref": "#/definitions/v1VmTopologySpreadConstraint" + }, + "type": "array", + "x-kubernetes-list-map-keys": [ + "topologyKey", + "whenUnsatisfiable" + ], + "x-kubernetes-list-type": "map", + "x-kubernetes-patch-merge-key": "topologyKey", + "x-kubernetes-patch-strategy": "merge" + }, + "volumes": { + "description": "List of volumes that can be mounted by disks belonging to the vmi.", + "items": { + "$ref": "#/definitions/v1VmVolume" + }, + "type": "array" + } + }, + "required": [ + "domain" + ], + "type": "object" + }, + "v1VmVirtualMachineInstanceTemplateSpec": { + "properties": { + "metadata": { + "$ref": "#/definitions/v1VmObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1VmVirtualMachineInstanceSpec" + } + }, + "type": "object" + }, + "v1VmVirtualMachineMemoryDumpRequest": { + "description": "VirtualMachineMemoryDumpRequest represent the memory dump request phase and info", + "properties": { + "claimName": { + "description": "ClaimName is the name of the pvc that will contain the memory dump", + "type": "string" + }, + "endTimestamp": { + "$ref": "#/definitions/v1Time" + }, + "fileName": { + "description": "FileName represents the name of the output file", + "type": "string" + }, + "message": { + "description": "Message is a detailed message about failure of the memory dump", + "type": "string" + }, + "phase": { + "description": "Phase represents the memory dump phase", + "type": "string" + }, + "remove": { + "description": "Remove represents request of dissociating the memory dump pvc", + "type": "boolean" + }, + "startTimestamp": { + "$ref": "#/definitions/v1Time" + } + }, + "required": [ + "claimName", + "phase" + ], + "type": "object" + }, + "v1VmVirtualMachineStartFailure": { + "description": "VirtualMachineStartFailure tracks VMIs which failed to transition successfully to running using the VM status", + "properties": { + "consecutiveFailCount": { + "format": "int32", + "type": "integer" + }, + "lastFailedVMIUID": { + "type": "string" + }, + "retryAfterTimestamp": { + "$ref": "#/definitions/v1Time" + } + }, + "type": "object" + }, + "v1VmVirtualMachineStateChangeRequest": { + "properties": { + "action": { + "description": "Indicates the type of action that is requested. e.g. Start or Stop", + "type": "string" + }, + "data": { + "additionalProperties": { + "type": "string" + }, + "description": "Provides additional data in order to perform the Action", + "type": "object" + }, + "uid": { + "description": "Indicates the UUID of an existing Virtual Machine Instance that this change request applies to -- if applicable", + "type": "string" + } + }, + "required": [ + "action" + ], + "type": "object" + }, + "v1VmVirtualMachineVolumeRequest": { + "properties": { + "addVolumeOptions": { + "$ref": "#/definitions/v1VmAddVolumeOptions" + }, + "removeVolumeOptions": { + "$ref": "#/definitions/v1VmRemoveVolumeOptions" + } + }, + "type": "object" + }, + "v1VmVolume": { + "description": "Volume represents a named volume in a vmi.", + "properties": { + "cloudInitConfigDrive": { + "$ref": "#/definitions/v1VmCloudInitConfigDriveSource" + }, + "cloudInitNoCloud": { + "$ref": "#/definitions/v1VmCloudInitNoCloudSource" + }, + "configMap": { + "$ref": "#/definitions/v1VmConfigMapVolumeSource" + }, + "containerDisk": { + "$ref": "#/definitions/v1VmContainerDiskSource" + }, + "dataVolume": { + "$ref": "#/definitions/v1VmCoreDataVolumeSource" + }, + "downwardAPI": { + "$ref": "#/definitions/v1VmDownwardApiVolumeSource" + }, + "downwardMetrics": { + "$ref": "#/definitions/v1VmDownwardMetricsVolumeSource" + }, + "emptyDisk": { + "$ref": "#/definitions/v1VmEmptyDiskSource" + }, + "ephemeral": { + "$ref": "#/definitions/v1VmEphemeralVolumeSource" + }, + "hostDisk": { + "$ref": "#/definitions/v1VmHostDisk" + }, + "memoryDump": { + "$ref": "#/definitions/v1VmMemoryDumpVolumeSource" + }, + "name": { + "description": "Volume's name. Must be a DNS_LABEL and unique within the vmi. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "persistentVolumeClaim": { + "$ref": "#/definitions/v1VmPersistentVolumeClaimVolumeSource" + }, + "secret": { + "$ref": "#/definitions/v1VmSecretVolumeSource" + }, + "serviceAccount": { + "$ref": "#/definitions/v1VmServiceAccountVolumeSource" + }, + "sysprep": { + "$ref": "#/definitions/v1VmSysprepSource" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1VmVolumeSnapshotStatus": { + "properties": { + "enabled": { + "description": "True if the volume supports snapshotting", + "type": "boolean" + }, + "name": { + "description": "Volume name", + "type": "string" + }, + "reason": { + "description": "Empty if snapshotting is enabled, contains reason otherwise", + "type": "string" + } + }, + "required": [ + "name", + "enabled" + ], + "type": "object" + }, + "v1VmWatchdog": { + "description": "Named watchdog device.", + "properties": { + "i6300esb": { + "$ref": "#/definitions/v1VmI6300ESBWatchdog" + }, + "name": { + "description": "Name of the watchdog.", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "v1VmWeightedPodAffinityTerm": { + "description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)", + "properties": { + "podAffinityTerm": { + "$ref": "#/definitions/v1VmPodAffinityTerm" + }, + "weight": { + "description": "weight associated with matching the corresponding podAffinityTerm, in the range 1-100.", + "format": "int32", + "type": "integer" + } + }, + "required": [ + "weight", + "podAffinityTerm" + ], + "type": "object" + }, + "v1VsphereAccount": { + "description": "VSphere account information", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the account.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1VsphereCloudAccount" + }, + "status": { + "$ref": "#/definitions/v1CloudAccountStatus" + } + }, + "type": "object" + }, + "v1VsphereAccounts": { + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1VsphereAccount" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1VsphereCloudAccount": { + "properties": { + "insecure": { + "description": "Insecure is a flag that controls whether or not to validate the vSphere server's certificate.", + "type": "boolean", + "x-omitempty": false + }, + "password": { + "type": "string" + }, + "username": { + "type": "string" + }, + "vcenterServer": { + "description": "VcenterServer is the address of the vSphere endpoint", + "type": "string" + } + }, + "required": [ + "vcenterServer", + "username", + "password" + ], + "type": "object" + }, + "v1VsphereCloudClusterConfigEntity": { + "description": "vSphere cloud cluster config entity", + "properties": { + "clusterConfig": { + "$ref": "#/definitions/v1VsphereClusterConfigEntity" + } + }, + "type": "object" + }, + "v1VsphereCloudConfig": { + "description": "VsphereCloudConfig is the Schema for the vspherecloudconfigs API", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Cloud type of the cloud config", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1VsphereCloudConfigSpec" + }, + "status": { + "$ref": "#/definitions/v1VsphereCloudConfigStatus" + } + }, + "type": "object" + }, + "v1VsphereCloudConfigSpec": { + "description": "VsphereCloudConfigSpec defines the desired state of VsphereCloudConfig", + "properties": { + "cloudAccountRef": { + "$ref": "#/definitions/v1ObjectReference", + "description": "cloudAccountRef should point to the secret which contains VsphereCloudAccount" + }, + "clusterConfig": { + "$ref": "#/definitions/v1VsphereClusterConfig" + }, + "edgeHostRef": { + "$ref": "#/definitions/v1ObjectReference", + "description": "Appliance (Edge Host) uid for Edge env" + }, + "machinePoolConfig": { + "items": { + "$ref": "#/definitions/v1VsphereMachinePoolConfig" + }, + "type": "array" + } + }, + "required": [ + "clusterConfig", + "machinePoolConfig" + ], + "type": "object" + }, + "v1VsphereCloudConfigStatus": { + "description": "VsphereCloudConfigStatus defines the observed state of VsphereCloudConfig", + "properties": { + "ansibleDigest": { + "type": "string" + }, + "conditions": { + "items": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "type": "array" + }, + "isAddonLayer": { + "description": "addon layers present in spc", + "type": "boolean" + }, + "lastOVACreated": { + "type": "string" + }, + "lastVMExported": { + "type": "string" + }, + "nodeImage": { + "$ref": "#/definitions/v1VsphereImage" + }, + "roleDigest": { + "additionalProperties": { + "type": "string" + }, + "description": "this map will be for ansible roles present in eack pack", + "type": "object" + }, + "sourceImageId": { + "description": "sourceImageId, it can be from packref's annotations or from pack.json", + "type": "string" + }, + "uploadOvaS3": { + "description": "UploadOVAS3 will hold last image name which uploaded to S3", + "type": "string" + }, + "useCapiImage": { + "description": "If no ansible roles found in Packs then Mold should tell Drive to use capi image and not create custom image, because there is nothing to add", + "type": "boolean" + } + }, + "type": "object" + }, + "v1VsphereCloudDatacenter": { + "description": "Vsphere datacenter", + "properties": { + "computeClusters": { + "items": { + "$ref": "#/definitions/v1VsphereComputeCluster" + }, + "type": "array" + }, + "folders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "v1VsphereClusterConfig": { + "properties": { + "controlPlaneEndpoint": { + "$ref": "#/definitions/v1ControlPlaneEndPoint", + "description": "The optional control plane endpoint, which can be an IP or FQDN" + }, + "ntpServers": { + "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "placement": { + "$ref": "#/definitions/v1VspherePlacementConfig", + "description": "Placement configuration Placement config in ClusterConfig serve as default values for each MachinePool" + }, + "sshKeys": { + "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", + "items": { + "type": "string" + }, + "type": "array" + }, + "staticIp": { + "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", + "type": "boolean" + } + }, + "required": [ + "placement" + ], + "type": "object" + }, + "v1VsphereClusterConfigEntity": { + "properties": { + "controlPlaneEndpoint": { + "$ref": "#/definitions/v1ControlPlaneEndPoint", + "description": "The optional control plane endpoint, which can be an IP or FQDN" + }, + "ntpServers": { + "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "placement": { + "$ref": "#/definitions/v1VspherePlacementConfigEntity", + "description": "Placement configuration Placement config in ClusterConfig serve as default values for each MachinePool" + }, + "sshKeys": { + "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", + "items": { + "type": "string" + }, + "type": "array" + }, + "staticIp": { + "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", + "type": "boolean" + } + }, + "required": [ + "placement" + ], + "type": "object" + }, + "v1VsphereComputeCluster": { + "description": "Vsphere compute cluster", + "properties": { + "datastores": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "name": { + "type": "string" + }, + "networks": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "resourcePools": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1VsphereComputeClusterResources": { + "description": "Datacenter and its resources like datastore, resoucepool, folders", + "properties": { + "computecluster": { + "$ref": "#/definitions/v1VsphereComputeCluster" + }, + "datacenter": { + "description": "Name of the datacenter", + "type": "string" + } + }, + "type": "object" + }, + "v1VsphereDatacenter": { + "description": "List of Datacenter with computeclusters", + "properties": { + "computeclusters": { + "description": "List of the VSphere compute clusters in datacenter", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "datacenter": { + "description": "name of the datacenter of the VSphere", + "type": "string" + }, + "folders": { + "description": "List of the VSphere folders in datacenter", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1VsphereDatacenters": { + "description": "List of Datacenters with computeclusters", + "properties": { + "items": { + "description": "List of associated datacenters", + "items": { + "$ref": "#/definitions/v1VsphereDatacenter" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1VsphereDnsMapping": { + "description": "VSphere DNS Mapping", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1VsphereDnsMappingSpec" + } + }, + "type": "object" + }, + "v1VsphereDnsMappingSpec": { + "description": "VSphere DNS Mapping Spec", + "properties": { + "datacenter": { + "description": "VSphere datacenter name", + "type": "string" + }, + "dnsName": { + "description": "VSphere DNS name", + "type": "string" + }, + "network": { + "description": "VSphere network name", + "type": "string" + }, + "networkUrl": { + "description": "VSphere network URL", + "readOnly": true, + "type": "string" + }, + "privateGatewayUid": { + "description": "VSphere private gateway uid", + "type": "string" + } + }, + "required": [ + "privateGatewayUid", + "datacenter", + "network", + "dnsName" + ], + "type": "object" + }, + "v1VsphereDnsMappings": { + "properties": { + "items": { + "description": "List of vSphere DNS mapping", + "items": { + "$ref": "#/definitions/v1VsphereDnsMapping" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1VsphereEnv": { + "description": "Vsphere environment entity", + "properties": { + "version": { + "description": "Version of vsphere environment", + "type": "string" + } + }, + "type": "object" + }, + "v1VsphereImage": { + "description": "A generated Image should always be a template which resides inside vsphere Will not generate a OVA file out of the image OVA can be used as a base input of the os pack, that's internal to the pack", + "properties": { + "fullPath": { + "description": "full path of the image template location it contains datacenter/folder/templatename etc eg: /mydc/vm/template/spectro/workerpool-1-centos", + "type": "string" + }, + "state": { + "type": "string" + } + }, + "type": "object" + }, + "v1VsphereInstanceType": { + "properties": { + "diskGiB": { + "description": "DiskGiB is the size of a virtual machine's disk, in GiB. Defaults to the analogue property value in the template from which this machine is cloned.", + "format": "int32", + "type": "integer" + }, + "memoryMiB": { + "description": "MemoryMiB is the size of a virtual machine's memory, in MiB. Defaults to the analogue property value in the template from which this machine is cloned.", + "format": "int64", + "type": "integer" + }, + "numCPUs": { + "description": "NumCPUs is the number of virtual processors in a virtual machine. Defaults to the analogue property value in the template from which this machine is cloned.", + "format": "int32", + "type": "integer" + } + }, + "required": [ + "numCPUs", + "memoryMiB", + "diskGiB" + ], + "type": "object" + }, + "v1VsphereMachine": { + "description": "vSphere cloud VM definition", + "properties": { + "apiVersion": { + "description": "Deprecated. Not used for the resource info.", + "type": "string" + }, + "kind": { + "description": "Deprecated. Cloud type of the machine.", + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1VsphereMachineSpec" + }, + "status": { + "$ref": "#/definitions/v1CloudMachineStatus" + } + }, + "type": "object" + }, + "v1VsphereMachinePoolCloudConfigEntity": { + "properties": { + "instanceType": { + "$ref": "#/definitions/v1VsphereInstanceType" + }, + "placements": { + "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", + "items": { + "$ref": "#/definitions/v1VspherePlacementConfigEntity" + }, + "type": "array" + } + } + }, + "v1VsphereMachinePoolConfig": { + "properties": { + "additionalLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "additionalLabels", + "type": "object" + }, + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to resources managed by the provider, in addition to the ones added by default. For eg., tags for EKS nodeGroup or EKS NodegroupIAMRole", + "type": "object" + }, + "instanceType": { + "$ref": "#/definitions/v1VsphereInstanceType", + "description": "InstanceType defines the required CPU, Memory, Storage" + }, + "isControlPlane": { + "description": "whether this pool is for control plane", + "type": "boolean", + "x-omitempty": false + }, + "labels": { + "description": "labels for this pool, example: master/worker, gpu, windows", + "items": { + "type": "string" + }, + "type": "array" + }, + "machinePoolProperties": { + "$ref": "#/definitions/v1MachinePoolProperties" + }, + "maxSize": { + "description": "max size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "minSize": { + "description": "min size of the pool, for scaling", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "nodeRepaveInterval": { + "description": "Minimum number of seconds a node should be Ready, before the next node is selected for repave. Applicable only for workerpools in infrastructure cluster", + "format": "int32", + "type": "integer" + }, + "placements": { + "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", + "items": { + "$ref": "#/definitions/v1VspherePlacementConfig" + }, + "type": "array" + }, + "size": { + "description": "size of the pool, number of machines", + "format": "int32", + "type": "integer" + }, + "taints": { + "description": "master or worker taints", + "items": { + "$ref": "#/definitions/v1Taint" + }, + "type": "array", + "uniqueItems": true + }, + "updateStrategy": { + "$ref": "#/definitions/v1UpdateStrategy", + "description": "rolling update strategy for this machinepool if not specified, will use ScaleOut" + }, + "useControlPlaneAsWorker": { + "description": "if IsControlPlane==true && useControlPlaneAsWorker==true, then will remove master taint this will not be used for worker pools", + "type": "boolean", + "x-omitempty": false + } + }, + "required": [ + "isControlPlane", + "instanceType" + ], + "type": "object" + }, + "v1VsphereMachinePoolConfigEntity": { + "properties": { + "cloudConfig": { + "$ref": "#/definitions/v1VsphereMachinePoolCloudConfigEntity" + }, + "poolConfig": { + "$ref": "#/definitions/v1MachinePoolConfigEntity" + } + }, + "required": [ + "cloudConfig" + ], + "type": "object" + }, + "v1VsphereMachineSpec": { + "description": "vSphere cloud VM definition spec", + "properties": { + "images": { + "items": { + "$ref": "#/definitions/v1VsphereImage" + }, + "type": "array" + }, + "instanceType": { + "$ref": "#/definitions/v1VsphereInstanceType" + }, + "nics": { + "items": { + "$ref": "#/definitions/v1VsphereNic" + }, + "type": "array" + }, + "ntpServers": { + "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "placement": { + "$ref": "#/definitions/v1VspherePlacementConfig", + "description": "Placement configuration" + }, + "vcenterServer": { + "description": "VcenterServer is the address of the vSphere endpoint", + "type": "string" + } + }, + "required": [ + "vcenterServer", + "nics", + "placement" + ], + "type": "object" + }, + "v1VsphereMachines": { + "description": "vSphere machine list", + "properties": { + "items": { + "items": { + "$ref": "#/definitions/v1VsphereMachine" + }, + "type": "array", + "uniqueItems": true + }, + "listmeta": { + "$ref": "#/definitions/v1ListMetaData" + } + }, + "required": [ + "items" + ], + "type": "object" + }, + "v1VsphereNetworkConfig": { + "properties": { + "ipPool": { + "$ref": "#/definitions/v1IPPool", + "description": "when staticIP=true, need to provide IPPool" + }, + "networkName": { + "description": "NetworkName is the name of the network in which VMs are created/located.", + "type": "string" + }, + "parentPoolRef": { + "$ref": "#/definitions/v1ObjectReference", + "description": "ParentPoolRef reference to the ParentPool which allocates IPs for this IPPool" + }, + "staticIp": { + "description": "support dhcp or static IP, if false, use DHCP", + "type": "boolean" + } + }, + "required": [ + "networkName" + ], + "type": "object" + }, + "v1VsphereNetworkConfigEntity": { + "properties": { + "networkName": { + "description": "NetworkName is the name of the network in which VMs are created/located.", + "type": "string" + }, + "parentPoolUid": { + "description": "ParentPoolRef Uid to the ParentPool which allocates IPs for this IPPool", + "type": "string" + }, + "staticIp": { + "description": "support dhcp or static IP, if false, use DHCP", + "type": "boolean" + } + }, + "required": [ + "networkName" + ], + "type": "object" + }, + "v1VsphereNic": { + "description": "vSphere network interface", + "properties": { + "index": { + "format": "int8", + "type": "integer" + }, + "macAddress": { + "type": "string" + }, + "networkName": { + "type": "string" + }, + "privateIPs": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "networkName" + ], + "type": "object" + }, + "v1VsphereOverlordClusterConfigEntity": { + "properties": { + "controlPlaneEndpoint": { + "$ref": "#/definitions/v1ControlPlaneEndPoint", + "description": "The optional control plane endpoint, which can be an IP or FQDN" + }, + "ntpServers": { + "description": "NTPServers is a list of NTP servers to use instead of the machine image's default NTP server list.", + "items": { + "type": "string" + }, + "type": "array" + }, + "placements": { + "description": "Placements configuration Placements If defined, will replace default values defined in VsphereClusterConfig Array means one MachinePool can span across multiple vsphere compute cluster", + "items": { + "$ref": "#/definitions/v1VspherePlacementConfigEntity" + }, + "type": "array" + }, + "sshKeys": { + "description": "SSHKeys specifies a list of ssh authorized keys for the 'spectro' user", + "items": { + "type": "string" + }, + "type": "array" + }, + "staticIp": { + "description": "whether this cluster should use dhcp or static IP, if false, use DHCP if this is set, then all machinepools should have staticIP with provided IPPool adding this as an additional standalone flag without relating to placement.Nework main reason is to enable more validation for placement.Network.StaticIP which should come together with valid Network.IPPool and Network.Name", + "type": "boolean" + } + }, + "type": "object" + }, + "v1VspherePlacementConfig": { + "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", + "properties": { + "cluster": { + "description": "Cluster is the computecluster in vsphere", + "type": "string" + }, + "datacenter": { + "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", + "type": "string" + }, + "datastore": { + "description": "Datastore is the datastore in which VMs are created/located.", + "type": "string" + }, + "folder": { + "description": "Folder is the folder in which VMs are created/located.", + "type": "string" + }, + "imageTemplateFolder": { + "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", + "type": "string" + }, + "network": { + "$ref": "#/definitions/v1VsphereNetworkConfig", + "description": "network info" + }, + "resourcePool": { + "description": "ResourcePool is the resource pool within the above computecluster Cluster", + "type": "string" + }, + "storagePolicyName": { + "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", + "type": "string" + }, + "uid": { + "description": "UID for this placement", + "type": "string" + } + }, + "type": "object" + }, + "v1VspherePlacementConfigEntity": { + "description": "Both ClusterConfig and MachinePoolConfig will have PlacementConfig MachinePoolconfig.Placements will overwrite values defined in ClusterConfig Currently the convention is: Datacenter / Folder / ImageTemplateFolder / Network should be defined at ClusterConfig Cluster / ResourcePool / Datastore / Network is defined at MachinePool ClusterConfig Network should only indicate use DHCP or not MachinePool Network should contain the actual network and IPPool", + "properties": { + "cluster": { + "description": "Cluster is the computecluster in vsphere", + "type": "string" + }, + "datacenter": { + "description": "Datacenter is the name or inventory path of the datacenter where this machine's VM is created/located.", + "type": "string" + }, + "datastore": { + "description": "Datastore is the datastore in which VMs are created/located.", + "type": "string" + }, + "folder": { + "description": "Folder is the folder in which VMs are created/located.", + "type": "string" + }, + "imageTemplateFolder": { + "description": "ImageTemplateFolder is the folder in which VMs templates are created/located. if empty will use default value spectro-templates", + "type": "string" + }, + "network": { + "$ref": "#/definitions/v1VsphereNetworkConfigEntity", + "description": "network info" + }, + "resourcePool": { + "description": "ResourcePool is the resource pool within the above computecluster Cluster", + "type": "string" + }, + "storagePolicyName": { + "description": "StoragePolicyName of the storage policy to use with this Virtual Machine", + "type": "string" + }, + "uid": { + "description": "UID for this placement", + "type": "string" + } + }, + "type": "object" + }, + "v1Workspace": { + "description": "Workspace information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1WorkspaceSpec" + }, + "status": { + "$ref": "#/definitions/v1WorkspaceStatus" + } + } + }, + "v1WorkspaceBackup": { + "description": "Workspace backup", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1WorkspaceBackupSpec" + }, + "status": { + "$ref": "#/definitions/v1WorkspaceBackupStatus" + } + } + }, + "v1WorkspaceBackupClusterRef": { + "description": "Workspace backup cluster ref", + "properties": { + "backupName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + }, + "v1WorkspaceBackupConfig": { + "description": "Workspace backup config", + "properties": { + "backupConfig": { + "$ref": "#/definitions/v1ClusterBackupConfig" + }, + "clusterUids": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "includeAllClusters": { + "type": "boolean" + } + } + }, + "v1WorkspaceBackupConfigEntity": { + "description": "Cluster backup config", + "properties": { + "backupConfig": { + "$ref": "#/definitions/v1ClusterBackupConfig" + }, + "clusterUids": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "includeAllClusters": { + "type": "boolean" + } + } + }, + "v1WorkspaceBackupDeleteEntity": { + "description": "Cluster backup delete config", + "properties": { + "clusterConfigs": { + "items": { + "$ref": "#/definitions/v1WorkspaceBackupClusterRef" + }, + "type": "array", + "uniqueItems": true + }, + "requestUid": { + "type": "string" + } + } + }, + "v1WorkspaceBackupSpec": { + "description": "Workspace backup spec", + "properties": { + "config": { + "$ref": "#/definitions/v1WorkspaceBackupConfig" + }, + "workspaceUid": { + "type": "string" + } + } + }, + "v1WorkspaceBackupState": { + "description": "Workspace backup state", + "properties": { + "deleteState": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "v1WorkspaceBackupStatus": { + "description": "Workspace backup status", + "properties": { + "workspaceBackupStatuses": { + "items": { + "$ref": "#/definitions/v1WorkspaceBackupStatusMeta" + }, + "type": "array" + } + } + }, + "v1WorkspaceBackupStatusConfig": { + "description": "Workspace backup status config", + "properties": { + "backupName": { + "type": "string" + }, + "durationInHours": { + "format": "int64", + "type": "number" + }, + "includeAllDisks": { + "type": "boolean" + }, + "includeClusterResources": { + "type": "boolean" + }, + "namespaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1WorkspaceBackupStatusMeta": { + "description": "Workspace backup status meta", + "properties": { + "actor": { + "$ref": "#/definitions/v1ClusterFeatureActor" + }, + "requestUid": { + "type": "string" + }, + "workspaceBackupConfig": { + "$ref": "#/definitions/v1WorkspaceClusterBackupConfig" + } + } + }, + "v1WorkspaceClusterBackupConfig": { + "description": "Workspace cluster backup config", + "properties": { + "backupName": { + "type": "string" + }, + "backupState": { + "$ref": "#/definitions/v1WorkspaceBackupState" + }, + "backupTime": { + "$ref": "#/definitions/v1Time" + }, + "clusterBackupRefs": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterBackupResponse" + }, + "type": "array" + }, + "config": { + "$ref": "#/definitions/v1WorkspaceBackupStatusConfig" + }, + "requestTime": { + "$ref": "#/definitions/v1Time" + } + } + }, + "v1WorkspaceClusterBackupResponse": { + "description": "Workspace cluster backup response", + "properties": { + "backupStatusMeta": { + "$ref": "#/definitions/v1BackupStatusMeta" + }, + "backupUid": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + }, + "v1WorkspaceClusterNamespace": { + "description": "Workspace cluster namespace", + "properties": { + "image": { + "$ref": "#/definitions/v1WorkspaceNamespaceImage" + }, + "isRegex": { + "type": "boolean", + "x-omitempty": false + }, + "name": { + "type": "string" + }, + "namespaceResourceAllocation": { + "$ref": "#/definitions/v1WorkspaceNamespaceResourceAllocation" + } + } + }, + "v1WorkspaceClusterNamespacesEntity": { + "description": "Workspace cluster namespaces update entity", + "properties": { + "clusterNamespaces": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterNamespace" + }, + "type": "array", + "uniqueItems": true + }, + "clusterRefs": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterRef" + }, + "type": "array", + "uniqueItems": true + }, + "quota": { + "$ref": "#/definitions/v1WorkspaceQuota" + } + } + }, + "v1WorkspaceClusterRef": { + "description": "Workspace cluster reference", + "properties": { + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + } + } + }, + "v1WorkspaceClusterRestoreConfig": { + "description": "Workspace cluster restore config", + "properties": { + "backupName": { + "type": "string" + }, + "clusterRestoreRefs": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterRestoreResponse" + }, + "type": "array" + }, + "restoreState": { + "$ref": "#/definitions/v1WorkspaceRestoreState" + }, + "restoreTime": { + "$ref": "#/definitions/v1Time" + } + } + }, + "v1WorkspaceClusterRestoreResponse": { + "description": "Workspace cluster restore response", + "properties": { + "backupName": { + "type": "string" + }, + "clusterName": { + "type": "string" + }, + "clusterUid": { + "type": "string" + }, + "restoreStatusMeta": { + "$ref": "#/definitions/v1WorkspaceClusterRestoreState" + }, + "restoreUid": { + "type": "string" + } + } + }, + "v1WorkspaceClusterRestoreState": { + "description": "Workspace cluster restore state", + "properties": { + "msg": { + "type": "string" + }, + "restoreTime": { + "$ref": "#/definitions/v1Time" + }, + "state": { + "type": "string" + } + } + }, + "v1WorkspaceClusterWorkloadCronJobs": { + "description": "Workspace cluster workload cronjobs summary", + "properties": { + "cronjobs": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadCronJob" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1RelatedObject" + } + }, + "type": "object" + }, + "v1WorkspaceClusterWorkloadDaemonSets": { + "description": "Workspace cluster workload daemonsets summary", + "properties": { + "daemonSets": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadDaemonSet" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1RelatedObject" + } + }, + "type": "object" + }, + "v1WorkspaceClusterWorkloadDeployments": { + "description": "Workspace cluster workload deployments summary", + "properties": { + "deployments": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadDeployment" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1RelatedObject" + } + }, + "type": "object" + }, + "v1WorkspaceClusterWorkloadJobs": { + "description": "Workspace cluster workload jobs summary", + "properties": { + "jobs": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadJob" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1RelatedObject" + } + }, + "type": "object" + }, + "v1WorkspaceClusterWorkloadNamespaces": { + "description": "Workspace cluster workload namespaces summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1RelatedObject" + }, + "namespaces": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadNamespace" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1WorkspaceClusterWorkloadPods": { + "description": "Workspace cluster workload pods summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1RelatedObject" + }, + "pods": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadPod" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1WorkspaceClusterWorkloadRoleBindings": { + "description": "Workspace cluster workload rbac bindings summary", + "properties": { + "bindings": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadRoleBinding" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1RelatedObject" + } + }, + "type": "object" + }, + "v1WorkspaceClusterWorkloadStatefulSets": { + "description": "Workspace cluster workload statefulsets summary", + "properties": { + "metadata": { + "$ref": "#/definitions/v1RelatedObject" + }, + "statefulSets": { + "items": { + "$ref": "#/definitions/v1ClusterWorkloadStatefulSet" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1WorkspaceClustersWorkloadCronJobs": { + "description": "Workspace clusters workload cronjobs summary", + "properties": { + "clusters": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterWorkloadCronJobs" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + } + }, + "type": "object" + }, + "v1WorkspaceClustersWorkloadDaemonSets": { + "description": "Workspace clusters workload statefulsets summary", + "properties": { + "clusters": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterWorkloadDaemonSets" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + } + }, + "type": "object" + }, + "v1WorkspaceClustersWorkloadDeployments": { + "description": "Workspace clusters workload deployments summary", + "properties": { + "clusters": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterWorkloadDeployments" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + } + }, + "type": "object" + }, + "v1WorkspaceClustersWorkloadJobs": { + "description": "Workspace clusters workload jobs summary", + "properties": { + "clusters": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterWorkloadJobs" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + } + }, + "type": "object" + }, + "v1WorkspaceClustersWorkloadNamespaces": { + "description": "Workspace clusters workload namespaces summary", + "properties": { + "clusters": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterWorkloadNamespaces" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + } + }, + "type": "object" + }, + "v1WorkspaceClustersWorkloadPods": { + "description": "Workspace clusters workload pods summary", + "properties": { + "clusters": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterWorkloadPods" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + } + }, + "type": "object" + }, + "v1WorkspaceClustersWorkloadRoleBindings": { + "description": "Workspace clusters workload rbac bindings summary", + "properties": { + "clusters": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterWorkloadRoleBindings" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + } + }, + "type": "object" + }, + "v1WorkspaceClustersWorkloadStatefulSets": { + "description": "Workspace clusters workload statefulsets summary", + "properties": { + "clusters": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterWorkloadStatefulSets" + }, + "type": "array" + }, + "metadata": { + "$ref": "#/definitions/v1ObjectMetaInputEntity" + } + }, + "type": "object" + }, + "v1WorkspaceEntity": { + "description": "Workspace information", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1WorkspaceSpec" + } + } + }, + "v1WorkspaceError": { + "description": "Workspace error", + "properties": { + "clusterUid": { + "type": "string" + }, + "msg": { + "type": "string" + }, + "name": { + "type": "string" + }, + "resourceType": { + "type": "string" + } + } + }, + "v1WorkspaceNamespaceImage": { + "description": "Workspace namespace image information", + "properties": { + "blackListedImages": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1WorkspaceNamespaceResourceAllocation": { + "description": "Workspace namespace resource allocation", + "properties": { + "clusterResourceAllocations": { + "items": { + "$ref": "#/definitions/v1ClusterResourceAllocation" + }, + "type": "array", + "uniqueItems": true + }, + "defaultResourceAllocation": { + "$ref": "#/definitions/v1WorkspaceResourceAllocation" + } + } + }, + "v1WorkspacePolicies": { + "description": "Workspace policies", + "properties": { + "backupPolicy": { + "$ref": "#/definitions/v1WorkspaceBackupConfigEntity" + } + } + }, + "v1WorkspaceQuota": { + "description": "Workspace resource quota", + "properties": { + "resourceAllocation": { + "$ref": "#/definitions/v1WorkspaceResourceAllocation" + } + } + }, + "v1WorkspaceResourceAllocation": { + "description": "Workspace resource allocation", + "properties": { + "cpuCores": { + "minimum": -1, + "type": "number", + "x-omitempty": false + }, + "memoryMiB": { + "minimum": -1, + "type": "number", + "x-omitempty": false + } + } + }, + "v1WorkspaceResourceAllocationsEntity": { + "description": "Workspace resource allocation update entity", + "properties": { + "clusterNamespaces": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterNamespace" + }, + "type": "array", + "uniqueItems": true + }, + "clusterRefs": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterRef" + }, + "type": "array", + "uniqueItems": true + }, + "quota": { + "$ref": "#/definitions/v1WorkspaceQuota" + } + } + }, + "v1WorkspaceRestore": { + "description": "Workspace restore", + "properties": { + "metadata": { + "$ref": "#/definitions/v1ObjectMeta" + }, + "spec": { + "$ref": "#/definitions/v1WorkspaceRestoreSpec" + }, + "status": { + "$ref": "#/definitions/v1WorkspaceRestoreStatus" + } + } + }, + "v1WorkspaceRestoreConfig": { + "description": "Workspace cluster restore config", + "properties": { + "backupName": { + "type": "string" + }, + "includeClusterResources": { + "type": "boolean" + }, + "includeNamespaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "preserveNodePorts": { + "type": "boolean" + }, + "restorePVs": { + "type": "boolean" + }, + "sourceClusterUid": { + "type": "string" + } + }, + "required": [ + "backupName", + "sourceClusterUid" + ] + }, + "v1WorkspaceRestoreConfigEntity": { + "description": "Cluster restore config", + "properties": { + "backupRequestUid": { + "type": "string" + }, + "restoreConfigs": { + "items": { + "$ref": "#/definitions/v1WorkspaceRestoreConfig" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "backupRequestUid" + ] + }, + "v1WorkspaceRestoreSpec": { + "description": "Workspace restore spec", + "properties": { + "workspaceUid": { + "type": "string" + } + } + }, + "v1WorkspaceRestoreState": { + "description": "Workspace restore state", + "properties": { + "deleteState": { + "type": "string" + }, + "state": { + "type": "string" + } + } + }, + "v1WorkspaceRestoreStatus": { + "description": "Workspace restore status", + "properties": { + "workspaceRestoreStatuses": { + "items": { + "$ref": "#/definitions/v1WorkspaceRestoreStatusMeta" + }, + "type": "array" + } + } + }, + "v1WorkspaceRestoreStatusMeta": { + "description": "Workspace restore status meta", + "properties": { + "actor": { + "$ref": "#/definitions/v1ClusterFeatureActor" + }, + "requestUid": { + "type": "string" + }, + "workspaceRestoreConfig": { + "$ref": "#/definitions/v1WorkspaceClusterRestoreConfig" + } + } + }, + "v1WorkspaceRolesPatch": { + "properties": { + "roles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1WorkspaceRolesUidSummary": { + "properties": { + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "v1WorkspaceScopeRoles": { + "description": "List all workspaces with the roles assigned to the users", + "properties": { + "projects": { + "items": { + "$ref": "#/definitions/v1ProjectsWorkspaces" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1WorkspaceSpec": { + "description": "Workspace specifications", + "properties": { + "clusterNamespaces": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterNamespace" + }, + "type": "array", + "uniqueItems": true + }, + "clusterRbacs": { + "items": { + "$ref": "#/definitions/v1ClusterRbac" + }, + "type": "array", + "uniqueItems": true + }, + "clusterRefs": { + "items": { + "$ref": "#/definitions/v1WorkspaceClusterRef" + }, + "type": "array", + "uniqueItems": true + }, + "policies": { + "$ref": "#/definitions/v1WorkspacePolicies" + }, + "quota": { + "$ref": "#/definitions/v1WorkspaceQuota" + } + } + }, + "v1WorkspaceStatus": { + "description": "Workspace status", + "properties": { + "errors": { + "items": { + "$ref": "#/definitions/v1WorkspaceError" + }, + "type": "array", + "uniqueItems": true + } + } + }, + "v1WorkspaceWorkloadsFilter": { + "description": "Workspace workloads filter", + "properties": { + "clusters": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "namespaces": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "v1WorkspaceWorkloadsSpec": { + "description": "Workspace workloads spec", + "properties": { + "filter": { + "$ref": "#/definitions/v1WorkspaceWorkloadsFilter" + } + }, + "type": "object" + }, + "v1WorkspacesRoles": { + "description": "Workspace users and their roles", + "properties": { + "inheritedRoles": { + "items": { + "$ref": "#/definitions/v1WorkspaceRolesUidSummary" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "roles": { + "items": { + "$ref": "#/definitions/v1WorkspaceRolesUidSummary" + }, + "type": "array" + }, + "uid": { + "type": "string" + } + } + }, + "v1WorkspacesRolesPatch": { + "properties": { + "workspaces": { + "items": { + "$ref": "#/definitions/v1WorkspaceRolesPatch" + }, + "type": "array" + } + }, + "type": "object" + }, + "v1YearlyUsage": { + "description": "Yearly usage object", + "properties": { + "billingPeriod": { + "$ref": "#/definitions/v1InvoiceBillingPeriod" + }, + "monthlyUsages": { + "description": "List of monthly usages", + "items": { + "$ref": "#/definitions/v1MonthlyUsage" + }, + "type": "array", + "uniqueItems": true + }, + "productUsages": { + "$ref": "#/definitions/v1ProductUsage" + } + } + }, + "v1ZoneEntity": { + "description": "Azure availability zone entity", + "properties": { + "id": { + "description": "Azure availability zone id", + "type": "string" + } + }, + "type": "object" + } + }, + "info": { + "title": "Palette APIs - 4.3", + "version": "v1" + }, + "paths": { + "/cluster/{uid}/manifest": { + "get": { + "description": "Deprecated", + "operationId": "v1SpectroClustersUidInstallerManifest", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "download file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster's installer manifest file", + "tags": [ + "cluster" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/apiKeys": { + "get": { + "operationId": "v1ApiKeysList", + "responses": { + "200": { + "description": "Retrieves a list of API keys", + "schema": { + "$ref": "#/definitions/v1ApiKeys" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of API keys", + "tags": [ + "apiKeys" + ] + }, + "post": { + "operationId": "v1ApiKeysCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ApiKeyEntity" + } + } + ], + "responses": { + "201": { + "description": "APIKey Created successfully", + "schema": { + "$ref": "#/definitions/v1ApiKeyCreateResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create an API key", + "tags": [ + "apiKeys" + ] + } + }, + "/v1/apiKeys/{uid}": { + "delete": { + "operationId": "v1ApiKeysUidDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified API key", + "tags": [ + "apiKeys" + ] + }, + "get": { + "operationId": "v1ApiKeysUidGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1ApiKey" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified API key", + "tags": [ + "apiKeys" + ] + }, + "parameters": [ + { + "description": "Specify API key uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1ApiKeysUidActiveState", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ApiKeyActiveState" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Activate or de-active the specified API key", + "tags": [ + "apiKeys" + ] + }, + "put": { + "operationId": "v1ApiKeysUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ApiKeyUpdate" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the specified API key", + "tags": [ + "apiKeys" + ] + } + }, + "/v1/apiKeys/{uid}/state": { + "parameters": [ + { + "description": "Specify API key uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ApiKeysUidState", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ApiKeyActiveState" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Revoke or re-activate the API key access", + "tags": [ + "apiKeys" + ] + } + }, + "/v1/appDeployments": { + "post": { + "operationId": "v1AppDeploymentsVirtualClusterCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AppDeploymentVirtualClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a application deployment in the virtual cluster", + "tags": [ + "appDeployments" + ] + } + }, + "/v1/appDeployments/clusterGroup": { + "post": { + "operationId": "v1AppDeploymentsClusterGroupCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AppDeploymentClusterGroupEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a application deployment in one of virtual clusters in the cluster group", + "tags": [ + "appDeployments" + ] + } + }, + "/v1/appDeployments/{uid}": { + "delete": { + "operationId": "v1AppDeploymentsUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified application deployment", + "tags": [ + "appDeployments" + ] + }, + "get": { + "operationId": "v1AppDeploymentsUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AppDeployment" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified application deployment", + "tags": [ + "appDeployments" + ] + }, + "parameters": [ + { + "description": "Application deployment uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/appDeployments/{uid}/profile": { + "get": { + "operationId": "v1AppDeploymentsUidProfileGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AppDeploymentProfileSpec" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns profile of the specified application deployment", + "tags": [ + "appDeployments" + ] + }, + "parameters": [ + { + "description": "Application deployment uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1AppDeploymentsUidProfileUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AppDeploymentProfileEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified application deployment profile", + "tags": [ + "appDeployments" + ] + } + }, + "/v1/appDeployments/{uid}/profile/apply": { + "parameters": [ + { + "description": "Application deployment uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Application deployment notification uid", + "in": "query", + "name": "notify", + "type": "string" + } + ], + "patch": { + "operationId": "v1AppDeploymentsUidProfileApply", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Apply the application deployment profile updates", + "tags": [ + "appDeployments" + ] + } + }, + "/v1/appDeployments/{uid}/profile/tiers/{tierUid}": { + "get": { + "operationId": "v1AppDeploymentsProfileTiersUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AppTier" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified application deployment profile tier information", + "tags": [ + "appDeployments" + ] + }, + "parameters": [ + { + "description": "Application deployment uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Application deployment tier uid", + "in": "path", + "name": "tierUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1AppDeploymentsProfileTiersUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AppTierUpdateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified application deployment profile tier information", + "tags": [ + "appDeployments" + ] + } + }, + "/v1/appDeployments/{uid}/profile/tiers/{tierUid}/manifests": { + "get": { + "operationId": "v1AppDeploymentsProfileTiersUidManifestsGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AppTierManifests" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of manifests of the specified application deployment profile tier", + "tags": [ + "appDeployments" + ] + }, + "parameters": [ + { + "description": "Application deployment uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Application deployment tier uid", + "in": "path", + "name": "tierUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/appDeployments/{uid}/profile/tiers/{tierUid}/manifests/{manifestUid}": { + "get": { + "operationId": "v1AppDeploymentsProfileTiersManifestsUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Manifest" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified application deployment tier manifest information", + "tags": [ + "appDeployments" + ] + }, + "parameters": [ + { + "description": "Application deployment uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Application deployment tier uid", + "in": "path", + "name": "tierUid", + "required": true, + "type": "string" + }, + { + "description": "Application deployment tier manifest uid", + "in": "path", + "name": "manifestUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1AppDeploymentsProfileTiersManifestsUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ManifestRefUpdateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified application deployment tier manifest information", + "tags": [ + "appDeployments" + ] + } + }, + "/v1/appDeployments/{uid}/profile/versions": { + "get": { + "operationId": "v1AppDeploymentsUidProfileVersionsGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AppDeploymentProfileVersions" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of profile versions of the specified application deployment", + "tags": [ + "appDeployments" + ] + }, + "parameters": [ + { + "description": "Application deployment uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/appProfiles": { + "post": { + "operationId": "v1AppProfilesCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AppProfileEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a application profile", + "tags": [ + "appProfiles" + ] + } + }, + "/v1/appProfiles/macros": { + "get": { + "operationId": "v1AppProfilesMacrosList", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of application profile macros", + "tags": [ + "appProfiles" + ] + } + }, + "/v1/appProfiles/{uid}": { + "delete": { + "operationId": "v1AppProfilesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified application profile", + "tags": [ + "appProfiles" + ] + }, + "get": { + "operationId": "v1AppProfilesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AppProfile" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified application profile", + "tags": [ + "appProfiles" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1AppProfilesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AppProfileEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified application profile", + "tags": [ + "appProfiles" + ] + } + }, + "/v1/appProfiles/{uid}/clone": { + "parameters": [ + { + "description": "Application profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1AppProfilesUidClone", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AppProfileCloneEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Clones the specified application profile", + "tags": [ + "appProfiles" + ] + } + }, + "/v1/appProfiles/{uid}/clone/validate": { + "parameters": [ + { + "description": "Application profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1AppProfilesUidCloneValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AppProfileCloneMetaInputEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates the specified application profile clone", + "tags": [ + "appProfiles" + ] + } + }, + "/v1/appProfiles/{uid}/metadata": { + "parameters": [ + { + "description": "Application profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1AppProfilesUidMetadataUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AppProfileMetaEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified application profile metadata", + "tags": [ + "appProfiles" + ] + } + }, + "/v1/appProfiles/{uid}/tiers": { + "get": { + "operationId": "v1AppProfilesUidTiersGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AppProfileTiers" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of tiers of the specified application profile", + "tags": [ + "appProfiles" + ] + }, + "parameters": [ + { + "description": "Application profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1AppProfilesUidTiersPatch", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AppTierPatchEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates app tier of the specified application profile", + "tags": [ + "appProfiles" + ] + }, + "post": { + "operationId": "v1AppProfilesUidTiersCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AppTierEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds tier to the specified application profile", + "tags": [ + "appProfiles" + ] + } + }, + "/v1/appProfiles/{uid}/tiers/{tierUid}": { + "delete": { + "operationId": "v1AppProfilesUidTiersUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified application profile tier", + "tags": [ + "appProfiles" + ] + }, + "get": { + "operationId": "v1AppProfilesUidTiersUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AppTier" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified application profile tier information", + "tags": [ + "appProfiles" + ] + }, + "parameters": [ + { + "description": "Application profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Application profile tier uid", + "in": "path", + "name": "tierUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1AppProfilesUidTiersUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AppTierUpdateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified application profile tier", + "tags": [ + "appProfiles" + ] + } + }, + "/v1/appProfiles/{uid}/tiers/{tierUid}/manifests": { + "get": { + "operationId": "v1AppProfilesUidTiersUidManifestsGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AppTierManifests" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of manifests of the specified application profile tier", + "tags": [ + "appProfiles" + ] + }, + "parameters": [ + { + "description": "Application profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Application profile tier uid", + "in": "path", + "name": "tierUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1AppProfilesUidTiersUidManifestsCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ManifestInputEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds manifest to the specified application profile tier", + "tags": [ + "appProfiles" + ] + } + }, + "/v1/appProfiles/{uid}/tiers/{tierUid}/manifests/{manifestUid}": { + "delete": { + "operationId": "v1AppProfilesUidTiersUidManifestsUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified application profile tier manifest", + "tags": [ + "appProfiles" + ] + }, + "get": { + "operationId": "v1AppProfilesUidTiersUidManifestsUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Manifest" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified application profile tier manifest information", + "tags": [ + "appProfiles" + ] + }, + "parameters": [ + { + "description": "Application profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Application profile tier uid", + "in": "path", + "name": "tierUid", + "required": true, + "type": "string" + }, + { + "description": "Application profile tier manifest uid", + "in": "path", + "name": "manifestUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1AppProfilesUidTiersUidManifestsUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ManifestRefUpdateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified application profile tier manifest information", + "tags": [ + "appProfiles" + ] + } + }, + "/v1/appProfiles/{uid}/tiers/{tierUid}/resolvedValues": { + "get": { + "operationId": "v1AppProfilesUidTiersUidResolvedValuesGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AppTierResolvedValues" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified application profile tier resolved values", + "tags": [ + "appProfiles" + ] + }, + "parameters": [ + { + "description": "Application profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Application profile tier uid", + "in": "path", + "name": "tierUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/audits": { + "get": { + "operationId": "v1AuditsList", + "parameters": [ + { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "format": "date-time", + "in": "query", + "name": "startTime", + "type": "string" + }, + { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "format": "date-time", + "in": "query", + "name": "endTime", + "type": "string" + }, + { + "description": "Specify the user uid, to retrieve the specific user audit logs", + "in": "query", + "name": "userUid", + "type": "string" + }, + { + "description": "Specify the project uid, to retrieve the specific project audit logs", + "in": "query", + "name": "projectUid", + "type": "string" + }, + { + "description": "Specify the tenant uid, to retrieve the specific tenant audit logs", + "in": "query", + "name": "tenantUid", + "type": "string" + }, + { + "description": "Specify the resource name, to retrieve the specific resource audit logs", + "in": "query", + "name": "resourceKind", + "type": "string" + }, + { + "description": "Specify the resource uid, to retrieve the specific resource audit logs", + "in": "query", + "name": "resourceUid", + "type": "string" + }, + { + "enum": [ + "create", + "update", + "delete", + "publish", + "deploy" + ], + "in": "query", + "name": "actionType", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1Audits" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves the list of audit logs", + "tags": [ + "audits" + ] + } + }, + "/v1/audits/{uid}": { + "get": { + "operationId": "v1AuditsUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1Audit" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified audit log", + "tags": [ + "audits" + ] + }, + "parameters": [ + { + "description": "Specify the audit uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/audits/{uid}/sysMsg": { + "get": { + "operationId": "v1AuditsUidGetSysMsg", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AuditSysMsg" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified system audit message", + "tags": [ + "audits" + ] + }, + "parameters": [ + { + "description": "Specify the audit uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/audits/{uid}/userMsg": { + "parameters": [ + { + "description": "Specify the audit uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1AuditsUidMsgUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AuditMsgUpdate" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified user message for the specified audit", + "tags": [ + "audits" + ] + } + }, + "/v1/auth/authenticate": { + "post": { + "description": "Creates a authentication request with the specified credentials", + "operationId": "v1Authenticate", + "parameters": [ + { + "default": true, + "description": "Describes a way to set cookie from backend.", + "in": "query", + "name": "setCookie", + "type": "boolean" + }, + { + "description": "Describes the credential details required for authentication", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1AuthLogin" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1UserToken" + } + } + }, + "summary": "Authenticates the user for the specified crendentials", + "tags": [ + "auth" + ] + } + }, + "/v1/auth/org": { + "get": { + "description": "Returns the allowed login method and information with the organization details", + "operationId": "v1AuthOrg", + "parameters": [ + { + "in": "query", + "name": "orgName", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1LoginResponse" + } + } + }, + "summary": "Returns the user organization details", + "tags": [ + "auth" + ] + } + }, + "/v1/auth/org/{orgName}/switch": { + "post": { + "description": "Creates a request to switch to the same user's other organization. Only possible if user belongs to multiple organization", + "operationId": "V1AuthOrgSwitch", + "parameters": [ + { + "default": true, + "description": "Describes a way to set cookie from backend for switched organization", + "in": "query", + "name": "setCookie", + "type": "boolean" + }, + { + "description": "Organization name for which switch request has to be created", + "in": "path", + "name": "orgName", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1UserToken" + } + } + }, + "summary": "Creates a request to switch organization", + "tags": [ + "auth" + ] + } + }, + "/v1/auth/org/{org}/oidc/callback": { + "get": { + "description": "Returns the Authorization token for the palette. This is called by the IDP as a callback url after IDP authenticates the user with its server.", + "operationId": "V1OidcCallback", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1UserToken" + } + } + }, + "summary": "Idp authorization code callback", + "tags": [ + "auth" + ] + }, + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "type": "string" + }, + { + "description": "Describes temporary and very short lived code sent by IDP to validate the token", + "in": "query", + "name": "code", + "type": "string" + }, + { + "description": "Describes a state to validate and associate request and response", + "in": "query", + "name": "state", + "type": "string" + }, + { + "description": "Describes a error code in case the IDP is not able to validate and authenticates the user", + "in": "query", + "name": "error", + "type": "string" + }, + { + "description": "Describes a error in case the IDP is not able to validate and authenticates the user", + "in": "query", + "name": "error_description", + "type": "string" + } + ] + }, + "/v1/auth/org/{org}/oidc/logout": { + "get": { + "description": "Returns No Content. Works as a callback url after the IDP logout from their server.", + "operationId": "V1OidcLogout", + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "summary": "Identity provider logout url for the Oidc", + "tags": [ + "auth" + ] + }, + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "type": "string" + }, + { + "description": "Describes a state to validate and associate request and response", + "in": "query", + "name": "state", + "type": "string" + } + ] + }, + "/v1/auth/org/{org}/saml/callback": { + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "type": "string" + }, + { + "description": "Deprecated.", + "in": "query", + "name": "authToken", + "type": "string" + } + ], + "post": { + "consumes": [ + "application/x-www-form-urlencoded" + ], + "description": "Returns the Authorization token for the palette. This is called by the SAML based IDP as a callback url after IDP authenticates the user with its server.", + "operationId": "V1SamlCallback", + "parameters": [ + { + "description": "Describe the SAML compliant response sent by IDP which will be validated by Palette", + "in": "formData", + "name": "SAMLResponse", + "type": "string" + }, + { + "description": "Describes a state to validate and associate request and response", + "in": "formData", + "name": "RelayState", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1UserToken" + } + } + }, + "summary": "Identity provider callback url for the SMAL authentication", + "tags": [ + "auth" + ] + } + }, + "/v1/auth/org/{org}/saml/logout": { + "parameters": [ + { + "description": "Organization name", + "in": "path", + "name": "org", + "required": true, + "type": "string" + }, + { + "description": "Deprecated.", + "in": "query", + "name": "authToken", + "type": "string" + } + ], + "post": { + "consumes": [ + "application/x-www-form-urlencoded" + ], + "description": "Returns No Content. Works as a callback url after the IDP logout from their server.", + "operationId": "V1SamlLogout", + "parameters": [ + { + "description": "Describe the SAML compliant response sent by IDP which will be validated by Palette to perform logout.", + "in": "formData", + "name": "SAMLResponse", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "summary": "Identity provider logout url for the SMAL", + "tags": [ + "auth" + ] + } + }, + "/v1/auth/orgs": { + "get": { + "description": "Returns a list of user's organizations details and login methods", + "operationId": "V1AuthOrgs", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Organizations" + } + } + }, + "summary": "Returns a list of user's organizations", + "tags": [ + "auth" + ] + } + }, + "/v1/auth/password/{passwordToken}/activate": { + "parameters": [ + { + "description": "Describes the expirable password token for the user to be used for authentication of user", + "in": "path", + "name": "passwordToken", + "required": true, + "type": "string" + } + ], + "patch": { + "description": "Updates and Activates user password with the help of password token", + "operationId": "v1PasswordActivate", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "properties": { + "password": { + "description": "Describes the new password for the user", + "format": "password", + "type": "string" + } + }, + "required": [ + "password" + ], + "type": "object" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "summary": "Updates and Activates the specified user password using the password token", + "tags": [ + "auth" + ] + } + }, + "/v1/auth/password/{passwordToken}/reset": { + "parameters": [ + { + "description": "Describes the expirable password token for the user to be used for authentication of user", + "in": "path", + "name": "passwordToken", + "required": true, + "type": "string" + } + ], + "patch": { + "description": "Updates the new user password with the help of password token", + "operationId": "v1PasswordReset", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "properties": { + "password": { + "description": "Describes the new password for the user", + "format": "password", + "type": "string" + } + }, + "required": [ + "password" + ], + "type": "object" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "summary": "Resets the user password using the password token", + "tags": [ + "auth" + ] + } + }, + "/v1/auth/refresh/{token}": { + "get": { + "description": "Returns a new token within refresh timeout and same session id is maintained", + "operationId": "v1AuthRefresh", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1UserToken" + } + } + }, + "summary": "Refreshes authentication token", + "tags": [ + "auth" + ] + }, + "parameters": [ + { + "default": true, + "description": "Describes a way to set cookie from backend.", + "in": "query", + "name": "setCookie", + "type": "boolean" + }, + { + "description": "Non expired Authorization token", + "in": "path", + "name": "token", + "required": true, + "type": "string" + } + ] + }, + "/v1/auth/sso/idps": { + "get": { + "description": "Returns a list of predefined Identity Provider (IDP)", + "operationId": "V1SsoIdps", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1IdentityProviders" + } + } + }, + "summary": "Returns a list of predefined Identity Provider (IDP)", + "tags": [ + "auth" + ] + } + }, + "/v1/auth/sso/logins": { + "get": { + "description": "Returns a list of supported sso logins and their authentication mechanism", + "operationId": "V1SsoLogins", + "parameters": [ + { + "in": "query", + "name": "org", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1SsoLogins" + } + } + }, + "summary": "Returns a list of supported sso logins", + "tags": [ + "auth" + ] + } + }, + "/v1/auth/sso/providers": { + "get": { + "description": "Returns a list of supported sso auth providers", + "operationId": "V1AuthSsoProviders", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1SsoLogins" + } + } + }, + "summary": "Returns a list of supported sso auth providers", + "tags": [ + "auth" + ] + } + }, + "/v1/auth/sso/{ssoApp}/callback": { + "get": { + "description": "Returns Authorization token. Works as a callback url for the system defined sso apps", + "operationId": "V1SsoCallback", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1UserToken" + } + } + }, + "summary": "Returns Authorization token. Works as a callback url for the system defined sso apps", + "tags": [ + "auth" + ] + }, + "parameters": [ + { + "description": "Describes the sso app use to login into the system", + "in": "path", + "name": "ssoApp", + "required": true, + "type": "string" + }, + { + "description": "Describes temporary and very short lived code sent by IDP to validate the token", + "in": "query", + "name": "code", + "type": "string" + }, + { + "description": "Describes a state to validate and associate request and response", + "in": "query", + "name": "state", + "type": "string" + }, + { + "description": "Describes a error code in case the IDP is not able to validate and authenticates the user", + "in": "query", + "name": "error", + "type": "string" + }, + { + "description": "Describes a error in case the IDP is not able to validate and authenticates the user", + "in": "query", + "name": "error_description", + "type": "string" + } + ] + }, + "/v1/auth/user/org/forgot": { + "get": { + "description": "Returns No Content. Sends the user organization(s) information via email", + "operationId": "V1AuthUserOrgForgot", + "parameters": [ + { + "description": "Describes user's email id for sending organzation(s) details via email.", + "in": "query", + "name": "emailId", + "required": true, + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "summary": "Returns No Content. Sends the user organization information via email", + "tags": [ + "auth" + ] + } + }, + "/v1/auth/user/password/reset": { + "post": { + "description": "Creates request to reset password via email. Password reset email will be sent to the user. Sends 204 No Content.", + "operationId": "v1PasswordResetRequest", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "properties": { + "emailId": { + "description": "Describes email if for which password reset email has to be sent", + "type": "string" + } + }, + "required": [ + "emailId" + ], + "type": "object" + } + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "summary": "Creates request to reset password via email", + "tags": [ + "auth" + ] + } + }, + "/v1/cloudaccounts/aws": { + "get": { + "operationId": "v1CloudAccountsAwsList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cloud account items", + "schema": { + "$ref": "#/definitions/v1AwsAccounts" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of AWS cloud accounts", + "tags": [ + "cloudaccounts" + ] + }, + "post": { + "operationId": "v1CloudAccountsAwsCreate", + "parameters": [ + { + "description": "Request payload to validate AWS cloud account", + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AwsAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an AWS cloud account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/aws/{uid}": { + "delete": { + "operationId": "v1CloudAccountsAwsDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified AWS account", + "tags": [ + "cloudaccounts" + ] + }, + "get": { + "operationId": "v1CloudAccountsAwsGet", + "parameters": [ + { + "default": false, + "in": "query", + "name": "assumeCredentials", + "type": "boolean" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AwsAccount" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified AWS account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "description": "AWS cloud account uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudAccountsAwsUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AwsAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified AWS account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/azure": { + "get": { + "operationId": "v1CloudAccountsAzureList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of azure cloud account items", + "schema": { + "$ref": "#/definitions/v1AzureAccounts" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of azure cloud accounts", + "tags": [ + "cloudaccounts" + ] + }, + "post": { + "operationId": "v1CloudAccountsAzureCreate", + "parameters": [ + { + "description": "Request payload to validate Azure cloud account", + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AzureAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create azure cloud account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/azure/{uid}": { + "delete": { + "operationId": "v1CloudAccountsAzureDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified azure account", + "tags": [ + "cloudaccounts" + ] + }, + "get": { + "operationId": "v1CloudAccountsAzureGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AzureAccount" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified azure cloud account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "description": "Azure cloud account uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudAccountsAzureUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AzureAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified azure account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/cloudTypes/{cloudType}": { + "get": { + "operationId": "v1CloudAccountsCustomList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cloud account by specified cloud type items", + "schema": { + "$ref": "#/definitions/v1CustomAccounts" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of cloud accounts by cloud type", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "description": "Custom cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudAccountsCustomCreate", + "parameters": [ + { + "description": "Request payload to validate Custom cloud account", + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CustomAccountEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an cloud account of specific cloud type", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/cloudTypes/{cloudType}/{uid}": { + "delete": { + "operationId": "v1CloudAccountsCustomDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified account by cloud type", + "tags": [ + "cloudaccounts" + ] + }, + "get": { + "operationId": "v1CloudAccountsCustomGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1CustomAccount" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified account by cloud type", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "description": "Custom cloud account uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Custom cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudAccountsCustomUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CustomAccountEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified account by cloud type", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/coxedge": { + "get": { + "operationId": "v1CloudAccountsCoxEdgeList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cloud account items", + "schema": { + "$ref": "#/definitions/v1CoxEdgeAccounts" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of CoxEdge cloud accounts", + "tags": [ + "cloudaccounts" + ] + }, + "post": { + "operationId": "v1CloudAccountsCoxEdgeCreate", + "parameters": [ + { + "description": "Request payload to validate CoxEdge cloud account", + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CoxEdgeAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an CoxEdge cloud account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/coxedge/{uid}": { + "delete": { + "operationId": "v1CloudAccountsCoxEdgeDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified CoxEdge account", + "tags": [ + "cloudaccounts" + ] + }, + "get": { + "operationId": "v1CloudAccountsCoxEdgeGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1CoxEdgeAccount" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified CoxEdge account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "description": "CoxEdge cloud account uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudAccountsCoxEdgeUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CoxEdgeAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified CoxEdge account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/gcp": { + "get": { + "operationId": "v1CloudAccountsGcpList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of gcp cloud account items", + "schema": { + "$ref": "#/definitions/v1GcpAccounts" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of gcp cloud accounts", + "tags": [ + "cloudaccounts" + ] + }, + "post": { + "operationId": "v1CloudAccountsGcpCreate", + "parameters": [ + { + "description": "Request payload to validate GCP cloud account", + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GcpAccountEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a GCP cloud account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/gcp/{uid}": { + "delete": { + "operationId": "v1CloudAccountsGcpDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified GCP account", + "tags": [ + "cloudaccounts" + ] + }, + "get": { + "operationId": "v1CloudAccountsGcpGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1GcpAccount" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified GCP cloud account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "description": "GCP cloud account uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudAccountsGcpUpdate", + "parameters": [ + { + "description": "Request payload to validate GCP cloud account", + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GcpAccountEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified GCP account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/maas": { + "get": { + "operationId": "v1CloudAccountsMaasList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cloud account items", + "schema": { + "$ref": "#/definitions/v1MaasAccounts" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Maas cloud accounts", + "tags": [ + "cloudaccounts" + ] + }, + "post": { + "operationId": "v1CloudAccountsMaasCreate", + "parameters": [ + { + "description": "Request payload to validate Maas cloud account", + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1MaasAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an Maas cloud account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/maas/{uid}": { + "delete": { + "operationId": "v1CloudAccountsMaasDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified Maas account", + "tags": [ + "cloudaccounts" + ] + }, + "get": { + "operationId": "v1CloudAccountsMaasGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1MaasAccount" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Maas account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "description": "Maas cloud account uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1CloudAccountsMaasPatch", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1CloudAccountsPatch" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Patches the specified CloudAccount Maas", + "tags": [ + "cloudaccounts" + ] + }, + "put": { + "operationId": "v1CloudAccountsMaasUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1MaasAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified Maas account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/maas/{uid}/properties/azs": { + "get": { + "operationId": "v1MaasAccountsUidAzs", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1MaasZones" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the maas azs for a given account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudaccounts/maas/{uid}/properties/domains": { + "get": { + "operationId": "v1MaasAccountsUidDomains", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1MaasDomains" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the maas domains for a given account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudaccounts/maas/{uid}/properties/resourcePools": { + "get": { + "operationId": "v1MaasAccountsUidPools", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1MaasPools" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the maas pools for a given account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudaccounts/maas/{uid}/properties/subnets": { + "get": { + "operationId": "v1MaasAccountsUidSubnets", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1MaasSubnets" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the maas subnets for a given account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudaccounts/maas/{uid}/properties/tags": { + "get": { + "operationId": "v1MaasAccountsUidTags", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1MaasTags" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the maas tags for a given account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudaccounts/openstack": { + "get": { + "operationId": "v1CloudAccountsOpenStackList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cloud account items", + "schema": { + "$ref": "#/definitions/v1OpenStackAccounts" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of OpenStack cloud accounts", + "tags": [ + "cloudaccounts" + ] + }, + "post": { + "operationId": "v1CloudAccountsOpenStackCreate", + "parameters": [ + { + "description": "Request payload to validate OpenStack cloud account", + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OpenStackAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a OpenStack cloud account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/openstack/{uid}": { + "delete": { + "operationId": "v1CloudAccountsOpenStackDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified OpenStack account", + "tags": [ + "cloudaccounts" + ] + }, + "get": { + "operationId": "v1CloudAccountsOpenStackGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1OpenStackAccount" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified OpenStack account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "description": "OpenStack cloud account uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudAccountsOpenStackUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OpenStackAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified OpenStack account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/openstack/{uid}/properties/azs": { + "get": { + "operationId": "v1OpenstackAccountsUidAzs", + "parameters": [ + { + "in": "query", + "name": "region", + "type": "string" + }, + { + "in": "query", + "name": "project", + "type": "string" + }, + { + "in": "query", + "name": "domain", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OpenStackAzs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the openstack azs for a given account and region", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudaccounts/openstack/{uid}/properties/flavors": { + "get": { + "operationId": "v1OpenstackAccountsUidFlavors", + "parameters": [ + { + "in": "query", + "name": "project", + "type": "string" + }, + { + "in": "query", + "name": "region", + "type": "string" + }, + { + "in": "query", + "name": "domain", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OpenStackFlavors" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the openstack keypairs for a given account and scope", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudaccounts/openstack/{uid}/properties/keypairs": { + "get": { + "operationId": "v1OpenstackAccountsUidKeypairs", + "parameters": [ + { + "in": "query", + "name": "project", + "type": "string" + }, + { + "in": "query", + "name": "region", + "type": "string" + }, + { + "in": "query", + "name": "domain", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OpenStackKeypairs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the openstack keypairs for a given account and scope", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudaccounts/openstack/{uid}/properties/networks": { + "get": { + "operationId": "v1OpenstackAccountsUidNetworks", + "parameters": [ + { + "in": "query", + "name": "project", + "type": "string" + }, + { + "in": "query", + "name": "region", + "type": "string" + }, + { + "in": "query", + "name": "domain", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OpenStackNetworks" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the openstack networks for a given account and scope", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudaccounts/openstack/{uid}/properties/projects": { + "get": { + "operationId": "v1OpenstackAccountsUidProjects", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OpenStackProjects" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the openstack projects for a given account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudaccounts/openstack/{uid}/properties/regions": { + "get": { + "operationId": "v1OpenstackAccountsUidRegions", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OpenStackRegions" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the openstack regions for a given account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudaccounts/summary": { + "get": { + "operationId": "v1CloudAccountsListSummary", + "parameters": [ + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cloud account summary items", + "schema": { + "$ref": "#/definitions/v1CloudAccountsSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of cloud accounts summary", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/tencent": { + "get": { + "operationId": "v1CloudAccountsTencentList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cloud account items", + "schema": { + "$ref": "#/definitions/v1TencentAccounts" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Tencent cloud accounts", + "tags": [ + "cloudaccounts" + ] + }, + "post": { + "operationId": "v1CloudAccountsTencentCreate", + "parameters": [ + { + "description": "Request payload to validate Tencent cloud account", + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TencentAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an Tencent cloud account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/tencent/{uid}": { + "delete": { + "operationId": "v1CloudAccountsTencentDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified Tencent account", + "tags": [ + "cloudaccounts" + ] + }, + "get": { + "operationId": "v1CloudAccountsTencentGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1TencentAccount" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Tencent account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "description": "Tencent cloud account uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudAccountsTencentUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TencentAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified Tencent account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/vsphere": { + "get": { + "operationId": "v1CloudAccountsVsphereList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cloud account items", + "schema": { + "$ref": "#/definitions/v1VsphereAccounts" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of vSphere cloud accounts", + "tags": [ + "cloudaccounts" + ] + }, + "post": { + "operationId": "v1CloudAccountsVsphereCreate", + "parameters": [ + { + "description": "Request payload to validate VSphere cloud account", + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VsphereAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a vSphere cloud account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/vsphere/{uid}": { + "delete": { + "operationId": "v1CloudAccountsVsphereDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified vSphere account", + "tags": [ + "cloudaccounts" + ] + }, + "get": { + "operationId": "v1CloudAccountsVsphereGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1VsphereAccount" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified vSphere account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "description": "VSphere cloud account uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudAccountsVsphereUpdate", + "parameters": [ + { + "description": "Request payload to validate VSphere cloud account", + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VsphereAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified VSphere account", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudaccounts/vsphere/{uid}/properties/computecluster/resources": { + "get": { + "operationId": "v1VsphereAccountsUidClusterRes", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1VsphereComputeClusterResources" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the vSphere computecluster resources for the given overlord account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "datacenter", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "computecluster", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "useQualifiedNetworkName", + "type": "boolean" + } + ] + }, + "/v1/cloudaccounts/vsphere/{uid}/properties/datacenters": { + "get": { + "operationId": "v1VsphereAccountsUidDatacenters", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1VsphereDatacenters" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the vSphere datacenters & datacluster for the given overlord account", + "tags": [ + "cloudaccounts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudaccounts/{uid}/geoLocation": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1AccountsGeolocationPatch", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1GeolocationLatlong" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the geolocation annotation", + "tags": [ + "cloudaccounts" + ] + } + }, + "/v1/cloudconfigs/aks/{configUid}": { + "get": { + "operationId": "v1CloudConfigsAksGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AzureCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified AKS cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/aks/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsAksUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AzureCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/aks/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsAksMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AzureMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an AKS cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsAksMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsAksMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AzureMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified AKS cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsAksPoolMachinesList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of AKS machine items", + "schema": { + "$ref": "#/definitions/v1AzureMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of AKS machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsAksPoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AzureMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/aks/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsAksPoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified Azure machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsAksPoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AzureMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified AKS machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsAksPoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AzureMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to the cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/aws/{configUid}": { + "get": { + "operationId": "v1CloudConfigsAwsGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AwsCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified AWS cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/aws/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsAwsUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AwsCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/aws/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsAwsMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AwsMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an AWS cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsAwsMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsAwsMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AwsMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified AWS cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsAwsPoolMachinesList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of AWS machine items", + "schema": { + "$ref": "#/definitions/v1AwsMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of AWS machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsAwsPoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AwsMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/aws/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsAwsPoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified AWS machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsAwsPoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AwsMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified AWS machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsAwsPoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AwsMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to the cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/azure/{configUid}": { + "get": { + "operationId": "v1CloudConfigsAzureGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AzureCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Azure cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/azure/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsAzureUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AzureCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/azure/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsAzureMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AzureMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an Azure cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsAzureMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsAzureMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AzureMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified Azure cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "description": "Returns all the Azure machines restricted to the user role and filters.", + "operationId": "v1CloudConfigsAzurePoolMachinesList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of AWS machine items", + "schema": { + "$ref": "#/definitions/v1AzureMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Azure machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsAzurePoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AzureMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/azure/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsAzurePoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified Azure machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "description": "Returns a Azure machine for the specified uid.", + "operationId": "v1CloudConfigsAzurePoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AzureMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Azure machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsAzurePoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AzureMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}": { + "get": { + "operationId": "v1CloudConfigsCustomGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1CustomCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Custom cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + }, + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + }, + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsCustomUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CustomCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + }, + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsCustomMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CustomMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an Custom cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsCustomMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + }, + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsCustomMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CustomMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified Custom cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsCustomPoolMachinesList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of Custom machine items", + "schema": { + "$ref": "#/definitions/v1CustomMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Custom machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + }, + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsCustomPoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CustomMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/cloudTypes/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsCustomPoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified Custom machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsCustomPoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1CustomMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Custom machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + }, + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsCustomPoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CustomMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to the cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/coxedge/{configUid}": { + "get": { + "operationId": "v1CloudConfigsCoxEdgeGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1CoxEdgeCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified CoxEdge cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/coxedge/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsCoxEdgeUidClusterConfigUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CoxEdgeCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/coxedge/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsCoxEdgeMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CoxEdgeMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a CoxEdge cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/coxedge/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsCoxEdgeMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsCoxEdgeMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CoxEdgeMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified CoxEdge cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/coxedge/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsCoxEdgePoolMachinesList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of CoxEdge machine items", + "schema": { + "$ref": "#/definitions/v1CoxEdgeMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of CoxEdge machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsCoxEdgePoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CoxEdgeMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/coxedge/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsCoxEdgePoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified CoxEdge machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsCoxEdgePoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1CoxEdgeMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified CoxEdge machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsCoxEdgePoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CoxEdgeMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to the cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/edge-native/{configUid}": { + "get": { + "operationId": "v1CloudConfigsEdgeNativeGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1EdgeNativeCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified edge-native cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/edge-native/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsEdgeNativeUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeNativeCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/edge-native/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsEdgeNativeMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeNativeMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a edge-native cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsEdgeNativeMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsEdgeNativeMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeNativeMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified edge-native cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsEdgeNativePoolMachinesList", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of edge-native machine items", + "schema": { + "$ref": "#/definitions/v1EdgeNativeMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of edge-native machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsEdgeNativePoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeNativeMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the edge-native machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/edge-native/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsEdgeNativePoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified edge-native machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsEdgeNativePoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1EdgeNativeMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified edge-native machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsEdgeNativePoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeNativeMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/edge/{configUid}": { + "get": { + "operationId": "v1CloudConfigsEdgeGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1EdgeCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified edge cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/edge/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsEdgeUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/edge/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsEdgeMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a edge cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/edge/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsEdgeMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsEdgeMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified Edge cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/edge/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsEdgePoolMachinesList", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of Edge machine items", + "schema": { + "$ref": "#/definitions/v1EdgeMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Edge machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsEdgePoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the Edge machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/edge/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsEdgePoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified Edge machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsEdgePoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1EdgeMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Edge machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsEdgePoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/eks/{configUid}": { + "get": { + "operationId": "v1CloudConfigsEksGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1EksCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified EKS cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/eks/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsEksUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EksCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/eks/{configUid}/fargateProfiles": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsEksUidFargateProfilesUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EksFargateProfiles" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates EKS cloud config's fargate profiles", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/eks/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsEksMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EksMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an EKS cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsEksMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsEksMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EksMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified EKS cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsEksPoolMachinesList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of EKS machine items", + "schema": { + "$ref": "#/definitions/v1AwsMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of EKS machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsEksPoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AwsMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/eks/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsEksPoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified EKS machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsEksPoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AwsMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified EKS machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsEksPoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AwsMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to the cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/gcp/{configUid}": { + "get": { + "operationId": "v1CloudConfigsGcpGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1GcpCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified GCP cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/gcp/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsGcpUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GcpCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/gcp/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsGcpMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GcpMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a Gcp cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsGcpMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsGcpMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GcpMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified GCP cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsGcpPoolMachinesList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of GCP machine items", + "schema": { + "$ref": "#/definitions/v1GcpMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of GCP machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsGcpPoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GcpMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/gcp/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsGcpPoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified GCP machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsGcpPoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1GcpMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified GCP machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsGcpPoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GcpMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to the cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/generic/{configUid}": { + "get": { + "operationId": "v1CloudConfigsGenericGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1GenericCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Generic cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/generic/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsGenericUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GenericCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/generic/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsGenericMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GenericMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a generic cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsGenericMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsGenericMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GenericMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified generic cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsGenericPoolMachinesList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of Generic machine items", + "schema": { + "$ref": "#/definitions/v1GenericMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Generic machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsGenericPoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GenericMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/generic/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsGenericPoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsGenericPoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1GenericMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified generic machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsGenericPoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GenericMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to the cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/gke/{configUid}": { + "get": { + "operationId": "v1CloudConfigsGkeGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1GcpCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified GKE cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/gke/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsGkeUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GcpCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/gke/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsGkeMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GcpMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an GKE cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsGkeMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsGkeMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GcpMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified GKE cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsGkePoolMachinesList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of GKE machine items", + "schema": { + "$ref": "#/definitions/v1GcpMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of GKE machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsGkePoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GcpMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/gke/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsGkePoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified Gcp machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsGkePoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1GcpMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified GKE machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsGkePoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1GcpMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to the cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/libvirt/{configUid}": { + "get": { + "operationId": "v1CloudConfigsLibvirtGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1LibvirtCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified libvirt cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/libvirt/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsLibvirtUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1LibvirtCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/libvirt/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsLibvirtMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1LibvirtMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a libvirt cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/libvirt/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsLibvirtMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsLibvirtMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1LibvirtMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified Libvirt cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/libvirt/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsLibvirtPoolMachinesList", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of Libvirt machine items", + "schema": { + "$ref": "#/definitions/v1LibvirtMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Libvirt machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsLibvirtPoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1LibvirtMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the Libvirt machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/libvirt/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsLibvirtPoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified Libvirt machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsLibvirtPoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1LibvirtMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Libvirt machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsLibvirtPoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1LibvirtMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/maas/{configUid}": { + "get": { + "operationId": "v1CloudConfigsMaasGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1MaasCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Maas cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/maas/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsMaasUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1MaasCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/maas/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsMaasMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1MaasMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an Maas cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsMaasMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsMaasMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1MaasMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified Maas cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsMaasPoolMachinesList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of Maas machine items", + "schema": { + "$ref": "#/definitions/v1MaasMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Maas machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsMaasPoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1MaasMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/maas/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsMaasPoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified Maas machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsMaasPoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1MaasMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Maas machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsMaasPoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1MaasMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to the cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/openstack/{configUid}": { + "get": { + "operationId": "v1CloudConfigsOpenStackGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1OpenStackCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified OpenStack cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/openstack/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsOpenStackUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OpenStackCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/openstack/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsOpenStackMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OpenStackMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a OpenStack cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsOpenStackMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsOpenStackMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OpenStackMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified OpenStack cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsOpenStackPoolMachinesList", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of OpenStack machine items", + "schema": { + "$ref": "#/definitions/v1OpenStackMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of OpenStack machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsOpenStackPoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OpenStackMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the OpenStack machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/openstack/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsOpenStackPoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified OpenStack machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsOpenStackPoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1OpenStackMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified OpenStack machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsOpenStackPoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OpenStackMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/tke/{configUid}": { + "get": { + "operationId": "v1CloudConfigsTkeGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1TencentCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified TKE cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/tke/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsTkeUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TencentCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/tke/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsTkeMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TencentMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an TKE cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsTkeMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsTkeMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TencentMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified TKE cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsTkePoolMachinesList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of TKE machine items", + "schema": { + "$ref": "#/definitions/v1TencentMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of TKE machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsTkePoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TencentMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/tke/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsTkePoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified Tencent machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsTkePoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1TencentMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Tke machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsTkePoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TencentMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to the cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/virtual/{configUid}": { + "get": { + "operationId": "v1CloudConfigsVirtualGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1VirtualCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Virtual cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/virtual/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsVirtualUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VirtualCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/virtual/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsVirtualMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VirtualMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a virtual cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsVirtualMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsVirtualMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VirtualMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified virtual cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsVirtualPoolMachinesList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of virtual machine items", + "schema": { + "$ref": "#/definitions/v1VirtualMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of virtual machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsVirtualPoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VirtualMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/virtual/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsVirtualPoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified virtual machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsVirtualPoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1VirtualMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified virtual machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsVirtualPoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VirtualMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to the cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/virtual/{configUid}/resize": { + "parameters": [ + { + "description": "Specify virtual cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsVirtualUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VirtualClusterResize" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates and resizes the virtual cluster", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/vsphere/{configUid}": { + "get": { + "operationId": "v1CloudConfigsVsphereGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1VsphereCloudConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified vSphere cloud config", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/cloudconfigs/vsphere/{configUid}/clusterConfig": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsVsphereUidClusterConfig", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VsphereCloudClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster configuration information", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/vsphere/{configUid}/machinePools": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsVsphereMachinePoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VsphereMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a vSphere cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}": { + "delete": { + "operationId": "v1CloudConfigsVsphereMachinePoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified machine pool", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsVsphereMachinePoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VsphereMachinePoolConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified vSphere cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}/machines": { + "get": { + "operationId": "v1CloudConfigsVspherePoolMachinesList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of vSphere machine items", + "schema": { + "$ref": "#/definitions/v1VsphereMachines" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of vSphere machines", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1CloudConfigsVspherePoolMachinesAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VsphereMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds the vSphere machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/vsphere/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}": { + "delete": { + "operationId": "v1CloudConfigsVspherePoolMachinesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified vSphere machine", + "tags": [ + "cloudconfigs" + ] + }, + "get": { + "operationId": "v1CloudConfigsVspherePoolMachinesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1VsphereMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified vSphere machine", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsVspherePoolMachinesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VsphereMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine to cloud config's machine pool", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}/maintenance": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + }, + { + "description": "Cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsMachinePoolsMachineUidMaintenanceUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1MachineMaintenance" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine maintenance", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/{cloudType}/{configUid}/machinePools/{machinePoolName}/machines/{machineUid}/maintenance/status": { + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + }, + { + "description": "Machine pool name", + "in": "path", + "name": "machinePoolName", + "required": true, + "type": "string" + }, + { + "description": "Machine uid", + "in": "path", + "name": "machineUid", + "required": true, + "type": "string" + }, + { + "description": "Cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1CloudConfigsMachinePoolsMachineUidMaintenanceStatusUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1MachineMaintenanceStatus" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified machine maintenance", + "tags": [ + "cloudconfigs" + ] + } + }, + "/v1/cloudconfigs/{configUid}/machinePools/machineUids": { + "get": { + "operationId": "v1CloudConfigsMachinePoolsMachineUidsGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1MachinePoolsMachineUids" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cloud config's machine pools and machine uid", + "tags": [ + "cloudconfigs" + ] + }, + "parameters": [ + { + "description": "Cluster's cloud config uid", + "in": "path", + "name": "configUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/clouds/aws/account/sts": { + "get": { + "operationId": "V1AwsAccountStsGet", + "parameters": [ + { + "default": "aws", + "description": "AWS accounts are scoped to a single partition. Allowed values [aws, aws-us-gov], Default values", + "enum": [ + "aws", + "aws-us-gov" + ], + "in": "query", + "name": "partition", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/V1AwsAccountSts" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves AWS external id and account id", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/account/validate": { + "post": { + "operationId": "V1AwsAccountValidate", + "parameters": [ + { + "description": "Request payload to validate AWS cloud account", + "in": "body", + "name": "awsCloudAccount", + "required": true, + "schema": { + "$ref": "#/definitions/v1AwsCloudAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate the specified AWS account credentials", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/cloudwatch/validate": { + "post": { + "description": "Validates aws cloud watch credentials", + "operationId": "V1CloudsAwsCloudWatchValidate", + "parameters": [ + { + "description": "Request payload for cloud watch config", + "in": "body", + "name": "cloudWatchConfig", + "required": true, + "schema": { + "$ref": "#/definitions/v1.CloudWatchConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "validates aws cloud watch credentials", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/cost": { + "post": { + "operationId": "v1AwsCloudCost", + "parameters": [ + { + "description": "Request payload for AWS cloud cost", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1AwsCloudCostSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AwsCloudCostSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves AWS cloud account usage cost from cost explorer.", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/imageIds/{imageId}/volumeSize": { + "get": { + "description": "Get AWS Volume Size", + "operationId": "V1AwsVolumeSizeGet", + "parameters": [ + { + "description": "Specific AWS Region", + "in": "query", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "AWS image id", + "in": "path", + "name": "imageId", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AwsVolumeSize" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get AWS Volume Size", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/policies": { + "post": { + "operationId": "V1AwsIamPolicies", + "parameters": [ + { + "description": "Request payload for AWS Cloud Account", + "in": "body", + "name": "account", + "required": true, + "schema": { + "$ref": "#/definitions/v1AwsCloudAccount" + } + }, + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AwsPolicies" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of AWS policies for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/policyArns/validate": { + "post": { + "operationId": "V1AwsPolicyArnsValidate", + "parameters": [ + { + "description": "Request payload to validate AWS policy ARN", + "in": "body", + "name": "spec", + "required": true, + "schema": { + "$ref": "#/definitions/v1AwsPolicyArnsSpec" + } + }, + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate the aws policy arns validate", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/properties/validate": { + "post": { + "operationId": "V1AwsPropertiesValidate", + "parameters": [ + { + "description": "Request payload for AWS properties validate spec", + "in": "body", + "name": "properties", + "required": true, + "schema": { + "$ref": "#/definitions/V1AwsPropertiesValidateSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate AWS properties", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/regions": { + "get": { + "operationId": "V1AwsRegions", + "parameters": [ + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AwsRegions" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of AWS regions for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/regions/{region}/availabilityzones": { + "get": { + "operationId": "V1AwsZones", + "parameters": [ + { + "description": "Region for which zones are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AwsAvailabilityZones" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of AWS availability zones for the specified region", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/regions/{region}/copydefaultimages": { + "post": { + "operationId": "V1AwsCopyImageFromDefaultRegion", + "parameters": [ + { + "description": "Region to copy AWS image from", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Request payload to copy the AWS image", + "in": "body", + "name": "spectroClusterAwsImageTag", + "schema": { + "$ref": "#/definitions/v1AwsFindImageRequest" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AsyncOperationIdEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Copies the specified image from one region to another region", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/regions/{region}/eksClusters/name/validate": { + "get": { + "description": "Returns no contents if aws cluster name is valid else error.", + "operationId": "V1AwsClusterNameValidate", + "parameters": [ + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "cluster name to be validated", + "in": "query", + "name": "name", + "required": true, + "type": "string" + }, + { + "description": "Region for which cluster name is validated", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Check if Aws cluster name is valid", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/regions/{region}/images": { + "post": { + "operationId": "V1AwsFindImage", + "parameters": [ + { + "description": "Region to find AWS image", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Request payload to find the AWS image", + "in": "body", + "name": "awsImageRequest", + "schema": { + "$ref": "#/definitions/v1AwsFindImageRequest" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AwsImage" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns AWS image for the specified AMI name", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/regions/{region}/instancetypes": { + "get": { + "operationId": "V1AwsInstanceTypes", + "parameters": [ + { + "description": "Region for which AWS instances are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Filter for instances having cpu greater than or equal", + "format": "double", + "in": "query", + "name": "cpuGtEq", + "type": "number" + }, + { + "description": "Filter for instances having memory greater than or equal", + "format": "double", + "in": "query", + "name": "memoryGtEq", + "type": "number" + }, + { + "description": "Filter for instances having gpu greater than or equal", + "format": "double", + "in": "query", + "name": "gpuGtEq", + "type": "number" + }, + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AwsInstanceTypes" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of AWS instance types", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/regions/{region}/keypairs": { + "get": { + "operationId": "V1AwsKeyPairs", + "parameters": [ + { + "description": "Region for which AWS key pairs are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AwsKeyPairs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of AWS keypairs", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/regions/{region}/keypairs/{keypair}/validate": { + "post": { + "operationId": "V1AwsKeyPairValidate", + "parameters": [ + { + "description": "Region for which AWS key pairs is validated", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "AWS Key pair which is to be validated", + "in": "path", + "name": "keypair", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate the specified AWS keypair", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/regions/{region}/kms/{keyId}": { + "get": { + "operationId": "V1AwsKmsKeyGet", + "parameters": [ + { + "description": "Region for which AWS KMS key belongs", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "The globally unique identifier for the KMS key", + "in": "path", + "name": "keyId", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AwsKmsKeyEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get AWS KMS key by Id", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/regions/{region}/kmskeys": { + "get": { + "operationId": "V1AwsKmsKeys", + "parameters": [ + { + "description": "Region for which AWS KMS key are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AwsKmsKeys" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of AWS KMS keys for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/regions/{region}/kmskeys/validate": { + "get": { + "operationId": "V1AwsKmsKeyValidate", + "parameters": [ + { + "description": "Region for which AWS KMS key is validated", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "AWS KEY ARN for validation", + "in": "query", + "name": "keyArn", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate an Aws KMS key for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/regions/{region}/storagetypes": { + "get": { + "operationId": "V1AwsStorageTypes", + "parameters": [ + { + "description": "Region for which AWS storage types are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AwsStorageTypes" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of AWS storage types", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/regions/{region}/vpcs": { + "get": { + "operationId": "V1AwsVpcs", + "parameters": [ + { + "description": "Region for which VPCs are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AwsVpcs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of VPCs for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/s3/validate": { + "post": { + "operationId": "V1AwsS3Validate", + "parameters": [ + { + "description": "AWS S3 bucket credentials", + "in": "body", + "name": "awsS3Credential", + "required": true, + "schema": { + "$ref": "#/definitions/v1AwsS3BucketCredentials" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate the AWS S3 bucket", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/securitygroups": { + "get": { + "operationId": "V1AwsSecurityGroups", + "parameters": [ + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "Region for which security groups are requested", + "in": "query", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Vpc Id for which security groups are requested", + "in": "query", + "name": "vpcId", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AwsSecurityGroups" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of AWS security groups for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/aws/volumeTypes": { + "get": { + "description": "List all AWS Volume Types", + "operationId": "V1AwsVolumeTypesGet", + "parameters": [ + { + "description": "Specific AWS Region", + "in": "query", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AWSVolumeTypes" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get all AWS Volume Types", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/account/validate": { + "post": { + "description": "Returns no contents if account is valid else error.", + "operationId": "V1AzureAccountValidate", + "parameters": [ + { + "description": "Request payload for Azure cloud account", + "in": "body", + "name": "azureCloudAccount", + "required": true, + "schema": { + "$ref": "#/definitions/v1AzureCloudAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Check if Azure account is valid", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/groups": { + "get": { + "operationId": "V1AzureGroups", + "parameters": [ + { + "description": "Uid for the specific Azure cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AzureGroups" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Azure groups", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/regions": { + "get": { + "operationId": "V1AzureRegions", + "parameters": [ + { + "description": "Uid for the specific Azure cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "SubscriptionId for which resources is requested", + "in": "query", + "name": "subscriptionId", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AzureRegions" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Azure regions", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/regions/{region}/instancetypes": { + "get": { + "operationId": "V1AzureInstanceTypes", + "parameters": [ + { + "description": "Region for which Azure instance types are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Filter for instances having cpu greater than or equal", + "format": "double", + "in": "query", + "name": "cpuGtEq", + "type": "number" + }, + { + "description": "Filter for instances having memory greater than or equal", + "format": "double", + "in": "query", + "name": "memoryGtEq", + "type": "number" + }, + { + "description": "Filter for instances having gpu greater than or equal", + "format": "double", + "in": "query", + "name": "gpuGtEq", + "type": "number" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AzureInstanceTypes" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Azure instance types", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/regions/{region}/storagetypes": { + "get": { + "operationId": "V1AzureStorageTypes", + "parameters": [ + { + "description": "Region for which Azure storage types are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AzureStorageTypes" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Azure storage types", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/aksClusters/name/validate": { + "get": { + "description": "Returns no contents if Azure cluster name is valid else error.", + "operationId": "V1AzureClusterNameValidate", + "parameters": [ + { + "description": "Uid for the specific Azure cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "cluster name to be validated", + "in": "query", + "name": "name", + "required": true, + "type": "string" + }, + { + "description": "region in which cluster name is to be validated", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "subscriptionId in which cluster name is to be validated", + "in": "path", + "name": "subscriptionId", + "required": true, + "type": "string" + }, + { + "description": "resourceGroup in which cluster name is to be validated", + "in": "query", + "name": "resourceGroup", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Check if Azure cluster name is valid", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/networks": { + "get": { + "operationId": "V1AzureVirtualNetworkList", + "parameters": [ + { + "description": "Uid for the specific Azure cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Region for which Azure virtual networks are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for which Azure virtual networks are requested", + "in": "path", + "name": "subscriptionId", + "required": true, + "type": "string" + }, + { + "description": "Resource group for which Azure virtual networks are requested", + "in": "query", + "name": "resourceGroup", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AzureVirtualNetworkList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Azure virtual network list for the sepcified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/regions/{region}/subscriptions/{subscriptionId}/resourceGroups": { + "get": { + "operationId": "V1AzureResourceGroupList", + "parameters": [ + { + "description": "Uid for the specific Azure cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Region for which Azure resource group are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for which Azure resource group are requested", + "in": "path", + "name": "subscriptionId", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AzureResourceGroupList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Azure resource group for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/regions/{region}/zones": { + "get": { + "operationId": "V1AzureZones", + "parameters": [ + { + "description": "Region for which Azure zones are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific Azure cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "subscriptionId of azure account", + "in": "query", + "name": "subscriptionId", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AzureZoneEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Azure zones for the specified region", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/resourceGroups/{resourceGroup}/privateDnsZones": { + "get": { + "description": "Returns Azure private DNS zones", + "operationId": "V1AzurePrivateDnsZones", + "parameters": [ + { + "description": "resourceGroup for which Azure private dns zones are requested", + "in": "path", + "name": "resourceGroup", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific Azure cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "subscriptionId for which Azure private dns zones are requested", + "in": "query", + "name": "subscriptionId", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AzurePrivateDnsZones" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get Azure private DNS zones for the given resource group", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/resourceGroups/{resourceGroup}/storageAccounts": { + "get": { + "description": "Returns Azure storage accounts.", + "operationId": "V1AzureStorageAccounts", + "parameters": [ + { + "description": "resourceGroup for which Azure storage accounts are requested", + "in": "path", + "name": "resourceGroup", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific Azure cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "subscriptionId for which Azure storage accounts are requested", + "in": "query", + "name": "subscriptionId", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AzureStorageAccounts" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get Azure storage accounts", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/resourceGroups/{resourceGroup}/storageAccounts/{storageAccountName}/containers": { + "get": { + "description": "Returns Azure storage containers for the given account.", + "operationId": "V1AzureStorageContainers", + "parameters": [ + { + "description": "resourceGroup for which Azure storage accounts are requested", + "in": "path", + "name": "resourceGroup", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific Azure cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "subscriptionId for which Azure storage accounts are requested", + "in": "query", + "name": "subscriptionId", + "required": true, + "type": "string" + }, + { + "description": "resourceGroup for which Azure storage accounts are requested", + "in": "path", + "name": "storageAccountName", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AzureStorageContainers" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get Azure storage containers", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/storageaccounttypes": { + "get": { + "description": "Returns Azure storage account types.", + "operationId": "V1AzureStorageAccountTypes", + "parameters": [ + { + "description": "Region for which Azure storage account types are requested", + "in": "query", + "name": "region", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AzureStorageAccountEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get Azure storage account types", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/subscriptions": { + "get": { + "description": "Returns list of Azure subscription list.", + "operationId": "V1AzureSubscriptionList", + "parameters": [ + { + "description": "Uid for the specific Azure cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AzureSubscriptionList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Azure subscription list for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/azure/vhds/{vhd}/url": { + "get": { + "operationId": "V1AzureVhdUrl", + "parameters": [ + { + "description": "vhd location for which Azure vhd url is requested", + "in": "path", + "name": "vhd", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1AzureVhdUrlEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the Azure vhd url for the specified vhd location", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/cloudTypes": { + "get": { + "operationId": "V1CustomCloudTypesGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CustomCloudTypes" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the custom cloud types", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/cloudTypes/register": { + "post": { + "operationId": "V1CustomCloudTypeRegister", + "parameters": [ + { + "description": "Request payload to register custom cloud type", + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1CustomCloudRequestEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Registers the custom cloud type", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/cloudTypes/{cloudType}": { + "delete": { + "operationId": "V1CustomCloudTypesDelete", + "parameters": [ + { + "description": "Unique cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the custom cloud type", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/cloudTypes/{cloudType}/cloudAccountKeys": { + "get": { + "operationId": "V1CustomCloudTypeCloudAccountKeysGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CustomCloudTypeCloudAccountKeys" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns valid keys for the cloud account used for custom cloud type", + "tags": [ + "clouds" + ] + }, + "parameters": [ + { + "description": "Unique cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "V1CustomCloudTypeCloudAccountKeysUpdate", + "parameters": [ + { + "description": "Request payload for custom cloud meta entity", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1CustomCloudTypeCloudAccountKeys" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the custom cloud type cloud account keys", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/cloudTypes/{cloudType}/content/bootstrap": { + "delete": { + "operationId": "V1CustomCloudTypeBootstrapDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete the custom cloud type bootstrap", + "tags": [ + "clouds" + ] + }, + "get": { + "operationId": "V1CustomCloudTypeBootstrapGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CustomCloudTypeContentResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the custom cloud type bootstrap", + "tags": [ + "clouds" + ] + }, + "parameters": [ + { + "description": "Unique cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "consumes": [ + "multipart/form-data" + ], + "operationId": "V1CustomCloudTypeBootstrapUpdate", + "parameters": [ + { + "in": "formData", + "name": "fileName", + "type": "file" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the custom cloud type bootstrap", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/cloudTypes/{cloudType}/content/cloudProvider": { + "delete": { + "operationId": "V1CustomCloudTypeCloudProviderDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete the custom cloud type cloud provider", + "tags": [ + "clouds" + ] + }, + "get": { + "operationId": "V1CustomCloudTypeCloudProviderGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CustomCloudTypeContentResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the custom cloud type cloud provider", + "tags": [ + "clouds" + ] + }, + "parameters": [ + { + "description": "Unique cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "consumes": [ + "multipart/form-data" + ], + "operationId": "V1CustomCloudTypeCloudProviderUpdate", + "parameters": [ + { + "in": "formData", + "name": "fileName", + "type": "file" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the custom cloud type cloud provider", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/cloudTypes/{cloudType}/content/controlPlane": { + "delete": { + "operationId": "V1CustomCloudTypeControlPlaneDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete the custom cloud type control plane", + "tags": [ + "clouds" + ] + }, + "get": { + "operationId": "V1CustomCloudTypeControlPlaneGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CustomCloudTypeContentResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the custom cloud type control plane", + "tags": [ + "clouds" + ] + }, + "parameters": [ + { + "description": "Unique cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "consumes": [ + "multipart/form-data" + ], + "operationId": "V1CustomCloudTypeControlPlaneUpdate", + "parameters": [ + { + "in": "formData", + "name": "fileName", + "type": "file" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the custom cloud type control plane", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/cloudTypes/{cloudType}/content/templates/clusterTemplate": { + "delete": { + "operationId": "V1CustomCloudTypeClusterTemplateDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete the custom cloud type cluster template", + "tags": [ + "clouds" + ] + }, + "get": { + "operationId": "V1CustomCloudTypeClusterTemplateGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CustomCloudTypeContentResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the custom cloud type cluster template", + "tags": [ + "clouds" + ] + }, + "parameters": [ + { + "description": "Unique cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "consumes": [ + "multipart/form-data" + ], + "operationId": "V1CustomCloudTypeClusterTemplateUpdate", + "parameters": [ + { + "in": "formData", + "name": "fileName", + "type": "file" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the custom cloud type cluster template", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/cloudTypes/{cloudType}/content/templates/controlPlanePoolTemplate": { + "delete": { + "operationId": "V1CustomCloudTypeControlPlanePoolTemplateDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete the custom cloud type controlPlane pool template", + "tags": [ + "clouds" + ] + }, + "get": { + "operationId": "V1CustomCloudTypeControlPlanePoolTemplateGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CustomCloudTypeContentResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the custom cloud type controlPlane pool template", + "tags": [ + "clouds" + ] + }, + "parameters": [ + { + "description": "Unique cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "consumes": [ + "multipart/form-data" + ], + "operationId": "V1CustomCloudTypeControlPlanePoolTemplateUpdate", + "parameters": [ + { + "in": "formData", + "name": "fileName", + "type": "file" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the custom cloud type controlPlane pool template", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/cloudTypes/{cloudType}/content/templates/workerPoolTemplate": { + "delete": { + "operationId": "V1CustomCloudTypeWorkerPoolTemplateDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete the custom cloud type worker pool template", + "tags": [ + "clouds" + ] + }, + "get": { + "operationId": "V1CustomCloudTypeWorkerPoolTemplateGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CustomCloudTypeContentResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the custom cloud type worker pool template", + "tags": [ + "clouds" + ] + }, + "parameters": [ + { + "description": "Unique cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "consumes": [ + "multipart/form-data" + ], + "operationId": "V1CustomCloudTypeWorkerPoolTemplateUpdate", + "parameters": [ + { + "in": "formData", + "name": "fileName", + "type": "file" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the custom cloud type worker pool template", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/cloudTypes/{cloudType}/logo": { + "get": { + "operationId": "V1CustomCloudTypeLogoGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "Download the logo", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the custom cloud type logo", + "tags": [ + "clouds" + ] + }, + "parameters": [ + { + "description": "Unique cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "consumes": [ + "multipart/form-data" + ], + "operationId": "V1CustomCloudTypeLogoUpdate", + "parameters": [ + { + "in": "formData", + "name": "fileName", + "type": "file" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the custom cloud type logo", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/cloudTypes/{cloudType}/meta": { + "get": { + "operationId": "V1CustomCloudTypeMetaGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CustomCloudMetaEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the custom cloud type meta", + "tags": [ + "clouds" + ] + }, + "parameters": [ + { + "description": "Unique cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "V1CustomCloudTypeMetaUpdate", + "parameters": [ + { + "description": "Request payload for custom cloud meta entity", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1CustomCloudRequestEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the custom cloud type meta", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/coxedge/account/validate": { + "post": { + "operationId": "V1CoxEdgeAccountValidate", + "parameters": [ + { + "description": "Request payload to validate CoxEdge cloud account", + "in": "body", + "name": "account", + "required": true, + "schema": { + "$ref": "#/definitions/v1CoxEdgeCloudAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate the specified CoxEdge account credentials", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/coxedge/default/baseurls": { + "get": { + "operationId": "V1CoxEdgeBaseUrls", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CoxEdgeBaseUrls" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of default base urls", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/coxedge/environments": { + "get": { + "operationId": "V1CoxEdgeEnvironmentsGet", + "parameters": [ + { + "description": "Uid for the specific CoxEdge cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "OrganizationId for the specific CoxEdge account", + "in": "query", + "name": "organizationId", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "List of CoxEdge environments", + "schema": { + "$ref": "#/definitions/v1CoxEdgeEnvironments" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of environments for the specified account", + "tags": [ + "clouds" + ] + }, + "post": { + "operationId": "V1CoxEdgeEnvironments", + "parameters": [ + { + "description": "Request payload to get CoxEdge environments", + "in": "body", + "name": "spec", + "required": true, + "schema": { + "$ref": "#/definitions/v1CoxEdgeEnvironmentsRequest" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "List of CoxEdge environments", + "schema": { + "$ref": "#/definitions/v1CoxEdgeEnvironments" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of environments for baseUrl and apiKey", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/coxedge/organizations": { + "get": { + "operationId": "V1CoxEdgeOrganizationsGet", + "parameters": [ + { + "description": "Uid for the specific CoxEdge cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "List of CoxEdge organizations", + "schema": { + "$ref": "#/definitions/v1CoxEdgeOrganizations" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of organizations for the specified account", + "tags": [ + "clouds" + ] + }, + "post": { + "operationId": "V1CoxEdgeOrganizations", + "parameters": [ + { + "description": "Request payload to get CoxEdge organizations", + "in": "body", + "name": "spec", + "required": true, + "schema": { + "$ref": "#/definitions/v1CoxEdgeCredentials" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "List of CoxEdge organizations", + "schema": { + "$ref": "#/definitions/v1CoxEdgeOrganizations" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of organizations for baseUrl and apiKey", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/coxedge/regions": { + "get": { + "operationId": "V1CoxEdgeRegions", + "parameters": [ + { + "description": "Uid for the specific AWS cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "CoxEdge organization id", + "in": "query", + "name": "organizationId", + "type": "string" + }, + { + "description": "CoxEdge service name", + "in": "query", + "name": "service", + "type": "string" + }, + { + "description": "CoxEdge environment name", + "in": "query", + "name": "environment", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CoxEdgeRegions" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of CoxEdge regions for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/coxedge/regions/{region}/instancetypes": { + "get": { + "operationId": "V1CoxEdgeInstanceTypes", + "parameters": [ + { + "description": "Region for which CoxEdge instances are listed", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Filter for instances having cpu greater than or equal", + "format": "double", + "in": "query", + "name": "cpuGtEq", + "type": "number" + }, + { + "description": "Filter for instances having memory greater than or equal", + "format": "double", + "in": "query", + "name": "memoryGtEq", + "type": "number" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CoxEdgeInstanceTypes" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of CoxEdge instance types", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/coxedge/services": { + "get": { + "operationId": "V1CoxEdgeServicesGet", + "parameters": [ + { + "description": "Uid for the specific CoxEdge cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "OrganizationId for the specific CoxEdge account", + "in": "query", + "name": "organizationId", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "List of CoxEdge services", + "schema": { + "$ref": "#/definitions/v1CoxEdgeServices" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of services for the specified account", + "tags": [ + "clouds" + ] + }, + "post": { + "operationId": "V1CoxEdgeServices", + "parameters": [ + { + "description": "Request payload to get CoxEdge services", + "in": "body", + "name": "spec", + "required": true, + "schema": { + "$ref": "#/definitions/v1CoxEdgeCredentials" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CoxEdgeServices" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of services for baseUrl and apiKey", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/eks/properties/validate": { + "post": { + "operationId": "V1EksPropertiesValidate", + "parameters": [ + { + "description": "Request payload for EKS properties validate spec", + "in": "body", + "name": "properties", + "required": true, + "schema": { + "$ref": "#/definitions/V1EksPropertiesValidateSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate EKS properties", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/gcp/account/validate": { + "post": { + "operationId": "V1GcpAccountValidate", + "parameters": [ + { + "description": "Uid for the specific GCP cloud account", + "in": "body", + "name": "gcpCloudAccount", + "required": true, + "schema": { + "$ref": "#/definitions/v1GcpCloudAccountValidateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate the specified GCP account credentials", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/gcp/azs/validate": { + "post": { + "operationId": "V1GcpAzValidate", + "parameters": [ + { + "description": "Uid for the specific GCP cloud account", + "in": "body", + "name": "entity", + "required": true, + "schema": { + "$ref": "#/definitions/v1AzValidateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate the specified GCP az", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/gcp/bucketname/validate": { + "post": { + "operationId": "V1GcpBucketNameValidate", + "parameters": [ + { + "description": "Request payload for GCP account name validate", + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1GcpAccountNameValidateSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate the specified GCP bucket name credentials", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/gcp/image/container/validate": { + "get": { + "operationId": "V1GcpContainerImageValidate", + "parameters": [ + { + "description": "image path in the container", + "in": "query", + "name": "imagePath", + "required": true, + "type": "string" + }, + { + "description": "tag in the GCP container", + "in": "query", + "name": "tag", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates the image with tag", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/gcp/images/{imageName}/url": { + "get": { + "operationId": "V1GcpImageUrl", + "parameters": [ + { + "description": "imageName for which GCP image url is requested", + "in": "path", + "name": "imageName", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1GcpImageUrlEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the Gcp image url for the specified image location", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/gcp/projects": { + "get": { + "operationId": "V1GcpProjects", + "parameters": [ + { + "description": "Uid for the specific GCP cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1GcpProjects" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of GCP projects for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/gcp/projects/{project}/regions": { + "get": { + "operationId": "V1GcpRegions", + "parameters": [ + { + "description": "Uid for the specific GCP cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Project Name for which GCP zones are requested", + "in": "path", + "name": "project", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1GcpRegions" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of GCP regions", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/gcp/projects/{project}/regions/{region}/networks": { + "get": { + "operationId": "V1GcpNetworks", + "parameters": [ + { + "description": "Uid for the specific GCP cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Region for which GCP networks are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Project Name for which GCP networks are requested", + "in": "path", + "name": "project", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1GcpNetworks" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of GCP networks for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/gcp/projects/{project}/regions/{region}/zones": { + "get": { + "operationId": "V1GcpZones", + "parameters": [ + { + "description": "Uid for the specific GCP cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Region for which GCP zones are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Project Name for which GCP zones are requested", + "in": "path", + "name": "project", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1GcpZones" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of GCP zones for the specified account and region", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/gcp/projects/{project}/validate": { + "post": { + "operationId": "V1GcpProjectValidate", + "parameters": [ + { + "description": "GCP project uid", + "in": "path", + "name": "project", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific GCP cloud account", + "in": "body", + "name": "cloudAccountUid", + "required": true, + "schema": { + "$ref": "#/definitions/v1CloudAccountUidEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate the specified GCP project", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/gcp/projects/{project}/zones": { + "get": { + "operationId": "V1GcpAvailabilityZones", + "parameters": [ + { + "description": "Uid for the specific GCP cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Project Name for which GCP zones are requested", + "in": "path", + "name": "project", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1GcpZones" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of GCP zones for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/gcp/properties/validate": { + "post": { + "operationId": "V1GcpPropertiesValidate", + "parameters": [ + { + "description": "Request payload for GCP properties validate spec", + "in": "body", + "name": "properties", + "required": true, + "schema": { + "$ref": "#/definitions/V1GcpPropertiesValidateSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate GCP properties", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/gcp/regions/{region}/instancetypes": { + "get": { + "operationId": "V1GcpInstanceTypes", + "parameters": [ + { + "description": "Region for which GCP instance types are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Filter for instances having cpu greater than or equal", + "format": "double", + "in": "query", + "name": "cpuGtEq", + "type": "number" + }, + { + "description": "Filter for instances having memory greater than or equal", + "format": "double", + "in": "query", + "name": "memoryGtEq", + "type": "number" + }, + { + "description": "Filter for instances having gpu greater than or equal", + "format": "double", + "in": "query", + "name": "gpuGtEq", + "type": "number" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1GcpInstanceTypes" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of GCP instance types", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/gcp/regions/{region}/storagetypes": { + "get": { + "operationId": "V1GcpStorageTypes", + "parameters": [ + { + "description": "Region for which GCP storage types are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1GcpStorageTypes" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Gcp storage types", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/maas/account/validate": { + "post": { + "description": "Returns no contents if account is valid else error.", + "operationId": "V1MaasAccountValidate", + "parameters": [ + { + "description": "Request payload for Maas cloud account", + "in": "body", + "name": "account", + "required": true, + "schema": { + "$ref": "#/definitions/v1MaasCloudAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Check if Maas account is valid", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/maas/azs": { + "get": { + "operationId": "V1MaasZonesGet", + "parameters": [ + { + "description": "Uid for the specific Maas cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1MaasZones" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Maas zones for a particular account uid", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/maas/domains": { + "get": { + "operationId": "V1MaasDomainsGet", + "parameters": [ + { + "description": "Uid for the specific Maas cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1MaasDomains" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Maas domains", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/maas/resourcePools": { + "get": { + "operationId": "V1MaasPoolsGet", + "parameters": [ + { + "description": "Uid for the specific Maas cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1MaasPools" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Maas pools for a particular account uid", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/maas/subnets": { + "get": { + "operationId": "V1MaasSubnetsGet", + "parameters": [ + { + "description": "Uid for the specific Maas cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1MaasSubnets" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Maas subnets for a particular account uid", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/maas/tags": { + "get": { + "operationId": "V1MaasTagsGet", + "parameters": [ + { + "description": "Uid for the specific Maas cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1MaasTags" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Maas tags for a particular account uid", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/openstack/account/validate": { + "post": { + "description": "Returns no contents if account is valid else error.", + "operationId": "V1OpenStackAccountValidate", + "parameters": [ + { + "description": "Request payload for OpenStack cloud account", + "in": "body", + "name": "openstackCloudAccount", + "required": true, + "schema": { + "$ref": "#/definitions/v1OpenStackCloudAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Check if OpenStack account is valid", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/openstack/azs": { + "get": { + "operationId": "V1OpenStackAzsGet", + "parameters": [ + { + "description": "Uid for the specific OpenStack cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "project for which OpenStack azs are requested", + "in": "query", + "name": "project", + "type": "string" + }, + { + "description": "region for which OpenStack azs are requested", + "in": "query", + "name": "region", + "type": "string" + }, + { + "description": "domain for which OpenStack azs are requested", + "in": "query", + "name": "domain", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OpenStackAzs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of OpenStack azs for a particular account uid", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/openstack/flavors": { + "get": { + "operationId": "V1OpenStackFlavorsGet", + "parameters": [ + { + "description": "Uid for the specific OpenStack cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "project for which OpenStack flavors are requested", + "in": "query", + "name": "project", + "type": "string" + }, + { + "description": "region for which OpenStack flavors are requested", + "in": "query", + "name": "region", + "type": "string" + }, + { + "description": "domain for which OpenStack flavors are requested", + "in": "query", + "name": "domain", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OpenStackFlavors" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the OpenStack flavors", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/openstack/keypairs": { + "get": { + "operationId": "V1OpenStackKeypairsGet", + "parameters": [ + { + "description": "Uid for the specific OpenStack cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "project for which OpenStack keypairs are requested", + "in": "query", + "name": "project", + "type": "string" + }, + { + "description": "region for which OpenStack keypairs are requested", + "in": "query", + "name": "region", + "type": "string" + }, + { + "description": "domain for which OpenStack keypairs are requested", + "in": "query", + "name": "domain", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OpenStackKeypairs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the OpenStack keypair", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/openstack/networks": { + "get": { + "operationId": "V1OpenStackNetworksGet", + "parameters": [ + { + "description": "Uid for the specific OpenStack cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "project for which OpenStack networks are requested", + "in": "query", + "name": "project", + "type": "string" + }, + { + "description": "region for which OpenStack networks are requested", + "in": "query", + "name": "region", + "type": "string" + }, + { + "description": "domain for which OpenStack networks are requested", + "in": "query", + "name": "domain", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OpenStackNetworks" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the OpenStack networks", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/openstack/projects": { + "get": { + "operationId": "V1OpenStackProjectsGet", + "parameters": [ + { + "description": "Uid for the specific OpenStack cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OpenStackProjects" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the OpenStack projects", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/openstack/regions": { + "get": { + "operationId": "V1OpenStackRegionsGet", + "parameters": [ + { + "description": "Uid for the specific OpenStack cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OpenStackRegions" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the OpenStack regions", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/tencent/account/validate": { + "post": { + "operationId": "V1TencentAccountValidate", + "parameters": [ + { + "description": "Request payload to validate tencent cloud account", + "in": "body", + "name": "account", + "required": true, + "schema": { + "$ref": "#/definitions/v1TencentCloudAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate the specified Tencent account credentials", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/tencent/regions": { + "get": { + "operationId": "V1TencentRegions", + "parameters": [ + { + "description": "Uid for the specific Tencent cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1TencentRegions" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Tencent regions for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/tencent/regions/{region}/instancetypes": { + "get": { + "operationId": "V1TencentInstanceTypes", + "parameters": [ + { + "description": "Region for which tencent instances are listed", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Filter for instances having cpu greater than or equal", + "format": "double", + "in": "query", + "name": "cpuGtEq", + "type": "number" + }, + { + "description": "Filter for instances having memory greater than or equal", + "format": "double", + "in": "query", + "name": "memoryGtEq", + "type": "number" + }, + { + "description": "Filter for instances having gpu greater than or equal", + "format": "double", + "in": "query", + "name": "gpuGtEq", + "type": "number" + }, + { + "description": "Uid for the specific tencent cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1TencentInstanceTypes" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Tencent instance types", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/tencent/regions/{region}/keypairs": { + "get": { + "operationId": "V1TencentKeypairs", + "parameters": [ + { + "description": "Region for which keypairs are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific Tencent cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1TencentKeypairs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of keypairs for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/tencent/regions/{region}/securitygroups": { + "get": { + "operationId": "V1TencentSecurityGroups", + "parameters": [ + { + "description": "Region for which security groups are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific Tencent cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1TencentSecurityGroups" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of secutity groups for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/tencent/regions/{region}/storagetypes": { + "get": { + "operationId": "V1TencentStorageTypes", + "parameters": [ + { + "description": "Region for which tencent storages are listed", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific tencent cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Zone for which tencent storages are listed", + "in": "query", + "name": "zone", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1TencentStorageTypes" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Tencent storage types", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/tencent/regions/{region}/vpcs": { + "get": { + "operationId": "V1TencentVpcs", + "parameters": [ + { + "description": "Region for which VPCs are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific Tencent cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1TencentVpcs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of VPCs for the specified account", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/tencent/regions/{region}/zones": { + "get": { + "operationId": "V1TencentZones", + "parameters": [ + { + "description": "Region for which zones are requested", + "in": "path", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Uid for the specific Tencent cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1TencentAvailabilityZones" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Tencent availability zones for the specified region", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/vsphere/account/validate": { + "post": { + "description": "Returns no contents if account is valid else error.", + "operationId": "V1VsphereAccountValidate", + "parameters": [ + { + "description": "Request payload for VSphere cloud account", + "in": "body", + "name": "vsphereCloudAccount", + "required": true, + "schema": { + "$ref": "#/definitions/v1VsphereCloudAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Check if Vsphere account is valid", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/vsphere/datacenters": { + "get": { + "operationId": "V1VsphereDatacenters", + "parameters": [ + { + "description": "Uid for the specific OpenStack cloud account", + "in": "query", + "name": "cloudAccountUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1VsphereDatacenters" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the vsphere data centers", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/vsphere/datacenters/{uid}/computeclusters/{computecluster}": { + "get": { + "operationId": "V1VsphereComputeClusterResources", + "parameters": [ + { + "description": "Uid for the specific VSphere cloud account", + "in": "query", + "name": "cloudAccountUid", + "required": true, + "type": "string" + }, + { + "description": "computecluster for which resources is requested", + "in": "path", + "name": "computecluster", + "required": true, + "type": "string" + }, + { + "description": "VSphere datacenter uid for which resources is requested", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1VsphereComputeClusterResources" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the resources for vsphere compute cluster", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/vsphere/env": { + "get": { + "operationId": "V1VsphereEnv", + "parameters": [ + { + "description": "Request payload for VSphere cloud account", + "in": "body", + "name": "vsphereCloudAccount", + "required": true, + "schema": { + "$ref": "#/definitions/v1VsphereCloudAccount" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1VsphereEnv" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves vsphere env", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/{cloudType}/instance/spotprice": { + "get": { + "operationId": "V1CloudInstanceSpotPriceGet", + "parameters": [ + { + "description": "Cloud type [aws/azure/gcp/tencent]", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + }, + { + "description": "Instance type for a specific cloud type", + "in": "query", + "name": "instanceType", + "required": true, + "type": "string" + }, + { + "description": "Availability zone for a specific cloud type", + "in": "query", + "name": "zone", + "required": true, + "type": "string" + }, + { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "format": "date-time", + "in": "query", + "name": "timestamp", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CloudSpotPrice" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves the cloud instance spot price based on zone and timestamp for a specific cloud", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/{cloud}/compute/{type}/rate": { + "get": { + "operationId": "V1CloudComputeRate", + "parameters": [ + { + "description": "cloud for which compute rate is requested", + "in": "path", + "name": "cloud", + "required": true, + "type": "string" + }, + { + "description": "instance type for which compute rate is requested", + "in": "path", + "name": "type", + "required": true, + "type": "string" + }, + { + "description": "region for which compute rate is requested", + "in": "query", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CloudCost" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the cloud compute rate", + "tags": [ + "clouds" + ] + } + }, + "/v1/clouds/{cloud}/storage/{type}/rate": { + "get": { + "operationId": "V1CloudStorageRate", + "parameters": [ + { + "description": "cloud for which compute rate is requested", + "in": "path", + "name": "cloud", + "required": true, + "type": "string" + }, + { + "description": "storage type for which compute rate is requested", + "in": "path", + "name": "type", + "required": true, + "type": "string" + }, + { + "description": "region for which compute rate is requested", + "in": "query", + "name": "region", + "required": true, + "type": "string" + }, + { + "description": "maxDiskType for which compute rate is requested", + "in": "query", + "name": "maxDiskType", + "type": "integer" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1CloudCost" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the cloud storage rate", + "tags": [ + "clouds" + ] + } + }, + "/v1/clustergroups": { + "post": { + "operationId": "v1ClusterGroupsCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterGroupEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create cluster groups", + "tags": [ + "clustergroups" + ] + } + }, + "/v1/clustergroups/developerCredit/usage/{scope}": { + "get": { + "operationId": "v1ClusterGroupsDeveloperCreditUsageGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Cluster group developer credit usage", + "schema": { + "$ref": "#/definitions/v1ClusterGroupsDeveloperCreditUsage" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get cluster group developer credit usage by scope", + "tags": [ + "clustergroups" + ] + }, + "parameters": [ + { + "in": "path", + "name": "scope", + "required": true, + "type": "string" + } + ] + }, + "/v1/clustergroups/hostCluster": { + "get": { + "operationId": "v1ClusterGroupsHostClusterSummary", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster groups of host cluster type summary", + "schema": { + "$ref": "#/definitions/v1ClusterGroupsHostClusterSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of cluster groups host cluster summary", + "tags": [ + "clustergroups" + ] + } + }, + "/v1/clustergroups/hostCluster/metadata": { + "get": { + "operationId": "v1ClusterGroupsHostClusterMetadata", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster groups host cluster metadata items", + "schema": { + "$ref": "#/definitions/v1ClusterGroupsHostClusterMetadata" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of cluster groups host cluster metadata", + "tags": [ + "clustergroups" + ] + } + }, + "/v1/clustergroups/validate/name": { + "get": { + "operationId": "v1ClusterGroupsValidateName", + "parameters": [ + { + "in": "query", + "name": "name", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates the cluster groups name", + "tags": [ + "clustergroups" + ] + } + }, + "/v1/clustergroups/{uid}": { + "delete": { + "operationId": "v1ClusterGroupsUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified cluster group", + "tags": [ + "clustergroups" + ] + }, + "get": { + "operationId": "v1ClusterGroupsUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterGroup" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster groups", + "tags": [ + "clustergroups" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/clustergroups/{uid}/hostCluster": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ClusterGroupsUidHostClusterUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterGroupHostClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates cluster reference and host cluster config", + "tags": [ + "clustergroups" + ] + } + }, + "/v1/clustergroups/{uid}/meta": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ClusterGroupsUidMetaUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ObjectMeta" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster groups meta", + "tags": [ + "clustergroups" + ] + } + }, + "/v1/clustergroups/{uid}/packs/resolvedValues": { + "get": { + "operationId": "v1ClusterGroupsUidPacksResolvedValuesGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1SpectroClusterProfilesResolvedValues" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified clustergroup's profile packs resolved values", + "tags": [ + "clustergroups" + ] + }, + "parameters": [ + { + "description": "Cluster group uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterProfilesParamReferenceEntity" + } + } + ] + }, + "/v1/clustergroups/{uid}/profiles": { + "get": { + "operationId": "v1ClusterGroupsUidProfilesGet", + "parameters": [ + { + "description": "includes pack meta such as schema, presets", + "in": "query", + "name": "includePackMeta", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1SpectroClusterProfileList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the associated profiles of a specified cluster group", + "tags": [ + "clustergroups" + ] + }, + "parameters": [ + { + "description": "ClusterGroup uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ClusterGroupsUidProfilesUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterProfiles" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster groups profiles", + "tags": [ + "clustergroups" + ] + } + }, + "/v1/clusterprofiles": { + "post": { + "operationId": "v1ClusterProfilesCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterProfileEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a cluster profile", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/bulk": { + "delete": { + "operationId": "v1ClusterProfilesBulkDelete", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1BulkDeleteRequest" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1BulkDeleteResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes list of cluster profiles", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/import": { + "post": { + "operationId": "v1ClusterProfilesImport", + "parameters": [ + { + "description": "If true then cluster profile will be published post successful import", + "in": "query", + "name": "publish", + "type": "boolean" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterProfileImportEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Imports a cluster profile", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/import/file": { + "post": { + "consumes": [ + "multipart/form-data" + ], + "operationId": "v1ClusterProfilesImportFile", + "parameters": [ + { + "description": "If true then cluster profile will be published post successful import", + "in": "query", + "name": "publish", + "type": "boolean" + }, + { + "description": "Cluster profile import file", + "in": "formData", + "name": "importFile", + "type": "file" + }, + { + "default": "json", + "description": "Cluster profile import file format [\"yaml\", \"json\"]", + "enum": [ + "yaml", + "json" + ], + "in": "query", + "name": "format", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Imports a cluster profile via file", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/import/validate": { + "post": { + "operationId": "v1ClusterProfilesImportValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterProfileImportEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Cluster profile import validated response", + "schema": { + "$ref": "#/definitions/v1ClusterProfileImportEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates cluster profile import", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/macros": { + "get": { + "operationId": "v1MacrosList", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of macros", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/validate/name": { + "get": { + "description": "Validates the cluster profile name and version", + "operationId": "v1ClusterProfilesValidateNameVersion", + "parameters": [ + { + "description": "Cluster profile name", + "in": "query", + "name": "name", + "type": "string" + }, + { + "description": "Cluster profile version", + "in": "query", + "name": "version", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates the cluster profile metadata", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/validate/packs": { + "post": { + "operationId": "v1ClusterProfilesValidatePacks", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterProfileTemplateDraft" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Cluster profile packs validation response", + "schema": { + "$ref": "#/definitions/v1ClusterProfileValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates cluster profile packs", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/{uid}": { + "delete": { + "operationId": "v1ClusterProfilesDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified cluster profile", + "tags": [ + "clusterprofiles" + ] + }, + "get": { + "operationId": "v1ClusterProfilesGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterProfile" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns a specified cluster profile", + "tags": [ + "clusterprofiles" + ] + }, + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Comma seperated pack meta such as schema, presets", + "in": "query", + "name": "includePackMeta", + "type": "string" + } + ], + "put": { + "operationId": "v1ClusterProfilesUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterProfileUpdateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster profile", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/{uid}/clone": { + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1ClusterProfilesUidClone", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterProfileCloneEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a clone of the specified cluster profile", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/{uid}/clone/validate": { + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "description": "Validates the cloned cluster profile name, version and target project uid", + "operationId": "v1ClusterProfilesUidCloneValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterProfileCloneMetaInputEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates the cluster profile clone", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/{uid}/export": { + "get": { + "operationId": "V1ClusterProfilesUidExport", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "Exports cluster profile as a file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Export the specified cluster profile", + "tags": [ + "clusterprofiles" + ] + }, + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "default": "json", + "description": "Cluster profile export file format [ \"yaml\", \"json\" ]", + "enum": [ + "yaml", + "json" + ], + "in": "query", + "name": "format", + "type": "string" + } + ] + }, + "/v1/clusterprofiles/{uid}/export/terraform": { + "get": { + "operationId": "V1ClusterProfilesUidExportTerraform", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "Downloads cluster profile export file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Downloads the specified cluster profile", + "tags": [ + "clusterprofiles" + ] + }, + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "default": "yaml", + "description": "Cluster profile export file format [ \"yaml\", \"json\" ]", + "enum": [ + "yaml", + "json" + ], + "in": "query", + "name": "format", + "type": "string" + } + ] + }, + "/v1/clusterprofiles/{uid}/metadata": { + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1ClusterProfilesUidMetadataUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ProfileMetaEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster profile metadata", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/{uid}/packRefs": { + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Cluster profile notification uid", + "in": "query", + "name": "notify", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterProfileNotificationUpdateEntity" + } + } + ], + "patch": { + "operationId": "v1ClusterProfilesPacksRefUpdate", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates cluster profile packs ref", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/{uid}/packs": { + "get": { + "operationId": "v1ClusterProfilesUidPacksGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterProfilePacksEntities" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster profile packs", + "tags": [ + "clusterprofiles" + ] + }, + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Comma seperated pack meta such as schema, presets", + "in": "query", + "name": "includePackMeta", + "type": "string" + } + ], + "post": { + "operationId": "v1ClusterProfilesUidPacksAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1PackInputEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds a new pack to the specified cluster profile and returns the created pack uid", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/{uid}/packs/manifests": { + "get": { + "operationId": "v1ClusterProfilesUidPacksManifestsGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterProfilePacksManifests" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster profile pack manifests", + "tags": [ + "clusterprofiles" + ] + }, + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Comma seperated pack meta such as schema, presets", + "in": "query", + "name": "includePackMeta", + "type": "string" + } + ] + }, + "/v1/clusterprofiles/{uid}/packs/resolvedValues": { + "get": { + "operationId": "v1ClusterProfilesUidPacksResolvedValuesGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1PackResolvedValues" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster profile packs resolved values", + "tags": [ + "clusterprofiles" + ] + }, + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1PackParamsEntity" + } + } + ] + }, + "/v1/clusterprofiles/{uid}/packs/{packName}": { + "delete": { + "operationId": "v1ClusterProfilesUidPacksNameDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified pack information in the cluster profile", + "tags": [ + "clusterprofiles" + ] + }, + "get": { + "operationId": "V1ClusterProfilesUidPacksNameGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1PackRefSummaryResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster profile pack", + "tags": [ + "clusterprofiles" + ] + }, + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Cluster profile pack name", + "in": "path", + "name": "packName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ClusterProfilesUidPacksNameUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1PackUpdateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified pack information in the cluster profile", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/{uid}/packs/{packName}/config": { + "get": { + "operationId": "v1ClusterProfilesUidPacksConfigGet", + "parameters": [ + { + "description": "cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Cluster profile pack name", + "in": "path", + "name": "packName", + "required": true, + "type": "string" + }, + { + "description": "Cluster profile pack uid", + "in": "query", + "name": "packUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster profile pack configurations", + "schema": { + "$ref": "#/definitions/v1ClusterProfilePackConfigList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster profile pack configuration", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/{uid}/packs/{packName}/manifests": { + "get": { + "operationId": "v1ClusterProfilesUidPacksUidManifests", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ManifestEntities" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the associated manifests for the specified profile's pack", + "tags": [ + "clusterprofiles" + ] + }, + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Cluster profile pack name", + "in": "path", + "name": "packName", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1ClusterProfilesUidPacksNameManifestsAdd", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ManifestInputEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Adds manifest to the profiles packs and returns the added manifests uid", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/{uid}/packs/{packName}/manifests/{manifestUid}": { + "delete": { + "operationId": "v1ClusterProfilesUidPacksNameManifestsUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified cluster profile pack manifest", + "tags": [ + "clusterprofiles" + ] + }, + "get": { + "operationId": "v1ClusterProfilesUidPacksNameManifestsUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ManifestEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster profile pack manifest", + "tags": [ + "clusterprofiles" + ] + }, + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Cluster profile pack name", + "in": "path", + "name": "packName", + "required": true, + "type": "string" + }, + { + "description": "Cluster profile pack manifest uid", + "in": "path", + "name": "manifestUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ClusterProfilesUidPacksNameManifestsUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ManifestInputEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified manifest of the profile's pack", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/{uid}/publish": { + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "description": "Publish the draft cluster profile with next revision, the current draft cluster profile will be marked to published\nand the draft cluster profile will be set to null in the cluster profile template.\n", + "operationId": "v1ClusterProfilesPublish", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Cluster profile published successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Publishes the specified cluster profile", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/{uid}/spc/download": { + "get": { + "operationId": "v1ClusterProfilesUidSpcDownload", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "Download cluster profile archive file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Downloads the specified cluster profile", + "tags": [ + "clusterprofiles" + ] + }, + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/clusterprofiles/{uid}/validate/packs": { + "post": { + "operationId": "v1ClusterProfilesUidValidatePacks", + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterProfileTemplateDraft" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Cluster profile packs validation response", + "schema": { + "$ref": "#/definitions/v1ClusterProfileValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates specified cluster profile packs", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/clusterprofiles/{uid}/variables": { + "delete": { + "operationId": "V1ClusterProfilesUidVariablesDelete", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VariableNames" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified cluster profile variables", + "tags": [ + "clusterprofiles" + ] + }, + "get": { + "operationId": "V1ClusterProfilesUidVariablesGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Variables" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieve a list of variables defined for the cluster profile", + "tags": [ + "clusterprofiles" + ] + }, + "parameters": [ + { + "description": "Cluster profile uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "V1ClusterProfilesUidVariablesPatch", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Variables" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update specific variables defined for a cluster profile", + "tags": [ + "clusterprofiles" + ] + }, + "put": { + "operationId": "V1ClusterProfilesUidVariablesPut", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Variables" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the variables defined for a cluster profile", + "tags": [ + "clusterprofiles" + ] + } + }, + "/v1/dashboard/appDeployments": { + "post": { + "operationId": "v1DashboardAppDeployments", + "parameters": [ + { + "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "maximum": 20, + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AppDeploymentsFilterSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of application deployment summary items", + "schema": { + "$ref": "#/definitions/v1AppDeploymentsSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of application deployments filter summary Supported filter fields - [\"appDeploymentName\", \"clusterUid\", \"tags\"] Supported sort fields - [\"appDeploymentName\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/appProfiles": { + "post": { + "operationId": "v1DashboardAppProfiles", + "parameters": [ + { + "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "maximum": 20, + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AppProfilesFilterSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of application profiles summary items", + "schema": { + "$ref": "#/definitions/v1AppProfilesSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of application profiles filter summary Supported filter fields - [\"profileName\", \"tags\"] Supported sort fields - [\"profileName\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/appProfiles/metadata": { + "get": { + "operationId": "v1DashboardAppProfilesMetadata", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of application profile summary items", + "schema": { + "$ref": "#/definitions/v1AppProfilesMetadata" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of application profile metadata", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/appliances/metadata": { + "post": { + "operationId": "v1EdgeHostsMetadata", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeHostsMetadataFilter" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of edgehost summary items", + "schema": { + "$ref": "#/definitions/v1EdgeHostsMetadataSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of edgehosts summary", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/cloudaccounts/metadata": { + "get": { + "operationId": "v1DashboardCloudAccountsMetadata", + "parameters": [ + { + "in": "query", + "name": "environment", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cloud accounts summary items", + "schema": { + "$ref": "#/definitions/v1CloudAccountsMetadata" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of cloud accounts metadata", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/clustergroups/{uid}/hostClusters": { + "post": { + "operationId": "v1ClusterGroupUidHostClustersSummary", + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SearchFilterSummarySpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster summary items", + "schema": { + "$ref": "#/definitions/v1SpectroClustersSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of cluster summary for a given cluster group", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/clustergroups/{uid}/virtualClusters": { + "post": { + "operationId": "v1ClusterGroupUidVirtualClustersSummary", + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SearchFilterSummarySpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster summary items", + "schema": { + "$ref": "#/definitions/v1SpectroClustersSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of cluster summary for a given cluster group", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/clusterprofiles": { + "post": { + "operationId": "v1ClusterProfilesFilterSummary", + "parameters": [ + { + "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "maximum": 20, + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterProfilesFilterSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster profiles summary items", + "schema": { + "$ref": "#/definitions/v1ClusterProfilesSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of cluster profiles filter summary Supported filter fields - [\"profileName\", \"tags\", \"profileType\", \"environment\"] Supported sort fields - [\"profileName\", \"environment\", \"profileType\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/clusterprofiles/metadata": { + "get": { + "operationId": "v1ClusterProfilesMetadata", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster summary items", + "schema": { + "$ref": "#/definitions/v1ClusterProfilesMetadata" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of cluster profiles metadata", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/clusterprofiles/{uid}": { + "get": { + "operationId": "v1ClusterProfilesUidSummary", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Cluster profile summary response", + "schema": { + "$ref": "#/definitions/v1ClusterProfileSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a specified cluster profile summary", + "tags": [ + "dashboard" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/dashboard/edgehosts/search": { + "post": { + "operationId": "v1DashboardEdgehostsSearch", + "parameters": [ + { + "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "maximum": 20, + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SearchFilterSummarySpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of edgehost summary items", + "schema": { + "$ref": "#/definitions/v1EdgeHostsSearchSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Edgehosts summary with provided search filter. Supported fields as per schema /v1/dashboard/edgehosts/search/schema", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/edgehosts/search/schema": { + "get": { + "operationId": "v1DashboardEdgehostsSearchSchemaGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of schema items", + "schema": { + "$ref": "#/definitions/v1SearchFilterSchemaSpec" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a schema for the Edgehost search filter", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/pcgs/search": { + "post": { + "operationId": "v1DashboardPcgsSearchSummary", + "parameters": [ + { + "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "maximum": 20, + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SearchFilterSummarySpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster summary items", + "schema": { + "$ref": "#/definitions/v1PcgsSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of PCG summary with provided search filter. Supported fields as per schema /v1/dashboard/pcgs/search/schema", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/pcgs/search/schema": { + "get": { + "operationId": "v1DashboardPcgSearchSchemaGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of schema items", + "schema": { + "$ref": "#/definitions/v1SearchFilterSchemaSpec" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a schema for the PCG search filter", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/projects": { + "post": { + "operationId": "v1ProjectsFilterSummary", + "parameters": [ + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ProjectsFilterSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of project filter summary items", + "schema": { + "$ref": "#/definitions/v1ProjectsSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/projects/metadata": { + "get": { + "operationId": "v1ProjectsMetadata", + "parameters": [ + { + "description": "Name of the project", + "in": "query", + "name": "name", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of project metadata items", + "schema": { + "$ref": "#/definitions/v1ProjectsMetadata" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of projects metadata", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/cost": { + "post": { + "operationId": "v1DashboardSpectroClustersCostSummary", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterCloudCostSummarySpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of resources cloud cost summary items", + "schema": { + "$ref": "#/definitions/v1ResourcesCloudCostSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves spectro clusters cloud cost summary information", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/filters/workspace": { + "get": { + "operationId": "v1SpectroClustersFiltersWorkspace", + "parameters": [ + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster summary items", + "schema": { + "$ref": "#/definitions/v1SpectroClustersSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of running, non rbac configured clusters in a workspace", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/metadata": { + "get": { + "operationId": "v1SpectroClustersMetadataGet", + "parameters": [ + { + "enum": [ + "hostclusters", + "strictHostclusters" + ], + "in": "query", + "name": "quickFilter", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster summary items", + "schema": { + "$ref": "#/definitions/v1SpectroClustersMetadata" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of cluster summary metadata", + "tags": [ + "dashboard" + ] + }, + "post": { + "operationId": "v1SpectroClustersMetadata", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterMetadataSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster summary items", + "schema": { + "$ref": "#/definitions/v1SpectroClustersMetadata" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of cluster summary", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/metadata/search": { + "post": { + "operationId": "v1SpectroClustersMetadataSearch", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SearchFilterSummarySpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster summary meta items", + "schema": { + "$ref": "#/definitions/v1SpectroClustersMetadataSearch" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of cluster metadata with provided search filter spec Supported sort fields - [\"environment\", \"clusterName\", \"clusterState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/metadata/search/schema": { + "get": { + "operationId": "v1SpectroClustersMetadataSearchSchema", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster meta schema items", + "schema": { + "$ref": "#/definitions/v1SearchFilterSchemaSpec" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a schema for the cluster metadata search filter", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/repaveStatus": { + "get": { + "operationId": "v1DashboardSpectroClustersRepaveList", + "parameters": [ + { + "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "maximum": 20, + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "default": "Pending", + "enum": [ + "Pending", + "Approved", + "Reverted" + ], + "in": "query", + "name": "repaveState", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster summary items", + "schema": { + "$ref": "#/definitions/v1SpectroClustersSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of clusters with the desired repave state", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/resources/consumption": { + "post": { + "operationId": "v1SpectroClustersResourcesConsumption", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ResourceConsumptionSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of resource consumption data items", + "schema": { + "$ref": "#/definitions/v1ResourcesConsumption" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves spectro clusters resource consumption", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/resources/cost": { + "post": { + "operationId": "v1SpectroClustersResourcesCostSummary", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ResourceCostSummarySpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of resources cost summary items", + "schema": { + "$ref": "#/definitions/v1ResourcesCostSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves spectro clusters resources cost summary information", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/resources/usage": { + "post": { + "operationId": "v1SpectroClustersResourcesUsageSummary", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ResourceUsageSummarySpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of resources usage summary items", + "schema": { + "$ref": "#/definitions/v1ResourcesUsageSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves spectro clusters resources usage summary information", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/search": { + "post": { + "operationId": "v1SpectroClustersSearchFilterSummary", + "parameters": [ + { + "description": "limit is a maximum number of responses to return for a list call. Maximum value of the limit is 20.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "maximum": 20, + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SearchFilterSummarySpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster summary items", + "schema": { + "$ref": "#/definitions/v1SpectroClustersSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of cluster summary with provided search filter spec Supported sort fields - [\"environment\", \"clusterName\", \"memoryUsage\", \"healthState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/search/export": { + "get": { + "operationId": "v1DashboardClustersSearchSummaryExportGet", + "parameters": [ + { + "in": "query", + "name": "encodedFilter", + "type": "string" + }, + { + "default": "csv", + "enum": [ + "csv" + ], + "in": "query", + "name": "format", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Content-Disposition": { + "type": "string" + }, + "Content-Type": { + "type": "string" + } + }, + "schema": { + "type": "file" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Export and download the list of cluster summary with matching search filter and download as a file(csv)", + "tags": [ + "dashboard" + ] + }, + "post": { + "operationId": "v1DashboardClustersSearchSummaryExport", + "parameters": [ + { + "default": "csv", + "enum": [ + "csv" + ], + "in": "query", + "name": "format", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SearchFilterSummarySpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "download file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Export the list of cluster summary with matching search filter and download as a file(csv) Supported sort fields - [\"environment\", \"clusterName\", \"healthState\", \"creationTimestamp\", \"lastModifiedTimestamp\"]", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/search/input": { + "get": { + "operationId": "v1DashboardSpectroClustersSearchInput", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster search filter input items", + "schema": { + "$ref": "#/definitions/v1ClusterSearchInputSpec" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a supported input values for the cluster search filter", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/search/schema": { + "get": { + "operationId": "v1SpectroClustersSearchSchema", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster filter schema items", + "schema": { + "$ref": "#/definitions/v1SearchFilterSchemaSpec" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a schema for the cluster search filter", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/vms": { + "get": { + "operationId": "V1DashboardVMEnabledClustersList", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of schema items", + "schema": { + "$ref": "#/definitions/v1VMClusters" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Virtual machine enabled clusters", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/{uid}": { + "get": { + "operationId": "v1SpectroClustersSummaryUid", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An spectro cluster summary", + "schema": { + "$ref": "#/definitions/v1SpectroClusterUidSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster summary", + "tags": [ + "dashboard" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/dashboard/spectroclusters/{uid}/cost": { + "get": { + "operationId": "v1SpectroClustersUidCostSummary", + "parameters": [ + { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "format": "date-time", + "in": "query", + "name": "startTime", + "type": "string" + }, + { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "format": "date-time", + "in": "query", + "name": "endTime", + "type": "string" + }, + { + "description": "period in minutes, group the data point by the specified period", + "format": "int32", + "in": "query", + "minimum": 60, + "name": "period", + "type": "integer" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An spectro cluster cost summary", + "schema": { + "$ref": "#/definitions/v1SpectroClusterCostSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves the specified cluster cost summary", + "tags": [ + "dashboard" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/dashboard/spectroclusters/{uid}/overview": { + "get": { + "operationId": "v1SpectroClustersSummaryUidOverview", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An spectro cluster summary overview", + "schema": { + "$ref": "#/definitions/v1SpectroClusterUidSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster summary overview", + "tags": [ + "dashboard" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/dashboard/spectroclusters/{uid}/resources/consumption": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1SpectroClustersUidResourcesConsumption", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ResourceConsumptionSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of resource consumption data items", + "schema": { + "$ref": "#/definitions/v1ResourcesConsumption" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified spectro cluster resource consumption", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/{uid}/workloads": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardSpectroClustersUidWorkloads", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster workloads", + "schema": { + "$ref": "#/definitions/v1ClusterWorkload" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified cluster workloads", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/{uid}/workloads/clusterrolebinding": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardSpectroClustersUidWorkloadsClusterRoleBinding", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster workload clusterrolebindings", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadRoleBindings" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified cluster workload clusterrolebindings", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/{uid}/workloads/cronjob": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardSpectroClustersUidWorkloadsCronJob", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster workload cronjobs", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadCronJobs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified cluster workload cronjobs", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/{uid}/workloads/daemonset": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardSpectroClustersUidWorkloadsDaemonSet", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster workload daemonsets", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadDaemonSets" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified cluster workload daemonsets", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/{uid}/workloads/deployment": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardSpectroClustersUidWorkloadsDeployment", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster workload deployments", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadDeployments" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified cluster workload deployments", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/{uid}/workloads/job": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardSpectroClustersUidWorkloadsJob", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster workload jobs", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadJobs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified cluster workload jobs", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/{uid}/workloads/namespace": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardSpectroClustersUidWorkloadsNamespace", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster workload namespaces", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadNamespaces" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified cluster workload namespaces", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/{uid}/workloads/pod": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardSpectroClustersUidWorkloadsPod", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster workload pods", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadPods" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified cluster workload pods", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/{uid}/workloads/rolebinding": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardSpectroClustersUidWorkloadsRoleBinding", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster workload rolebindings", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadRoleBindings" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified cluster workload rolebindings", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/spectroclusters/{uid}/workloads/statefulset": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardSpectroClustersUidWorkloadsStatefulSet", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster workload statefulsets", + "schema": { + "$ref": "#/definitions/v1ClusterWorkloadStatefulSets" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified cluster workload statefulsets", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/workspaces": { + "get": { + "operationId": "v1DashboardWorkspacesList", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of workspace", + "schema": { + "$ref": "#/definitions/v1DashboardWorkspaces" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of workspace", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/clusterrolebinding": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsClusterRoleBinding", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of clusters workload clusterrolebindings", + "schema": { + "$ref": "#/definitions/v1WorkspaceClustersWorkloadRoleBindings" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified workspace clusters workload clusterrolebindings", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/cronjob": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsCronJob", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of clusters workload cronjobs", + "schema": { + "$ref": "#/definitions/v1WorkspaceClustersWorkloadCronJobs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified workspace clusters workload cronjobs", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/daemonset": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsDaemonSet", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of clusters workload daemonsets", + "schema": { + "$ref": "#/definitions/v1WorkspaceClustersWorkloadDaemonSets" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified workspace clusters workload daemonsets", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/deployment": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsDeployment", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of clusters workload deployments", + "schema": { + "$ref": "#/definitions/v1WorkspaceClustersWorkloadDeployments" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified workspace clusters workload deployments", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/job": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsJob", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of clusters workload jobs", + "schema": { + "$ref": "#/definitions/v1WorkspaceClustersWorkloadJobs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified workspace clusters workload jobs", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/namespace": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsNamespace", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of clusters workload namespaces", + "schema": { + "$ref": "#/definitions/v1WorkspaceClustersWorkloadNamespaces" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified workspace clusters workload namespaces", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/pod": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsPod", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of clusters workload pods", + "schema": { + "$ref": "#/definitions/v1WorkspaceClustersWorkloadPods" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified workspace clusters workload pods", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/rolebinding": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsRoleBinding", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of clusters workload rolebindings", + "schema": { + "$ref": "#/definitions/v1WorkspaceClustersWorkloadRoleBindings" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified workspace clusters workload rolebindings", + "tags": [ + "dashboard" + ] + } + }, + "/v1/dashboard/workspaces/{uid}/spectroclusters/workloads/statefulset": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1DashboardWorkspacesUidSpectroClustersWorkloadsStatefulSet", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceWorkloadsSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of clusters workload statefulsets", + "schema": { + "$ref": "#/definitions/v1WorkspaceClustersWorkloadStatefulSets" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves specified workspace clusters workload statefulsets", + "tags": [ + "dashboard" + ] + } + }, + "/v1/datasinks/cloudwatch": { + "post": { + "description": "Sync data to cloud watch", + "operationId": "V1DataSinksCloudWatchSink", + "parameters": [ + { + "description": "Request payload for cloud watch config", + "in": "body", + "name": "dataSinkCloudWatchConfig", + "required": true, + "schema": { + "$ref": "#/definitions/v1.DataSinkCloudWatchConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "sync data to cloud watch", + "tags": [ + "datasinks" + ] + } + }, + "/v1/edgehosts": { + "post": { + "operationId": "v1EdgeHostDevicesCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeHostDeviceEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create the edge host device", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/metadata": { + "get": { + "operationId": "v1EdgeHostsMetadataQuickFilterGet", + "parameters": [ + { + "enum": [ + "libvirt", + "edge-native", + "vsphere" + ], + "in": "query", + "name": "type", + "type": "string" + }, + { + "enum": [ + "unusedEdgeHosts" + ], + "in": "query", + "name": "quickFilter", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of edge host metadata", + "schema": { + "$ref": "#/definitions/v1EdgeHostsMeta" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of edge hosts metadata matching the filter condition", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/register": { + "post": { + "operationId": "v1EdgeHostDevicesRegister", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeHostDevice" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1EdgeHostDevice" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Registers the edge host device", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/tokens": { + "get": { + "operationId": "v1EdgeTokensList", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of edge tokens", + "schema": { + "$ref": "#/definitions/v1EdgeTokens" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of edge tokens", + "tags": [ + "edgehosts" + ] + }, + "post": { + "operationId": "v1EdgeTokensCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeTokenEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create the edge token", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/tokens/{uid}": { + "delete": { + "operationId": "v1EdgeTokensUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified edge token", + "tags": [ + "edgehosts" + ] + }, + "get": { + "operationId": "v1EdgeTokensUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1EdgeToken" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified edge token", + "tags": [ + "edgehosts" + ] + }, + "parameters": [ + { + "description": "Edge token uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1EdgeTokensUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeTokenUpdate" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified edge token", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/tokens/{uid}/state": { + "parameters": [ + { + "description": "Edge token uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1EdgeTokensUidState", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeTokenActiveState" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Revoke or re-activate the edge token access", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/{uid}": { + "delete": { + "operationId": "v1EdgeHostDevicesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified edge host device", + "tags": [ + "edgehosts" + ] + }, + "get": { + "operationId": "v1EdgeHostDevicesUidGet", + "parameters": [ + { + "default": false, + "description": "resolve pack values if set to true", + "in": "query", + "name": "resolvePackValues", + "type": "boolean" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1EdgeHostDevice" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified edge host device", + "tags": [ + "edgehosts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1EdgeHostDevicesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeHostDevice" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified edge host device", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/{uid}/cluster/associate": { + "delete": { + "operationId": "v1EdgeHostDevicesUidClusterDeassociate", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deassociate the clusters to the edge host", + "tags": [ + "edgehosts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1EdgeHostDevicesUidClusterAssociate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeHostClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Associate the clusters to the edge host", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/{uid}/health": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1EdgeHostDevicesHealthUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeHostHealth" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the edge host health", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/{uid}/hostCheckSum": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1EdgeHostDeviceHostCheckSumUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeHostDeviceHostCheckSum" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the specified edge host device host check sum", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/{uid}/hostPairingKey": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1EdgeHostDeviceHostPairingKeyUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeHostDeviceHostPairingKey" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the specified edge host device host pairing key", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/{uid}/meta": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1EdgeHostDevicesUidMetaUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeHostDeviceMetaUpdateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified edge host device meta", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/{uid}/pack/manifests/{manifestUid}": { + "get": { + "operationId": "v1EdgeHostDevicesUidPackManifestsUidGet", + "parameters": [ + { + "description": "edge host uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "manifest uid which is part of the pack ref", + "in": "path", + "name": "manifestUid", + "required": true, + "type": "string" + }, + { + "default": false, + "description": "resolve pack manifest values if set to true", + "in": "query", + "name": "resolveManifestValues", + "type": "boolean" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Pack manifest content", + "schema": { + "$ref": "#/definitions/v1Manifest" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified edge host's manifest", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/{uid}/packs/status": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1EdgeHostDevicesUidPacksStatusPatch", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterPacksStatusEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Patch update specified edge host's packs status", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/{uid}/profiles": { + "get": { + "operationId": "v1EdgeHostDevicesUidProfilesGet", + "parameters": [ + { + "description": "includes pack meta such as schema, presets", + "in": "query", + "name": "includePackMeta", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1SpectroClusterProfileList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the associated profiles of a specified edge host device", + "tags": [ + "edgehosts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1EdgeHostDevicesUidProfilesUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterProfiles" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Associate cluster profiles to the specified edge host device", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/{uid}/reset": { + "parameters": [ + { + "description": "Edge host uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "V1EdgeHostsUidReset", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Reset the cluster through edge host", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/edgehosts/{uid}/spc/download": { + "get": { + "operationId": "v1EdgeHostDevicesUidSpcDownload", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "download spc archive file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Download the specified edge host device spc", + "tags": [ + "edgehosts" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/edgehosts/{uid}/vsphere/properties": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1EdgeHostDevicesUidVspherePropertiesUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EdgeHostVsphereCloudProperties" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified edge host device vsphere properties", + "tags": [ + "edgehosts" + ] + } + }, + "/v1/events/components": { + "get": { + "description": "Returns a paginated list of component events based on request parameters", + "operationId": "v1EventsComponentsList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of component events items", + "schema": { + "$ref": "#/definitions/v1Events" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns a paginated list of component events based on request parameters", + "tags": [ + "events" + ] + }, + "post": { + "description": "Creates a component event", + "operationId": "v1EventsComponentsCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Event" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a component event", + "tags": [ + "events" + ] + } + }, + "/v1/events/components/bulk": { + "post": { + "description": "Creates the component events in bulk", + "operationId": "v1EventsComponentsCreateBulk", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1BulkEvents" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "schema": { + "$ref": "#/definitions/v1Uids" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates the component events in bulk", + "tags": [ + "events" + ] + } + }, + "/v1/events/components/{objectKind}/{objectUid}": { + "delete": { + "operationId": "v1EventsComponentsObjTypeUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete all the components events for the specified related object", + "tags": [ + "events" + ] + }, + "get": { + "description": "Returns a list of components events for the specified related object", + "operationId": "v1EventsComponentsObjTypeUidList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of component event items", + "schema": { + "$ref": "#/definitions/v1Events" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns a list of components events for the specified related object", + "tags": [ + "events" + ] + }, + "parameters": [ + { + "description": "Describes the related object uid for which events has to be fetched", + "enum": [ + "spectrocluster", + "edgehost" + ], + "in": "path", + "name": "objectKind", + "required": true, + "type": "string" + }, + { + "description": "Describes the related object kind for which events has to be fetched", + "in": "path", + "name": "objectUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/filters": { + "get": { + "operationId": "v1FiltersList", + "parameters": [ + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of filters", + "schema": { + "$ref": "#/definitions/v1FiltersSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns a list of Filters", + "tags": [ + "filters" + ] + } + }, + "/v1/filters/metadata": { + "get": { + "operationId": "v1FiltersMetadata", + "parameters": [ + { + "description": "filterType can be - [tag, meta, resource]", + "in": "query", + "name": "filterType", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of filters", + "schema": { + "$ref": "#/definitions/v1FiltersMetadata" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns a list of Filters metadata", + "tags": [ + "filters" + ] + } + }, + "/v1/filters/tag": { + "post": { + "operationId": "v1TagFiltersCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TagFilter" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a Tag filter", + "tags": [ + "filters" + ] + } + }, + "/v1/filters/tag/{uid}": { + "delete": { + "operationId": "v1TagFilterUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete the specified Filter object", + "tags": [ + "filters" + ] + }, + "get": { + "operationId": "v1TagFilterUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "A Filter object", + "schema": { + "$ref": "#/definitions/v1TagFilterSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Filter object", + "tags": [ + "filters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1TagFilterUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TagFilter" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates a Tag filter", + "tags": [ + "filters" + ] + } + }, + "/v1/metrics/{resourceKind}/values": { + "get": { + "description": "Returns all the metrics for a given resource kind", + "operationId": "v1MetricsList", + "parameters": [ + { + "enum": [ + "pod", + "namespace", + "spectrocluster", + "machine", + "project" + ], + "in": "path", + "name": "resourceKind", + "required": true, + "type": "string" + }, + { + "default": "all", + "in": "query", + "name": "metricKind", + "type": "string" + }, + { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "format": "date-time", + "in": "query", + "name": "startTime", + "type": "string" + }, + { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "format": "date-time", + "in": "query", + "name": "endTime", + "type": "string" + }, + { + "default": 1, + "format": "int32", + "in": "query", + "name": "period", + "type": "integer" + }, + { + "default": false, + "description": "includeMasterMachines in boolean, group the data point by including master nodes if set to true", + "in": "query", + "name": "includeMasterMachines", + "type": "boolean" + }, + { + "default": false, + "description": "if true then api returns only aggregation values, else api returns all data points by default", + "in": "query", + "name": "discrete", + "type": "boolean" + }, + { + "in": "query", + "name": "spectroClusterUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of metric items", + "schema": { + "$ref": "#/definitions/v1MetricTimeSeriesList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves the list of metrics for a specified resource kind", + "tags": [ + "metrics" + ] + } + }, + "/v1/metrics/{resourceKind}/{resourceUid}/values": { + "delete": { + "operationId": "v1MetricsUidDelete", + "parameters": [ + { + "enum": [ + "pod", + "namespace", + "spectrocluster", + "machine", + "project" + ], + "in": "path", + "name": "resourceKind", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "resourceUid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the metrics of the specified resource", + "tags": [ + "metrics" + ] + }, + "get": { + "operationId": "v1MetricsUidList", + "parameters": [ + { + "enum": [ + "pod", + "namespace", + "spectrocluster", + "machine", + "project" + ], + "in": "path", + "name": "resourceKind", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "resourceUid", + "required": true, + "type": "string" + }, + { + "default": "all", + "description": "multiple metric kinds can be provided with comma separated", + "in": "query", + "name": "metricKind", + "type": "string" + }, + { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "format": "date-time", + "in": "query", + "name": "startTime", + "type": "string" + }, + { + "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", + "format": "date-time", + "in": "query", + "name": "endTime", + "type": "string" + }, + { + "default": 1, + "description": "period in minutes, group the data point by the specified period", + "format": "int32", + "in": "query", + "name": "period", + "type": "integer" + }, + { + "default": false, + "description": "includeMasterMachines in boolean, group the data point by including master nodes if set to true", + "in": "query", + "name": "includeMasterMachines", + "type": "boolean" + }, + { + "default": false, + "description": "if true then api returns only aggregation values, else api returns all data points by default", + "in": "query", + "name": "discrete", + "type": "boolean" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of metric items", + "schema": { + "$ref": "#/definitions/v1MetricTimeSeries" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the metrics for a specified resource uid", + "tags": [ + "metrics" + ] + } + }, + "/v1/notifications/": { + "get": { + "description": "Returns a paginated list of notifications based on request parameters", + "operationId": "v1NotificationsList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of notification items", + "schema": { + "$ref": "#/definitions/v1Notifications" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns a paginated list of notifications based on request parameters", + "tags": [ + "notifications" + ] + } + }, + "/v1/notifications/events": { + "post": { + "description": "Creates a notification event", + "operationId": "v1NotificationsEventCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1NotificationEvent" + } + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a notification event", + "tags": [ + "notifications" + ] + } + }, + "/v1/notifications/{objectKind}/{objectUid}": { + "get": { + "description": "Returns a list of notifications for the specified related object", + "operationId": "v1NotificationsObjTypeUidList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of component event items", + "schema": { + "$ref": "#/definitions/v1Notifications" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns a list of notifications for the specified related object", + "tags": [ + "notifications" + ] + }, + "parameters": [ + { + "description": "Describes the related object kind for which notifications have to be fetched", + "enum": [ + "spectrocluster", + "clusterprofile", + "appdeployment" + ], + "in": "path", + "name": "objectKind", + "required": true, + "type": "string" + }, + { + "description": "Describes the related object uid for which notifications have to be fetched", + "in": "path", + "name": "objectUid", + "required": true, + "type": "string" + }, + { + "description": "Describes a way to fetch \"done\" notifications", + "in": "query", + "name": "isDone", + "type": "string" + } + ] + }, + "/v1/notifications/{uid}/ack": { + "parameters": [ + { + "description": "Describes acknowledging notification uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "description": "Updates the specified notification for the acknowledgment", + "operationId": "v1NotificationsUidAck", + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified notification for the acknowledgment", + "tags": [ + "notifications" + ] + } + }, + "/v1/notifications/{uid}/done": { + "parameters": [ + { + "description": "Describes notification uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "description": "Updates the specified notification action as done", + "operationId": "v1NotificationsUidDone", + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified notification action as done", + "tags": [ + "notifications" + ] + } + }, + "/v1/overlords": { + "get": { + "operationId": "v1OverlordsList", + "parameters": [ + { + "in": "query", + "name": "name", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1Overlords" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of overlords owned by the tenant", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/maas/manifest": { + "get": { + "operationId": "V1OverlordsMaasManifest", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OverlordManifest" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the manifests required for the private gateway installation", + "tags": [ + "overlords" + ] + }, + "parameters": [ + { + "in": "query", + "name": "pairingCode", + "required": true, + "type": "string" + } + ] + }, + "/v1/overlords/maas/{uid}/account": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1OverlordsUidMaasAccountCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OverlordMaasAccountCreate" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "create the maas cloudaccount for the private gateway", + "tags": [ + "overlords" + ] + }, + "put": { + "operationId": "v1OverlordsUidMaasAccountUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OverlordMaasAccountEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "update the maas cloudaccount for the private gateway", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/maas/{uid}/account/validate": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1OverlordsUidMaasAccountValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "properties": { + "account": { + "$ref": "#/definitions/v1MaasCloudAccount" + } + } + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "validate the maas cloudaccount for the private gateway", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/maas/{uid}/cloudconfig": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "V1OverlordsUidMaasCloudConfigCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OverlordMaasCloudConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "create the maas cloud config for the private gateway", + "tags": [ + "overlords" + ] + }, + "put": { + "operationId": "V1OverlordsUidMaasCloudConfigUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OverlordMaasCloudConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "update the maas cloud config for the private gateway", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/maas/{uid}/clusterprofile": { + "get": { + "operationId": "v1OverlordsUidMaasClusterProfile", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterProfile" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified maas private gateway cluster profile", + "tags": [ + "overlords" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/overlords/migrate": { + "post": { + "operationId": "V1OverlordsMigrate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OverlordMigrateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "migrate all the clusters from source overlord to target overlord", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/openstack/manifest": { + "get": { + "operationId": "v1OverlordsOpenStackManifest", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OverlordManifest" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the manifests required for the private gateway installation", + "tags": [ + "overlords" + ] + }, + "parameters": [ + { + "in": "query", + "name": "pairingCode", + "required": true, + "type": "string" + } + ] + }, + "/v1/overlords/openstack/{uid}/account": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1OverlordsUidOpenStackAccountCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OverlordOpenStackAccountCreate" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "create the OpenStack cloudaccount for the private gateway", + "tags": [ + "overlords" + ] + }, + "put": { + "operationId": "v1OverlordsUidOpenStackAccountUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OverlordOpenStackAccountEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "update the OpenStack cloudaccount for the private gateway", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/openstack/{uid}/account/validate": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1OverlordsUidOpenStackAccountValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "properties": { + "account": { + "$ref": "#/definitions/v1OpenStackCloudAccount" + } + } + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "validate the OpenStack cloudaccount for the private gateway", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/openstack/{uid}/cloudconfig": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1OverlordsUidOpenStackCloudConfigCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OverlordOpenStackCloudConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "create the OpenStack cloud config for the private gateway", + "tags": [ + "overlords" + ] + }, + "put": { + "operationId": "v1OverlordsUidOpenStackCloudConfigUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OverlordOpenStackCloudConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "update the OpenStack cloud config for the private gateway", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/openstack/{uid}/clusterprofile": { + "get": { + "operationId": "v1OverlordsUidOpenStackClusterProfile", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterProfile" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified OpenStack private gateway cluster profile", + "tags": [ + "overlords" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/overlords/pairing/code": { + "get": { + "operationId": "v1OverlordsPairingCode", + "parameters": [ + { + "enum": [ + "vsphere", + "openstack", + "maas" + ], + "in": "query", + "name": "cloudType", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1PairingCode" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the pairing code for the private gateway", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/vsphere/manifest": { + "get": { + "operationId": "v1OverlordsVsphereManifest", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OverlordManifest" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the manifests required for the private gateway installation", + "tags": [ + "overlords" + ] + }, + "parameters": [ + { + "in": "query", + "name": "pairingCode", + "required": true, + "type": "string" + } + ] + }, + "/v1/overlords/vsphere/ova": { + "get": { + "operationId": "v1OverlordsVsphereOvaGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OverloadVsphereOva" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns overlord's ova information", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/vsphere/{uid}/account": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1OverlordsUidVsphereAccountCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OverlordVsphereAccountCreate" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "create the vSphere cloudaccount for the private gateway", + "tags": [ + "overlords" + ] + }, + "put": { + "operationId": "v1OverlordsUidVsphereAccountUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OverlordVsphereAccountEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "update the vSphere cloudaccount for the private gateway", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/vsphere/{uid}/account/validate": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1OverlordsUidVsphereAccountValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "properties": { + "account": { + "$ref": "#/definitions/v1VsphereCloudAccount" + } + } + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "validate the vSphere cloudaccount for the private gateway", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/vsphere/{uid}/cloudconfig": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1OverlordsUidVsphereCloudConfigCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OverlordVsphereCloudConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "create the vSphere cloud config for the private gateway", + "tags": [ + "overlords" + ] + }, + "put": { + "operationId": "v1OverlordsUidVsphereCloudConfigUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OverlordVsphereCloudConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "update the vSphere cloud config for the private gateway", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/vsphere/{uid}/clusterprofile": { + "get": { + "operationId": "v1OverlordsUidVsphereClusterProfile", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterProfile" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified vsphere private gateway cluster profile", + "tags": [ + "overlords" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/overlords/vsphere/{uid}/pools": { + "get": { + "operationId": "v1OverlordsUidPoolsList", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1IpPools" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of IP Pools for the specified private gateway", + "tags": [ + "overlords" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1OverlordsUidPoolCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1IpPoolInputEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an IP pool defintion for the sepcified private gateway", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/vsphere/{uid}/pools/{poolUid}": { + "delete": { + "operationId": "v1OverlordsUidPoolDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the private gateways's specified IP Pool data", + "tags": [ + "overlords" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "poolUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1OverlordsUidPoolUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1IpPoolInputEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the private gateways's specified IP Pool data", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/vsphere/{uid}/properties/computecluster/resources": { + "get": { + "operationId": "v1OverlordsUidVsphereComputeclusterRes", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1VsphereComputeClusterResources" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves the vSphere computecluster resources for the specified private gateway's account", + "tags": [ + "overlords" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "datacenter", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "computecluster", + "required": true, + "type": "string" + } + ] + }, + "/v1/overlords/vsphere/{uid}/properties/datacenters": { + "get": { + "operationId": "v1OverlordsUidVsphereDatacenters", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1VsphereDatacenters" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves the vSphere datacenters & datacluster for the specified private gateway's account", + "tags": [ + "overlords" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/overlords/{uid}": { + "delete": { + "operationId": "v1OverlordsUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1DeletedMsg" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "delete the private gateway", + "tags": [ + "overlords" + ] + }, + "get": { + "operationId": "v1OverlordsUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1Overlord" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified private gateway's for the given uid", + "tags": [ + "overlords" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/overlords/{uid}/metadata": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1OverlordsUidMetadataUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ObjectMetaInputEntitySchema" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "update the private gateway's metadata", + "tags": [ + "overlords" + ] + } + }, + "/v1/overlords/{uid}/reset": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1OverlordsUidReset", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1UpdatedMsg" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "reset the private gateway by disaaociating the private gateway's resources", + "tags": [ + "overlords" + ] + } + }, + "/v1/packs": { + "delete": { + "operationId": "v1PacksSummaryDelete", + "parameters": [ + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1DeleteMeta" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the packs", + "tags": [ + "packs" + ] + }, + "get": { + "operationId": "v1PacksSummaryList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of pack summary items", + "schema": { + "$ref": "#/definitions/v1PackSummaries" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of packs", + "tags": [ + "packs" + ] + } + }, + "/v1/packs/search": { + "post": { + "operationId": "v1PacksSearch", + "parameters": [ + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1PacksFilterSpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of pack summary items", + "schema": { + "$ref": "#/definitions/v1PackMetadataList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of packs based on filter", + "tags": [ + "packs" + ] + } + }, + "/v1/packs/{packName}/registries/{registryUid}": { + "get": { + "operationId": "v1PacksNameRegistryUidList", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1PackTagEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of packs", + "tags": [ + "packs" + ] + }, + "parameters": [ + { + "description": "Pack registry uid", + "in": "path", + "name": "registryUid", + "required": true, + "type": "string" + }, + { + "description": "Pack name", + "in": "path", + "name": "packName", + "required": true, + "type": "string" + }, + { + "default": "all", + "description": "Pack cloud type", + "in": "query", + "name": "cloudType", + "type": "string" + }, + { + "description": "Pack layer", + "in": "query", + "name": "layer", + "type": "string" + }, + { + "description": "Comma seperated pack states. Example values are \"deprecated\" \"deprecated,disabled\". If states is not specified or empty then by default API will return all packs except \"disabled\" packs", + "in": "query", + "name": "states", + "type": "string" + } + ] + }, + "/v1/packs/{packUid}/logo": { + "get": { + "operationId": "v1PacksPackUidLogo", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "image/png", + "image/gif", + "image/jpeg" + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Cache-Control": { + "description": "Cache control directive for the response", + "type": "string" + }, + "Expires": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the logo for a specified pack", + "tags": [ + "packs" + ] + }, + "parameters": [ + { + "description": "Pack uid", + "in": "path", + "name": "packUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/packs/{uid}": { + "get": { + "operationId": "v1PacksUid", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "A pack for the specified uid", + "schema": { + "$ref": "#/definitions/v1PackTagEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified pack", + "tags": [ + "packs" + ] + }, + "parameters": [ + { + "description": "Pack uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/packs/{uid}/readme": { + "get": { + "operationId": "v1PacksUidReadme", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Readme describes the documentation of the specified pack", + "schema": { + "$ref": "#/definitions/v1PackReadme" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the readme of a specified pack", + "tags": [ + "packs" + ] + }, + "parameters": [ + { + "description": "Pack uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/pcg/selfHosted": { + "post": { + "operationId": "v1PcgSelfHosted", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1PcgSelfHostedParams" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1PcgServiceKubectlCommands" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the private gateway manifest link", + "tags": [ + "pcg" + ] + } + }, + "/v1/pcg/{uid}/register": { + "post": { + "operationId": "v1PcgUidRegister", + "parameters": [ + { + "in": "body", + "name": "pairingCode", + "schema": { + "$ref": "#/definitions/v1PairingCode" + } + }, + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Registers the pcg", + "tags": [ + "pcg" + ] + } + }, + "/v1/pcg/{uid}/services/ally/manifest": { + "get": { + "operationId": "v1PcgUidAllyManifestGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "download file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the pcg ally manifest", + "tags": [ + "pcg" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/pcg/{uid}/services/jet/manifest": { + "get": { + "operationId": "v1PcgUidJetManifestGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "download file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the pcg jet manifest", + "tags": [ + "pcg" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/permissions": { + "get": { + "operationId": "v1PermissionsList", + "parameters": [ + { + "enum": [ + "system", + "tenant", + "project", + "resource" + ], + "in": "query", + "name": "scope", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of permissions", + "schema": { + "$ref": "#/definitions/v1Permissions" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of permissions", + "tags": [ + "permissions" + ] + } + }, + "/v1/projects": { + "get": { + "description": "Deprecated: Use POST /v1/dashboard/projects", + "operationId": "v1ProjectsList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of projects", + "schema": { + "$ref": "#/definitions/v1Projects" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of projects", + "tags": [ + "projects" + ] + }, + "post": { + "operationId": "v1ProjectsCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ProjectEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a project", + "tags": [ + "projects" + ] + } + }, + "/v1/projects/alerts": { + "get": { + "operationId": "v1ProjectsAlerts", + "responses": { + "200": { + "description": "An array of alert components", + "schema": { + "$ref": "#/definitions/v1ProjectAlertComponents" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of supported alerts for a project", + "tags": [ + "projects" + ] + } + }, + "/v1/projects/{uid}": { + "delete": { + "operationId": "v1ProjectsUidDelete", + "parameters": [ + { + "in": "query", + "name": "cleanupProjectResources", + "type": "boolean" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ProjectCleanup" + } + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified project", + "tags": [ + "projects" + ] + }, + "get": { + "operationId": "v1ProjectsUidGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Project" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified project", + "tags": [ + "projects" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ProjectsUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ProjectEntity" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified project", + "tags": [ + "projects" + ] + } + }, + "/v1/projects/{uid}/alerts/{component}": { + "delete": { + "operationId": "v1ProjectsUidAlertDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified alert to the specified project", + "tags": [ + "projects" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "component", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1ProjectsUidAlertCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Channel" + } + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create the specified alert to the specified project", + "tags": [ + "projects" + ] + }, + "put": { + "operationId": "v1ProjectsUidAlertUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AlertEntity" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Upsert the specified alert to the specified project", + "tags": [ + "projects" + ] + } + }, + "/v1/projects/{uid}/alerts/{component}/{alertUid}": { + "delete": { + "operationId": "v1ProjectsUidAlertsUidDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified alert of the specified project", + "tags": [ + "projects" + ] + }, + "get": { + "operationId": "v1ProjectsUidAlertsUidGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Channel" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the specified alert of the specified project", + "tags": [ + "projects" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "component", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "alertUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ProjectsUidAlertsUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Channel" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the specified alert of the specified project", + "tags": [ + "projects" + ] + } + }, + "/v1/projects/{uid}/macros": { + "delete": { + "operationId": "v1ProjectsUidMacrosDeleteByMacroName", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete the macros for the specified project by macro name", + "tags": [ + "projects" + ] + }, + "get": { + "operationId": "v1ProjectsUidMacrosList", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "List the macros of the specified project", + "tags": [ + "projects" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1ProjectsUidMacrosUpdateByMacroName", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the macros for the specified project by macro name", + "tags": [ + "projects" + ] + }, + "post": { + "operationId": "v1ProjectsUidMacrosCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create or add new macros for the specified project", + "tags": [ + "projects" + ] + }, + "put": { + "operationId": "v1ProjectsUidMacrosUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the macros of the specified project", + "tags": [ + "projects" + ] + } + }, + "/v1/projects/{uid}/meta": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ProjectsUidMetaUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ObjectMeta" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the metadata of the specified project", + "tags": [ + "projects" + ] + } + }, + "/v1/projects/{uid}/preferences/clusterSettings": { + "get": { + "operationId": "v1ProjectClusterSettingsGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1ProjectClusterSettings" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get project cluster settings", + "tags": [ + "projects" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/projects/{uid}/preferences/clusterSettings/nodesAutoRemediationSetting": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ProjectClustersNodesAutoRemediationSettingUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1NodesAutoRemediationSettings" + } + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update project clusters nodes auto remediation setting", + "tags": [ + "projects" + ] + } + }, + "/v1/projects/{uid}/teams": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ProjectsUidTeamsUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ProjectTeamsEntity" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the teams association to the specified project", + "tags": [ + "projects" + ] + } + }, + "/v1/projects/{uid}/users": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ProjectsUidUsersUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ProjectUsersEntity" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the users association to the specified project", + "tags": [ + "projects" + ] + } + }, + "/v1/projects/{uid}/validate": { + "delete": { + "operationId": "v1ProjectsUidValidate", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1ProjectActiveResources" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validate and returns active resource of project before delete", + "tags": [ + "projects" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/registries/helm": { + "get": { + "operationId": "v1RegistriesHelmList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of registry items", + "schema": { + "$ref": "#/definitions/v1HelmRegistries" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Helm registries", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "default": "all", + "enum": [ + "system", + "tenant", + "all" + ], + "in": "query", + "name": "scope", + "type": "string" + } + ], + "post": { + "operationId": "v1RegistriesHelmCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1HelmRegistryEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a helm registry", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/helm/summary": { + "get": { + "operationId": "v1RegistriesHelmSummaryList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of registry items", + "schema": { + "$ref": "#/definitions/v1HelmRegistriesSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of helm registries as summary", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "default": "all", + "enum": [ + "system", + "tenant", + "all" + ], + "in": "query", + "name": "scope", + "type": "string" + } + ] + }, + "/v1/registries/helm/validate": { + "post": { + "description": "Returns no contents if helm registry is valid else error.", + "operationId": "V1RegistriesHelmValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1HelmRegistrySpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Check if helm registry is valid", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/helm/{uid}": { + "delete": { + "operationId": "v1RegistriesHelmUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified helm registry", + "tags": [ + "registries" + ] + }, + "get": { + "operationId": "v1RegistriesHelmUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1HelmRegistry" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Helm registry", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1RegistriesHelmUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1HelmRegistry" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified helm registry", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/helm/{uid}/sync": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "default": false, + "in": "query", + "name": "forceSync", + "type": "boolean" + } + ], + "post": { + "description": "Sync all the helm charts from the registry", + "operationId": "v1RegistriesHelmUidSync", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "202": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Sync Helm registry", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/helm/{uid}/sync/status": { + "get": { + "description": "Get the sync status for the specified helm registry", + "operationId": "v1RegistriesHelmUidSyncStatus", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Helm registry sync status", + "schema": { + "$ref": "#/definitions/v1RegistrySyncStatus" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get helm registry sync status", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/registries/metadata": { + "get": { + "operationId": "v1RegistriesMetadata", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of registry metadata items", + "schema": { + "$ref": "#/definitions/v1RegistriesMetadata" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of registries metadata", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "default": "all", + "enum": [ + "system", + "tenant", + "all" + ], + "in": "query", + "name": "scope", + "type": "string" + } + ] + }, + "/v1/registries/oci/basic": { + "post": { + "operationId": "v1BasicOciRegistriesCreate", + "parameters": [ + { + "default": false, + "in": "query", + "name": "skipPackSync", + "type": "boolean" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1BasicOciRegistry" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a basic oci registry", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/oci/basic/validate": { + "post": { + "description": "Returns no contents if oci registry is valid else error.", + "operationId": "v1BasicOciRegistriesValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1BasicOciRegistrySpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Check if oci registry is valid", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/oci/ecr": { + "post": { + "operationId": "v1EcrRegistriesCreate", + "parameters": [ + { + "default": false, + "in": "query", + "name": "skipPackSync", + "type": "boolean" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EcrRegistry" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a ecr registry", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/oci/ecr/validate": { + "post": { + "description": "Returns no contents if ecr registry is valid else error.", + "operationId": "v1EcrRegistriesValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1EcrRegistrySpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Check if ecr registry is valid", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/oci/image": { + "get": { + "operationId": "v1OciImageRegistryGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1OciImageRegistry" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a image registry", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/oci/summary": { + "get": { + "operationId": "v1OciRegistriesSummary", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of oci registry items", + "schema": { + "$ref": "#/definitions/v1OciRegistries" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a oci registries summary", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/oci/{uid}": { + "get": { + "operationId": "v1OciRegistriesGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1OciRegistryEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the information of specified oci registry", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "clusterUid", + "type": "string" + } + ] + }, + "/v1/registries/oci/{uid}/basic": { + "delete": { + "operationId": "v1BasicOciRegistriesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified basic oci registry", + "tags": [ + "registries" + ] + }, + "get": { + "operationId": "v1BasicOciRegistriesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1BasicOciRegistry" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the basic oci registry", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1BasicOciRegistriesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1BasicOciRegistry" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified basic oci registry", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/oci/{uid}/basic/sync": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "default": false, + "in": "query", + "name": "forceSync", + "type": "boolean" + } + ], + "post": { + "description": "Sync all the content from the oci registry", + "operationId": "v1BasicOciRegistriesUidSync", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "202": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Sync oci registry", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/oci/{uid}/basic/sync/status": { + "get": { + "description": "Get sync status for the oci specified registry", + "operationId": "v1BasicOciRegistriesUidSyncStatus", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Oci registry sync status", + "schema": { + "$ref": "#/definitions/v1RegistrySyncStatus" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get oci registry sync status", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/registries/oci/{uid}/ecr": { + "delete": { + "operationId": "v1EcrRegistriesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified ecr registry", + "tags": [ + "registries" + ] + }, + "get": { + "operationId": "v1EcrRegistriesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1EcrRegistry" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified ecr registry", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1EcrRegistriesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1EcrRegistry" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified ecr registry", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/oci/{uid}/ecr/sync": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "default": false, + "in": "query", + "name": "forceSync", + "type": "boolean" + } + ], + "post": { + "description": "Sync all the content from the ecr registry", + "operationId": "v1EcrRegistriesUidSync", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "202": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Sync ecr registry", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/oci/{uid}/ecr/sync/status": { + "get": { + "description": "Get sync status for the ecr specified registry", + "operationId": "v1EcrRegistriesUidSyncStatus", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Ecr registry sync status", + "schema": { + "$ref": "#/definitions/v1RegistrySyncStatus" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get ecr registry sync status", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/registries/pack": { + "get": { + "operationId": "v1RegistriesPackList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of registry items", + "schema": { + "$ref": "#/definitions/v1PackRegistries" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of Pack registries", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "default": "all", + "enum": [ + "system", + "tenant", + "all" + ], + "in": "query", + "name": "scope", + "type": "string" + } + ], + "post": { + "operationId": "v1RegistriesPackCreate", + "parameters": [ + { + "default": false, + "in": "query", + "name": "skipPackSync", + "type": "boolean" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1PackRegistry" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a pack registry", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/pack/summary": { + "get": { + "operationId": "v1RegistriesPackSummaryList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of registry items", + "schema": { + "$ref": "#/definitions/v1PackRegistriesSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of pack registries as summary", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "default": "all", + "enum": [ + "system", + "tenant", + "all" + ], + "in": "query", + "name": "scope", + "type": "string" + } + ] + }, + "/v1/registries/pack/validate": { + "post": { + "description": "Returns no contents if pack registry is valid else error.", + "operationId": "V1RegistriesPackValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1PackRegistrySpec" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Check if pack registry is valid", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/pack/{uid}": { + "delete": { + "operationId": "v1RegistriesPackUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified pack registry", + "tags": [ + "registries" + ] + }, + "get": { + "operationId": "v1RegistriesPackUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1PackRegistry" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Pack registry", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1RegistriesPackUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1PackRegistry" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified pack registry", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/pack/{uid}/sync": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "default": false, + "in": "query", + "name": "forceSync", + "type": "boolean" + } + ], + "post": { + "description": "Sync all the packs from the registry", + "operationId": "v1RegistriesPackUidSync", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "202": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Sync Pack registry", + "tags": [ + "registries" + ] + } + }, + "/v1/registries/pack/{uid}/sync/status": { + "get": { + "description": "Get sync status for the pack specified registry", + "operationId": "v1RegistriesPackUidSyncStatus", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Pack registry sync status", + "schema": { + "$ref": "#/definitions/v1RegistrySyncStatus" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get pack registry sync status", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/registries/{registryName}/config": { + "get": { + "operationId": "v1RegistriesNameConfigGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1RegistryConfigEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified system scope registry configuration", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "in": "path", + "name": "registryName", + "required": true, + "type": "string" + } + ] + }, + "/v1/registries/{uid}": { + "delete": { + "operationId": "v1RegistriesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified registry", + "tags": [ + "registries" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/roles": { + "get": { + "operationId": "v1RolesList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Roles" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of roles", + "tags": [ + "roles" + ] + }, + "post": { + "operationId": "v1RolesCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Role" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a role with specified permissions", + "tags": [ + "roles" + ] + } + }, + "/v1/roles/{uid}": { + "delete": { + "operationId": "v1RolesUidDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified role", + "tags": [ + "roles" + ] + }, + "get": { + "operationId": "v1RolesUidGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Role" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified role", + "tags": [ + "roles" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1RolesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Role" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified role", + "tags": [ + "roles" + ] + } + }, + "/v1/roles/{uid}/clone": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1RolesClone", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1RoleClone" + } + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Clone the role", + "tags": [ + "roles" + ] + } + }, + "/v1/services/{serviceName}/version": { + "get": { + "operationId": "v1ServiceVersionGet", + "parameters": [ + { + "description": "service name", + "enum": [ + "ally", + "jet", + "palette", + "ambit", + "ally-lite", + "palette-lite", + "crony", + "tick", + "edge", + "lodge", + "level", + "edgeconfig", + "firth", + "stylus" + ], + "in": "path", + "name": "serviceName", + "required": true, + "type": "string" + }, + { + "description": "spectro cluster uid", + "in": "query", + "name": "clusterUid", + "type": "string" + }, + { + "description": "edge host uid", + "in": "query", + "name": "edgeHostUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ServiceVersion" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns a latest version for a given service name", + "tags": [ + "services" + ] + } + }, + "/v1/services/{serviceName}/versions/{version}/manifest": { + "get": { + "operationId": "v1ServiceManifestGet", + "parameters": [ + { + "description": "service name", + "enum": [ + "ally", + "jet", + "palette", + "ambit", + "ally-lite", + "palette-lite", + "crony", + "tick", + "edge", + "lodge", + "level", + "edgeconfig", + "firth", + "stylus" + ], + "in": "path", + "name": "serviceName", + "required": true, + "type": "string" + }, + { + "description": "service version", + "in": "path", + "name": "version", + "required": true, + "type": "string" + }, + { + "description": "action type", + "enum": [ + "apply", + "delete", + "resources" + ], + "in": "query", + "name": "action", + "required": true, + "type": "string" + }, + { + "description": "resource file name", + "in": "query", + "name": "resourceFilename", + "type": "string" + }, + { + "description": "spectro cluster uid", + "in": "query", + "name": "clusterUid", + "type": "string" + }, + { + "description": "edge host uid", + "in": "query", + "name": "edgeHostUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ServiceManifest" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns a service manifest for a given service name and version", + "tags": [ + "services" + ] + } + }, + "/v1/spectroclusters/agents/{messageKey}/notify": { + "post": { + "operationId": "V1SpectroClustersAgentsNotify", + "parameters": [ + { + "in": "path", + "name": "messageKey", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClustersAgentsNotifyEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/aks": { + "post": { + "operationId": "v1SpectroClustersAksCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroAzureClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an AKS cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/aks/rate": { + "post": { + "operationId": "v1SpectroClustersAksRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroAzureClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Aks Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get AKS cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/aks/validate": { + "post": { + "operationId": "v1SpectroClustersAksValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroAzureClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Aks Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates AKS cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/aws": { + "post": { + "operationId": "v1SpectroClustersAwsCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroAwsClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an AWS cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/aws/import": { + "post": { + "operationId": "v1SpectroClustersAwsImport", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroAwsClusterImportEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Imports an AWS cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/aws/rate": { + "post": { + "operationId": "v1SpectroClustersAwsRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroAwsClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Aws Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get AWS cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/aws/validate": { + "post": { + "operationId": "v1SpectroClustersAwsValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroAwsClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Aws Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates AWS cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/azure": { + "post": { + "operationId": "v1SpectroClustersAzureCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroAzureClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an Azure cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/azure/import": { + "post": { + "operationId": "v1SpectroClustersAzureImport", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroAzureClusterImportEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Imports an Azure cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/azure/rate": { + "post": { + "operationId": "v1SpectroClustersAzureRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroAzureClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Azure Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get Azure cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/azure/validate": { + "post": { + "operationId": "v1SpectroClustersAzureValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroAzureClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Azure Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates Azure cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/cloudTypes/{cloudType}": { + "parameters": [ + { + "description": "Cluster's cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1SpectroClustersCustomCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroCustomClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a Custom cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/cloudTypes/{cloudType}/validate": { + "parameters": [ + { + "description": "Cluster's cloud type", + "in": "path", + "name": "cloudType", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1SpectroClustersCustomValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroCustomClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Custom Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates Custom cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/config/edgeInstaller": { + "get": { + "operationId": "v1SpectroClustersConfigEdgeInstaller", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1ClusterEdgeInstallerConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Cluster configuration for the edge installer", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/coxedge": { + "post": { + "operationId": "v1SpectroClustersCoxEdgeCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroCoxEdgeClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a CoxEdge cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/coxedge/rate": { + "post": { + "operationId": "v1SpectroClustersCoxEdgeRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroCoxEdgeClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Azure Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get Cox Edge cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/coxedge/validate": { + "post": { + "operationId": "v1SpectroClustersCoxEdgeValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroCoxEdgeClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Azure Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates Cox Edge cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/edge": { + "post": { + "operationId": "v1SpectroClustersEdgeCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroEdgeClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a Edge cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/edge-native": { + "post": { + "operationId": "v1SpectroClustersEdgeNativeCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroEdgeNativeClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an EdgeNative cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/edge-native/import": { + "post": { + "operationId": "v1SpectroClustersEdgeNativeImport", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroEdgeNativeClusterImportEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Imports an EdgeNative cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/edge-native/rate": { + "post": { + "operationId": "v1SpectroClustersEdgeNativeRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroEdgeNativeClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "EdgeNative Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get edge-native cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/edge-native/validate": { + "post": { + "operationId": "v1SpectroClustersEdgeNativeValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroEdgeNativeClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "EdgeNative Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates edge-native cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/edge/import": { + "post": { + "operationId": "v1SpectroClustersEdgeImport", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroEdgeClusterImportEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Imports an Edge cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/edge/rate": { + "post": { + "operationId": "v1SpectroClustersEdgeRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroEdgeClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Edge Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get edge cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/edge/validate": { + "post": { + "operationId": "v1SpectroClustersEdgeValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroEdgeClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "edge Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates edge cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/eks": { + "post": { + "operationId": "v1SpectroClustersEksCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroEksClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an EKS cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/eks/rate": { + "post": { + "operationId": "v1SpectroClustersEksRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroEksClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Eks Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get EKS cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/eks/validate": { + "post": { + "operationId": "v1SpectroClustersEksValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroEksClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Eks Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates EKS cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/features/backup/locations/{uid}": { + "get": { + "operationId": "V1ClusterFeatureBackupLocationUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterRefs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the cluster object references based on locationUid", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "V1ClusterFeatureBackupLocationUidChange", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterBackupLocationType" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Change cluster backup location", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/features/logFetcher/{uid}/download": { + "get": { + "operationId": "v1ClusterFeatureLogFetcherLogDownload", + "parameters": [ + { + "in": "query", + "name": "fileName", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Content-Disposition": { + "type": "string" + }, + "Content-Type": { + "type": "string" + } + }, + "schema": { + "type": "file" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Download log fetcher logs for cluster by log fetcher uid", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid for which log is requested", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/features/logFetcher/{uid}/log": { + "parameters": [ + { + "description": "Cluster uid for which log is requested", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "consumes": [ + "multipart/form-data" + ], + "operationId": "v1ClusterFeatureLogFetcherLogUpdate", + "parameters": [ + { + "description": "Log file by agent", + "in": "formData", + "name": "fileName", + "type": "file" + }, + { + "description": "Unique request Id", + "in": "query", + "name": "requestId", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update log fetcher logs by log fetcher uid", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/gcp": { + "post": { + "operationId": "v1SpectroClustersGcpCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroGcpClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a GCP cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/gcp/import": { + "post": { + "operationId": "v1SpectroClustersGcpImport", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroGcpClusterImportEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Imports a GCP cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/gcp/rate": { + "post": { + "operationId": "v1SpectroClustersGcpRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroGcpClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Gcp Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get GCP cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/gcp/validate": { + "post": { + "operationId": "v1SpectroClustersGcpValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroGcpClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Gcp Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates GCP cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/generic/import": { + "post": { + "description": "The machines information will be captured, whereas the cloud specific configuration info will not be retrieved", + "operationId": "v1SpectroClustersGenericImport", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroGenericClusterImportEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Imports a cluster of any cloud type in generic way", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/generic/rate": { + "post": { + "operationId": "v1SpectroClustersGenericRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroGenericClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Genric Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get generic cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/gke": { + "post": { + "operationId": "v1SpectroClustersGkeCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroGcpClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates an GKE cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/gke/rate": { + "post": { + "operationId": "v1SpectroClustersGkeRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroGcpClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Gke Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get GKE cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/gke/validate": { + "post": { + "operationId": "v1SpectroClustersGkeValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroGcpClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Gke Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates GKE cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/libvirt": { + "post": { + "operationId": "v1SpectroClustersLibvirtCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroLibvirtClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a Libvirt cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/libvirt/import": { + "post": { + "operationId": "v1SpectroClustersLibvirtImport", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroLibvirtClusterImportEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Imports a libvirt cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/libvirt/rate": { + "post": { + "operationId": "v1SpectroClustersLibvirtRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroLibvirtClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Libvirt Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get libvirt cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/libvirt/validate": { + "post": { + "operationId": "v1SpectroClustersLibvirtValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroLibvirtClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Libvirt Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates libvirt cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/maas": { + "post": { + "operationId": "v1SpectroClustersMaasCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroMaasClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a MAAS cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/maas/import": { + "post": { + "operationId": "v1SpectroClustersMaasImport", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroMaasClusterImportEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Imports a Maas cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/maas/rate": { + "post": { + "operationId": "v1SpectroClustersMaasRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroMaasClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Maas Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get maas cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/maas/validate": { + "post": { + "operationId": "v1SpectroClustersMaasValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroMaasClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Maas Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates MAAS cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/openstack": { + "post": { + "operationId": "v1SpectroClustersOpenStackCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroOpenStackClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a OpenStack cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/openstack/import": { + "post": { + "operationId": "v1SpectroClustersOpenStackImport", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroOpenStackClusterImportEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Imports an OpenStack cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/openstack/rate": { + "post": { + "operationId": "v1SpectroClustersOpenStackRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroOpenStackClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Openstack Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get openstack cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/openstack/validate": { + "post": { + "operationId": "v1SpectroClustersOpenStackValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroOpenStackClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "vSphere Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates OpenStack cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/spc/download": { + "post": { + "operationId": "v1SpectroClustersSpcDownload", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterDefinitionEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "Cluster definition archive file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Downloads the cluster definition archive file", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/tke": { + "post": { + "operationId": "v1SpectroClustersTkeCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroTencentClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a Tke cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/tke/rate": { + "post": { + "operationId": "v1SpectroClustersTkeRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroTencentClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Tke Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get TKE cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/tke/validate": { + "post": { + "operationId": "v1SpectroClustersTkeValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroTencentClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Tke Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates TKE cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/upgrade/settings": { + "get": { + "operationId": "v1SpectroClustersUpgradeSettingsGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1ClusterUpgradeSettingsEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get cluster settings by context", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/validate/name": { + "get": { + "operationId": "v1SpectroClustersValidateName", + "parameters": [ + { + "description": "Cluster name", + "in": "query", + "name": "name", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates the cluster name", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/validate/packs": { + "post": { + "operationId": "v1SpectroClustersValidatePacks", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterPacksEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Cluster packs validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates spectro cluster packs", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/virtual": { + "post": { + "operationId": "v1SpectroClustersVirtualCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroVirtualClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a virtual cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/virtual/packs/values": { + "get": { + "operationId": "v1VirtualClustersPacksValues", + "parameters": [ + { + "default": "k3s", + "description": "Kubernetes distribution type", + "enum": [ + "k3s", + "cncf_k8s" + ], + "in": "query", + "name": "kubernetesDistroType", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Successful response", + "schema": { + "$ref": "#/definitions/v1ClusterVirtualPacksValues" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the cluster pack values yaml", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/virtual/validate": { + "post": { + "operationId": "v1SpectroClustersVirtualValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroVirtualClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Virtual Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates virtual cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/vsphere": { + "post": { + "operationId": "v1SpectroClustersVsphereCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroVsphereClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a vSphere cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/vsphere/import": { + "post": { + "operationId": "v1SpectroClustersVsphereImport", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroVsphereClusterImportEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Imports a vSphere cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/vsphere/rate": { + "post": { + "operationId": "v1SpectroClustersVsphereRate", + "parameters": [ + { + "default": "hourly", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroVsphereClusterRateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Vsphere Cluster estimated rate response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get vSphere cluster estimated rate information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/vsphere/validate": { + "post": { + "operationId": "v1SpectroClustersVsphereValidate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroVsphereClusterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "vSphere Cluster validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates vSphere cluster create operation", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}": { + "delete": { + "operationId": "v1SpectroClustersDelete", + "parameters": [ + { + "description": "If set to true the cluster will be force deleted and user has to manually clean up the provisioned cloud resources", + "in": "query", + "name": "forceDelete", + "type": "boolean" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified cluster", + "tags": [ + "spectroclusters" + ] + }, + "get": { + "operationId": "v1SpectroClustersGet", + "parameters": [ + { + "description": "Comma separated tags like system,profile", + "in": "query", + "name": "includeTags", + "type": "string" + }, + { + "default": false, + "description": "Resolve pack values if set to true", + "in": "query", + "name": "resolvePackValues", + "type": "boolean" + }, + { + "description": "Includes pack meta such as schema, presets", + "in": "query", + "name": "includePackMeta", + "type": "string" + }, + { + "description": "Filter cluster profile templates by profileType", + "in": "query", + "name": "profileType", + "type": "string" + }, + { + "default": false, + "description": "Include non spectro labels in the cluster labels if set to true", + "in": "query", + "name": "includeNonSpectroLabels", + "type": "boolean" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1SpectroCluster" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/assets": { + "get": { + "operationId": "v1SpectroClustersUidAssetsGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1SpectroClusterAssetEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the cluster asset doc", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1SpectroClustersUidAssets", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterAssetEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Associate the assets for the cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/assets/adminKubeconfig": { + "get": { + "operationId": "v1SpectroClustersUidAdminKubeConfig", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "download file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster's kube config file", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/assets/frpKubeconfig": { + "delete": { + "operationId": "v1SpectroClustersUidFrpKubeConfigDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the cluster's frp kube config client data", + "tags": [ + "spectroclusters" + ] + }, + "get": { + "operationId": "v1SpectroClustersUidFrpKubeConfigGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "download file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster's frp kube config file", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersUidFrpKubeConfigUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterAssetFrpKubeConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster's frp kube config data", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/assets/kubeconfig": { + "get": { + "operationId": "v1SpectroClustersUidKubeConfig", + "parameters": [ + { + "default": true, + "description": "FRP (reverse-proxy) based kube config will be returned if available", + "in": "query", + "name": "frp", + "type": "boolean" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "download file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster's kube config file", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersUidKubeConfigUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterAssetKubeConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster's manifest data", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/assets/kubeconfigclient": { + "delete": { + "operationId": "v1SpectroClustersUidKubeConfigClientDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the cluster's kube config client data", + "tags": [ + "spectroclusters" + ] + }, + "get": { + "operationId": "v1SpectroClustersUidKubeConfigClientGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "download file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster's kube config client file", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersUidKubeConfigClientUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterAssetKubeConfigClient" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster's kube config client data", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/assets/manifest": { + "get": { + "operationId": "v1SpectroClustersUidManifestGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster's manifest data", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersUidManifestUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterAssetManifest" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster's manifest data", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/clusterConfig/clusterMetaAttribute": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1SpectroClustersUidClusterMetaAttributeUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterMetaAttributeEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster meta attribute", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/clusterConfig/controlPlaneHealthCheckTimeout": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "V1ControlPlaneHealthCheckTimeoutUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ControlPlaneHealthCheckTimeoutEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster controlPlane health check timeout", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/clusterConfig/hostCluster": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "V1HostClusterConfigUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1HostClusterConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster host config", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/clusterConfig/lifecycleConfig": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1SpectroClustersUidLifecycleConfigUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1LifecycleConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster Life cycle configuration", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/clusterConfig/osPatch": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1SpectroClustersUidOsPatchUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1OsPatchEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster OS patch configuration", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/config/namespaces": { + "get": { + "operationId": "v1SpectroClustersUidConfigNamespacesGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterNamespaceResources" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves namespaces for the specified cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersUidConfigNamespacesUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterNamespaceResourcesUpdateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates namespaces for the specified cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/config/namespaces/{namespaceUid}": { + "get": { + "operationId": "v1SpectroClustersUidConfigNamespacesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Cluster's namespace response", + "schema": { + "$ref": "#/definitions/v1ClusterNamespaceResource" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves the specified namespace of the cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Cluster namespace uid", + "in": "path", + "name": "namespaceUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersUidConfigNamespacesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterNamespaceResourceInputEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified namespace of the cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/config/rbacs": { + "get": { + "operationId": "v1SpectroClustersUidConfigRbacsGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterRbacs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves RBAC information for the specified cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersUidConfigRbacsUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterRbacResourcesUpdateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates RBAC information for the specified cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/config/rbacs/{rbacUid}": { + "get": { + "operationId": "v1SpectroClustersUidConfigRbacsUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Cluster's RBAC response", + "schema": { + "$ref": "#/definitions/v1ClusterRbac" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves the specified RBAC of the cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "RBAC resource uid", + "in": "path", + "name": "rbacUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersUidConfigRbacsUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterRbacInputEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified RBAC of the cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/download": { + "get": { + "operationId": "v1SpectroClustersUidDownload", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "download cluster archive file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Download the specified cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/edge-native/edgeHosts": { + "get": { + "operationId": "v1EdgeNativeClustersHostsList", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "List of edge host device", + "schema": { + "$ref": "#/definitions/v1EdgeHostDevices" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of edge host of edge-native cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/edge/edgeHosts": { + "get": { + "operationId": "v1EdgeClustersHostsList", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "List of edge host device", + "schema": { + "$ref": "#/definitions/v1EdgeHostDevices" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of edge host of libvirt cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/features/backup": { + "delete": { + "operationId": "v1ClusterFeatureBackupScheduleReset", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Reset cluster backup schedule settings", + "tags": [ + "spectroclusters" + ] + }, + "get": { + "operationId": "v1ClusterFeatureBackupGet", + "parameters": [ + { + "in": "query", + "name": "backupRequestUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterBackup" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the cluster backup result", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1ClusterFeatureBackupCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterBackupConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create cluster backup settings", + "tags": [ + "spectroclusters" + ] + }, + "put": { + "operationId": "v1ClusterFeatureBackupUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterBackupConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update cluster backup settings", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/features/backup/onDemand": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1ClusterFeatureBackupOnDemandCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterBackupConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create on demand cluster backup", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/features/backup/{backupName}/request/{requestUid}": { + "delete": { + "operationId": "v1ClusterFeatureBackupDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete cluster backup", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "backupName", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "requestUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/features/complianceScan": { + "get": { + "operationId": "v1ClusterFeatureComplianceScanGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterComplianceScan" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the compliance scan of cluster, if driverType is provided then specific status of driverType will be returned", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1ClusterFeatureComplianceScanCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterComplianceScheduleConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create cluster compliance scan", + "tags": [ + "spectroclusters" + ] + }, + "put": { + "operationId": "v1ClusterFeatureComplianceScanUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterComplianceScheduleConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update cluster compliance scan settings", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers": { + "get": { + "operationId": "v1ClusterFeatureComplianceScanLogsGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterComplianceScanLogs" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the compliance scan log by cluster uid and driver type", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/kubeBench": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ClusterFeatureScanKubeBenchLogUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1KubeBenchEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the KubeBench compliance scan log by uid", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/kubeHunter": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ClusterFeatureScanKubeHunterLogUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1KubeHunterEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the KubeHunter compliance scan log by uid", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/sonobuoy": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1ClusterFeatureScanSonobuoyLogUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SonobuoyEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the Sonobuoy compliance scan log by uid", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/features/complianceScan/logs/drivers/syft": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1ClusterFeatureScanSyftLogUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SyftEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the Syft compliance scan log by uid", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}": { + "delete": { + "operationId": "v1ClusterFeatureComplianceScanLogDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete the compliance scan log by uid", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "logUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/kubeBench": { + "get": { + "operationId": "v1ClusterFeatureKubeBenchLogGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterScanLogKubeBench" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the KubeBench compliance scan log by uid", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "logUid", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "reportId", + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/kubeHunter": { + "get": { + "operationId": "v1ClusterFeatureKubeHunterLogGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterScanLogKubeHunter" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the KubeHunter compliance scan log by uid", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "logUid", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "reportId", + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/sonobuoy": { + "get": { + "operationId": "v1ClusterFeatureSonobuoyLogGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterScanLogSonobuoy" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the Sonobuoy compliance scan log by uid", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "logUid", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "reportId", + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/syft": { + "get": { + "operationId": "v1ClusterFeatureSyftLogGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterScanLogSyft" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the Syft compliance scan log by uid", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "logUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/syft/sbom": { + "get": { + "operationId": "v1SyftScanLogImageSBOMGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "download file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the image sbom of syft scan log of cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "logUid", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "image", + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/features/complianceScan/logs/{logUid}/drivers/{driver}/download": { + "get": { + "operationId": "v1ClusterFeatureDriverLogDownload", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Content-Disposition": { + "type": "string" + }, + "Content-Type": { + "type": "string" + } + }, + "schema": { + "type": "file" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Downloads the driver cluster logs", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "logUid", + "required": true, + "type": "string" + }, + { + "enum": [ + "kubeBench", + "kubeHunter", + "sonobuoy", + "syft" + ], + "in": "path", + "name": "driver", + "required": true, + "type": "string" + }, + { + "default": "pdf", + "in": "query", + "name": "fileFormat", + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/features/complianceScan/onDemand": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1ClusterFeatureComplianceScanOnDemandCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterComplianceOnDemandConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create on demand cluster compliance scan", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/features/helmCharts": { + "get": { + "operationId": "v1ClusterFeatureHelmChartsGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterHelmCharts" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the installed helm charts of a specified cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/features/logFetcher": { + "get": { + "operationId": "v1ClusterFeatureLogFetcherGet", + "parameters": [ + { + "in": "query", + "name": "requestId", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterLogFetcher" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the log fetcher for cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid for which log is requested", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1ClusterFeatureLogFetcherCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterLogFetcherRequest" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create the log fetcher for cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/features/manifests": { + "get": { + "operationId": "v1ClusterFeatureManifestsGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterManifests" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the installed manifests of a specified cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/features/restore": { + "get": { + "operationId": "v1ClusterFeatureRestoreGet", + "parameters": [ + { + "in": "query", + "name": "restoreRequestUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterRestore" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the cluster restore of cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/features/restore/onDemand": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1ClusterFeatureRestoreOnDemandCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterRestoreConfig" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create on demand cluster restore", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/import/manifest": { + "get": { + "operationId": "v1SpectroClustersUidImportManifest", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "download file", + "headers": { + "Content-Disposition": { + "type": "string" + } + }, + "schema": { + "format": "binary", + "type": "string" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster's import manifest file", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/import/upgrade": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1SpectroClustersUidImportUpgradePatch", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Upgrade the specified imported read only cluster with full permissions", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/k8certificates": { + "get": { + "operationId": "v1SpectroClustersK8Certificate", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1MachineCertificates" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get K8Certificate for spectro cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/k8certificates/renew": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1SpectroClustersCertificatesRenew", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Sets the cluster master nodes Kubernetes certificates for renewal", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/kubectl/redirect": { + "get": { + "operationId": "V1SpectroClustersUidKubeCtlRedirect", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1SpectroClusterKubeCtlRedirect" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster's kube config file", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/libvirt/edgeHosts": { + "get": { + "operationId": "v1LibvirtClustersHostsList", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "List of edge host devices", + "schema": { + "$ref": "#/definitions/v1EdgeHostDevices" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of edge hosts of the libvirt cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/location": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersUidLocationPut", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterLocationInputEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Associate the assets for the cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/metadata": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1SpectroClustersUidMetadataUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ObjectMetaInputEntitySchema" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the specified spectro cluster metadata", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/namespaces": { + "get": { + "operationId": "v1ClusterNamespacesGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterNamespaces" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns available namespaces for the cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "default": false, + "in": "query", + "name": "skipEmptyNamespaces", + "type": "boolean" + } + ] + }, + "/v1/spectroclusters/{uid}/oidc": { + "get": { + "operationId": "V1SpectroClustersUidOIDC", + "parameters": [ + { + "description": "spc uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1SpectroClusterOidcSpec" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns k8s spectrocluster oidc", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/oidc/dashboard/url": { + "get": { + "operationId": "V1SpectroClustersUidOIDCDashboardUrl", + "parameters": [ + { + "description": "spc uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1SectroClusterK8sDashboardUrl" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns k8s dashboard url", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/pack/manifests/{manifestUid}": { + "get": { + "operationId": "v1SpectroClustersUidPackManifestsUidGet", + "parameters": [ + { + "description": "cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "manifest uid which is part of the pack ref", + "in": "path", + "name": "manifestUid", + "required": true, + "type": "string" + }, + { + "default": false, + "description": "resolve pack manifest values if set to true", + "in": "query", + "name": "resolveManifestValues", + "type": "boolean" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Pack manifest content", + "schema": { + "$ref": "#/definitions/v1Manifest" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster's manifest", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/pack/properties": { + "get": { + "operationId": "v1SpectroClustersUidPackProperties", + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Pack layer", + "in": "query", + "name": "layer", + "required": true, + "type": "string" + }, + { + "description": "Pack values yaml field path", + "in": "query", + "name": "fieldPath", + "required": true, + "type": "string" + }, + { + "description": "Pack name", + "in": "query", + "name": "name", + "type": "string" + }, + { + "default": true, + "description": "Is the macros need to be resolved", + "in": "query", + "name": "resolveMacros", + "type": "boolean" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Cluster's pack properties response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterPackProperties" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get specified cluster pack properties", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/packRefs": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "notify", + "type": "string" + } + ], + "patch": { + "operationId": "v1SpectroClustersPacksRefUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterNotificationUpdateEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster's pack references", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/packs/resolvedValues": { + "get": { + "operationId": "v1SpectroClustersUidPacksResolvedValuesGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1SpectroClusterProfilesResolvedValues" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster's packs resolved values", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterProfilesParamReferenceEntity" + } + } + ] + }, + "/v1/spectroclusters/{uid}/packs/status": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1SpectroClustersUidPacksStatusPatch", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterPacksStatusEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Patch update specified cluster's packs status", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/packs/{packName}/config": { + "get": { + "description": "Deprecated", + "operationId": "v1SpectroClustersUidPacksConfigGet", + "parameters": [ + { + "description": "cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "pack name", + "in": "path", + "name": "packName", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster pack values", + "schema": { + "$ref": "#/definitions/v1SpectroClusterPackConfigList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster's pack configuration", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/profile": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1SpectroClustersPatchProfile", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Replaces the specified cluster profile for the cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/profileUpdates": { + "get": { + "operationId": "v1SpectroClustersGetProfileUpdates", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1SpectroClusterProfileUpdates" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the profile updates of a specified cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/profiles": { + "delete": { + "operationId": "v1SpectroClustersDeleteProfiles", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterProfilesDeleteEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Remove cluster profiles from the specified cluster", + "tags": [ + "spectroclusters" + ] + }, + "get": { + "operationId": "v1SpectroClustersGetProfiles", + "parameters": [ + { + "description": "includes pack meta such as schema, presets", + "in": "query", + "name": "includePackMeta", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1SpectroClusterProfileList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the associated profiles of a specified cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1SpectroClustersPatchProfiles", + "parameters": [ + { + "default": false, + "description": "Resolve pending cluster notification if set to true", + "in": "query", + "name": "resolveNotification", + "type": "boolean" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterProfiles" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Patch cluster profiles to the specified cluster", + "tags": [ + "spectroclusters" + ] + }, + "put": { + "operationId": "v1SpectroClustersUpdateProfiles", + "parameters": [ + { + "default": false, + "description": "Resolve pending cluster notification if set to true", + "in": "query", + "name": "resolveNotification", + "type": "boolean" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterProfiles" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Associate cluster profiles to the specified cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/profiles/packs/manifests": { + "get": { + "operationId": "v1SpectroClustersGetProfilesPacksManifests", + "parameters": [ + { + "description": "Includes pack meta such as schema, presets", + "in": "query", + "name": "includePackMeta", + "type": "string" + }, + { + "default": false, + "description": "Resolve pack macro variables if set to true", + "in": "query", + "name": "resolveMacros", + "type": "boolean" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1SpectroClusterProfilesPacksManifests" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the associated profile's pack manifests of a specified cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/profiles/{profileUid}/packs/{packName}/config": { + "get": { + "operationId": "v1SpectroClustersUidProfilesUidPacksConfigGet", + "parameters": [ + { + "description": "cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "profile uid", + "in": "path", + "name": "profileUid", + "required": true, + "type": "string" + }, + { + "description": "pack name", + "in": "path", + "name": "packName", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of cluster pack values", + "schema": { + "$ref": "#/definitions/v1SpectroClusterPackConfigList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified cluster's profile pack configuration", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/profiles/{profileUid}/packs/{packName}/manifests": { + "get": { + "operationId": "v1SpectroClustersProfilesUidPackManifestsGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1PackManifests" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the associated profiles pack manifests of the specified cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Cluster profile uid", + "in": "path", + "name": "profileUid", + "required": true, + "type": "string" + }, + { + "description": "Name of the pack", + "in": "path", + "name": "packName", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersProfilesUidPackManifestsUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ManifestRefInputEntities" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates cluster profiles pack manifests to the specified cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/rate": { + "get": { + "operationId": "v1SpectroClustersUidRate", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRate" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the estimated rate of the specified cluster", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "default": "hourly", + "description": "Period type [hourly, monthly, yearly]", + "enum": [ + "hourly", + "monthly", + "yearly" + ], + "in": "query", + "name": "periodType", + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/repave/approve": { + "patch": { + "operationId": "v1SpectroClustersUidRepaveApproveUpdate", + "parameters": [ + { + "description": "cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the spectrocluster repave approve update", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/repave/status": { + "get": { + "operationId": "v1SpectroClustersUidRepaveGet", + "parameters": [ + { + "description": "cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Returns cluster repave status", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRepave" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the spectrocluster repave", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/reset": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "V1SpectroClustersUidReset", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "reset the cluster s by deleting machine pools and condtions", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/status/condition": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersUpdateStatusCondition", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterCondition" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster status condition", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/status/conditions": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1SpectroClustersUpdateStatusConditions", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "items": { + "$ref": "#/definitions/v1ClusterCondition" + }, + "type": "array" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster status conditions", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/status/endpoints": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersUpdateStatusEndpoints", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "items": { + "$ref": "#/definitions/v1ApiEndpoint" + }, + "type": "array" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster's service endpoints information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/status/imported": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1SpectroClustersUpdateStatusImported", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster status as imported", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/status/services": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersUpdateStatusServices", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "items": { + "$ref": "#/definitions/v1LoadBalancerService" + }, + "type": "array" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified cluster's services information", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/status/spcApply": { + "get": { + "operationId": "v1SpectroClustersUidStatusSpcApplyGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1SpcApply" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the SPC apply information for the agent", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1SpectroClustersUidStatusSpcApply", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "202": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Set the CanBeApplied to true on the spcApply status. CanBeApplied indicates the agent to orchestrate the spc changes", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/status/spcApply/patchTime": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1SpectroClustersUidStatusSpcPatchTime", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpcPatchTimeEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the agent patch time for the SPC changes", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/status/upgrades": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersUidUpgradesPut", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterUidUpgrades" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the cluster's upgrade status", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/validate/packs": { + "post": { + "operationId": "v1SpectroClustersUidValidatePacks", + "parameters": [ + { + "description": "cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterPacksEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Cluster packs validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterValidatorResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates cluster packs", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/validate/repave": { + "post": { + "operationId": "v1SpectroClustersUidValidateRepave", + "parameters": [ + { + "description": "cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterPacksEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "Cluster repave validation response", + "schema": { + "$ref": "#/definitions/v1SpectroClusterRepaveValidationResponse" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates if cluster gets repaved for the specified packs", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/vms": { + "get": { + "operationId": "v1SpectroClustersVMList", + "parameters": [ + { + "collectionFormat": "csv", + "description": "Namespace names, comma separated value (ex: dev,test). If namespace is empty it returns the specific resource under all namespace", + "in": "query", + "items": { + "type": "string" + }, + "name": "namespace", + "type": "array" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ClusterVirtualMachineList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the list of virtual machines", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1SpectroClustersVMCreate", + "parameters": [ + { + "description": "Namespace name", + "in": "query", + "name": "namespace", + "required": true, + "type": "string" + }, + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterVirtualMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1ClusterVirtualMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create virtual machine", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/vms/snapshot": { + "get": { + "operationId": "v1ClusterVMSnapshotsList", + "parameters": [ + { + "collectionFormat": "csv", + "description": "vmName is comma separated value (ex: name1,name2).", + "in": "query", + "items": { + "type": "string" + }, + "name": "vmName", + "type": "array" + }, + { + "collectionFormat": "csv", + "description": "Namespace names, comma separated value (ex: dev,test). If namespace is empty it returns the specific resource under all namespace", + "in": "query", + "items": { + "type": "string" + }, + "name": "namespace", + "type": "array" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1VirtualMachineSnapshotList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the list of snapshots of given namespaces", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/spectroclusters/{uid}/vms/{vmName}": { + "delete": { + "operationId": "v1SpectroClustersVMDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the virtual machine", + "tags": [ + "spectroclusters" + ] + }, + "get": { + "operationId": "v1SpectroClustersVMGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1ClusterVirtualMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get virtual machine", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Virtual Machine name", + "in": "path", + "name": "vmName", + "required": true, + "type": "string" + }, + { + "description": "Namespace name", + "in": "query", + "name": "namespace", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersVMUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterVirtualMachine" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1ClusterVirtualMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified virtual machine of the cluster", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/vms/{vmName}/addVolume": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Virtual Machine name", + "in": "path", + "name": "vmName", + "required": true, + "type": "string" + }, + { + "description": "Namespace name", + "in": "query", + "name": "namespace", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersVMAddVolume", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VMAddVolumeEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Add volume to the virtual machine instance", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/vms/{vmName}/clone": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Virtual Machine name", + "in": "path", + "name": "vmName", + "required": true, + "type": "string" + }, + { + "description": "Namespace name", + "in": "query", + "name": "namespace", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1SpectroClustersVMClone", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1SpectroClusterVMCloneEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1ClusterVirtualMachine" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Clone virtual machine", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/vms/{vmName}/migrate": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Virtual Machine name", + "in": "path", + "name": "vmName", + "required": true, + "type": "string" + }, + { + "description": "Namespace name", + "in": "query", + "name": "namespace", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersVMMigrate", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Migrate the virtual machine", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/vms/{vmName}/pause": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Virtual Machine name", + "in": "path", + "name": "vmName", + "required": true, + "type": "string" + }, + { + "description": "Namespace name", + "in": "query", + "name": "namespace", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersVMPause", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Pause the virtual machine instance", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/vms/{vmName}/removeVolume": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Virtual Machine name", + "in": "path", + "name": "vmName", + "required": true, + "type": "string" + }, + { + "description": "Namespace name", + "in": "query", + "name": "namespace", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersVMRemoveVolume", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VMRemoveVolumeEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Remove volume from the virtual machine instance", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/vms/{vmName}/restart": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Virtual Machine name", + "in": "path", + "name": "vmName", + "required": true, + "type": "string" + }, + { + "description": "Namespace name", + "in": "query", + "name": "namespace", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersVMRestart", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Restart the virtual machine", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/vms/{vmName}/resume": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Virtual Machine name", + "in": "path", + "name": "vmName", + "required": true, + "type": "string" + }, + { + "description": "Namespace name", + "in": "query", + "name": "namespace", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersVMResume", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Resume the virtual machine instance", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/vms/{vmName}/snapshot": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Virtual Machine name", + "in": "path", + "name": "vmName", + "required": true, + "type": "string" + }, + { + "description": "Namespace name of virtual machine", + "in": "query", + "name": "namespace", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1VMSnapshotCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VirtualMachineSnapshot" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1VirtualMachineSnapshot" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create snapshot of virtual machine", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/vms/{vmName}/snapshot/{snapshotName}": { + "delete": { + "operationId": "v1VMSnapshotDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete the snapshot of virtual machine", + "tags": [ + "spectroclusters" + ] + }, + "get": { + "operationId": "v1VMSnapshotGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1VirtualMachineSnapshot" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get virtual machine snapshot", + "tags": [ + "spectroclusters" + ] + }, + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Virtual Machine name", + "in": "path", + "name": "vmName", + "required": true, + "type": "string" + }, + { + "description": "Snapshot name", + "in": "path", + "name": "snapshotName", + "required": true, + "type": "string" + }, + { + "description": "Namespace name", + "in": "query", + "name": "namespace", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1VMSnapshotUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VirtualMachineSnapshot" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1VirtualMachineSnapshot" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified snapshot of a virtual machine", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/vms/{vmName}/start": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Virtual Machine name", + "in": "path", + "name": "vmName", + "required": true, + "type": "string" + }, + { + "description": "Namespace name", + "in": "query", + "name": "namespace", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersVMStart", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Start the virtual machine", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/vms/{vmName}/stop": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Virtual Machine name", + "in": "path", + "name": "vmName", + "required": true, + "type": "string" + }, + { + "description": "Namespace name", + "in": "query", + "name": "namespace", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1SpectroClustersVMStop", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Stop the virtual machine", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/workloads/sync": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "description": "Sync specified cluster workload", + "operationId": "v1SpectroClustersUidWorkloadsSync", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "202": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Sync specified cluster workload", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/spectroclusters/{uid}/workloads/{workloadKind}/sync": { + "parameters": [ + { + "description": "Cluster uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Workload kind", + "enum": [ + "namespace", + "pod", + "deployment", + "statefulset", + "daemonset", + "job", + "cronjob", + "rolebinding", + "clusterrolebinding" + ], + "in": "path", + "name": "workloadKind", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1SpectroClustersUidWorkloadsKindSync", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "202": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Sync specified cluster workload", + "tags": [ + "spectroclusters" + ] + } + }, + "/v1/system/config/reverseproxy": { + "get": { + "operationId": "V1SystemConfigReverseProxyGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1SystemReverseProxy" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "get the system config reverse proxy", + "tags": [ + "system" + ] + }, + "put": { + "operationId": "V1SystemConfigReverseProxyUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1SystemReverseProxy" + } + } + ], + "responses": { + "204": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1Updated" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "updates the system config reverse proxy", + "tags": [ + "system" + ] + } + }, + "/v1/system/passwords/blocklist": { + "delete": { + "operationId": "V1PasswordsBlockListDelete", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/V1PasswordsBlockList" + } + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete a list of block listed passwords", + "tags": [ + "system" + ] + }, + "patch": { + "operationId": "V1PasswordsBlockListUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/V1PasswordsBlockList" + } + } + ], + "responses": { + "204": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1Updated" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "List of block listed passwords", + "tags": [ + "system" + ] + } + }, + "/v1/teams": { + "get": { + "operationId": "v1TeamsList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "An array of teams", + "schema": { + "$ref": "#/definitions/v1Teams" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of teams", + "tags": [ + "teams" + ] + }, + "post": { + "operationId": "v1TeamsCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Team" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a team with the specified users and roles", + "tags": [ + "teams" + ] + } + }, + "/v1/teams/summary": { + "get": { + "description": "Deprecated, Use Post api - Returns a list of team summaries", + "operationId": "v1TeamsSummary", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1TeamsSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of team summary", + "tags": [ + "teams" + ] + }, + "post": { + "operationId": "v1TeamsSummaryGet", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TeamsSummarySpec" + } + } + ], + "responses": { + "200": { + "description": "An array of teams summary items", + "schema": { + "$ref": "#/definitions/v1TeamsSummaryList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of teams summary with provided filter spec", + "tags": [ + "teams" + ] + } + }, + "/v1/teams/{uid}": { + "delete": { + "operationId": "v1TeamsUidDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified team", + "tags": [ + "teams" + ] + }, + "get": { + "operationId": "v1TeamsUidGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Team" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the sepcified team", + "tags": [ + "teams" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1TeamsUidPatch", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1TeamPatch" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Patches the specified team", + "tags": [ + "teams" + ] + }, + "put": { + "operationId": "v1TeamsUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Team" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the sepcified team", + "tags": [ + "teams" + ] + } + }, + "/v1/teams/{uid}/projects": { + "get": { + "operationId": "v1TeamsProjectRoles", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ProjectRolesEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified team's project and roles data", + "tags": [ + "teams" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1TeamsProjectRolesPut", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1ProjectRolesPatch" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the projects and roles for the specified team", + "tags": [ + "teams" + ] + } + }, + "/v1/teams/{uid}/resourceRoles": { + "get": { + "description": "Returns resource roles for team", + "operationId": "v1TeamsUidResourceRoles", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ResourceRoles" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified individual and resource roles for a team", + "tags": [ + "teams" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "description": "Resource roles added to specific team", + "operationId": "v1TeamsUidResourceRolesCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1ResourceRolesUpdateEntity" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Add resource roles for team", + "tags": [ + "teams" + ] + } + }, + "/v1/teams/{uid}/resourceRoles/{resourceRoleUid}": { + "delete": { + "operationId": "v1TeamsUidResourceRolesUidDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deleted the resource roles from team", + "tags": [ + "teams" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "resourceRoleUid", + "required": true, + "type": "string" + } + ], + "patch": { + "description": "Specific resource roles fo team is updated", + "operationId": "v1TeamsResourceRolesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1ResourceRolesUpdateEntity" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the resource roles for team", + "tags": [ + "teams" + ] + } + }, + "/v1/teams/{uid}/roles": { + "get": { + "operationId": "V1TeamsUidTenantRolesGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1TeamTenantRolesEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified team's tenant roles", + "tags": [ + "teams" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "V1TeamsUidTenantRolesUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1TeamTenantRolesUpdate" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the tenant roles of the specified team", + "tags": [ + "teams" + ] + } + }, + "/v1/tenants/{tenantUid}/address": { + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1PatchTenantAddress", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TenantAddressPatch" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update tenant address", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/assets/certs": { + "get": { + "operationId": "V1TenantUIdAssetsCertsList", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1TenantAssetCerts" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "lists the certificates for the tenant", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "V1TenantUidAssetsCertsCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TenantAssetCert" + } + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "create the tenant certificate", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/assets/certs/{certificateUid}": { + "delete": { + "operationId": "V1TenantUidAssetsCertsUidDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "deletes the tenant certificate", + "tags": [ + "tenants" + ] + }, + "get": { + "operationId": "V1TenantUidAssetsCertsUidGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1TenantAssetCert" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the ca certificate for the tenant", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "certificateUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "V1TenantUidAssetsCertsUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TenantAssetCert" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "updates the tenant certificate", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/assets/dataSinks": { + "delete": { + "operationId": "V1TenantUidAssetsDataSinksDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "deletes the tenant data sink config", + "tags": [ + "tenants" + ] + }, + "get": { + "operationId": "V1TenantUidAssetsDataSinksGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1DataSinkConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns data sink config of tenant", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "V1TenantUidAssetsDataSinksCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1DataSinkConfig" + } + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "create data sink config", + "tags": [ + "tenants" + ] + }, + "put": { + "operationId": "V1TenantUidAssetsDataSinksUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1DataSinkConfig" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "updates the tenant data sink config", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/authTokenSettings": { + "get": { + "operationId": "v1TenantUidAuthTokenSettingsGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AuthTokenSettings" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get tenant auth token settings", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1TenantUidAuthTokenSettingsUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AuthTokenSettings" + } + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update tenant auth token settings", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/contract/accept": { + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1TenantsUidContractAccept", + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Tenant to accept the contract agreement", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/creditAccount/aws": { + "delete": { + "operationId": "v1TenantsCreditAccountDelete", + "parameters": [ + { + "default": false, + "in": "query", + "name": "forceDelete", + "type": "boolean" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the aws credit account for tenants", + "tags": [ + "tenants" + ] + }, + "get": { + "operationId": "v1TenantsCreditAccountGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1AwsCreditAccountEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the credit accounts for the tenants with free tier access", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/tenants/{tenantUid}/domains": { + "get": { + "operationId": "V1TenantUidDomainsGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1TenantDomains" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "retrieves the domains for tenant", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "V1TenantUidDomainsUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TenantDomains" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "creates or updates domains for tenant", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/emailId": { + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1PatchTenantEmailId", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TenantEmailPatch" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update tenant emailId", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/freemium": { + "get": { + "operationId": "v1TenantFreemiumGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1TenantFreemium" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get tenant level freemium configuration", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1TenantFreemiumUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TenantFreemium" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update tenant freemium configuration", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/freemiumUsage": { + "get": { + "operationId": "v1TenantFreemiumUsageGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1TenantFreemiumUsage" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get tenant freemium usage", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/tenants/{tenantUid}/invoices/{invoiceUid}": { + "get": { + "operationId": "v1InvoicesUidGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1Invoice" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns a specified invoice", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "description": "Specify the tenant uid", + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + }, + { + "description": "Specify the invoice uid", + "in": "path", + "name": "invoiceUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/invoice/pdf": { + "get": { + "operationId": "V1InvoiceUidReportInvoicePdf", + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Content-Disposition": { + "type": "string" + }, + "Content-Type": { + "type": "string" + } + }, + "schema": { + "type": "file" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Downloads the specified invoice report", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "description": "Specify the tenant uid", + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + }, + { + "description": "Specify the invoice uid", + "in": "path", + "name": "invoiceUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/pdf": { + "get": { + "operationId": "V1InvoiceUidReportPdf", + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Content-Disposition": { + "type": "string" + }, + "Content-Type": { + "type": "string" + } + }, + "schema": { + "type": "file" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Downloads the specified monthly invoice report", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "description": "Specify the tenant uid", + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + }, + { + "description": "Specify the invoice uid", + "in": "path", + "name": "invoiceUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/tenants/{tenantUid}/invoices/{invoiceUid}/report/usage/pdf": { + "get": { + "operationId": "V1InvoiceUidReportUsagePdf", + "produces": [ + "application/octet-stream" + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Content-Disposition": { + "type": "string" + }, + "Content-Type": { + "type": "string" + } + }, + "schema": { + "type": "file" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Downloads the specified tenant usage", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "description": "Specify the tenant uid", + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + }, + { + "description": "Specify the invoice uid", + "in": "path", + "name": "invoiceUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/tenants/{tenantUid}/loginBanner": { + "get": { + "operationId": "v1TenantUidLoginBannerGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1LoginBannerSettings" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get tenant login banner settings", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1TenantUidLoginBannerUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1LoginBannerSettings" + } + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update tenant login banner settings", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/macros": { + "delete": { + "operationId": "v1TenantsUidMacrosDeleteByMacroName", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete the macros for the specified tenant by given macro name", + "tags": [ + "tenants" + ] + }, + "get": { + "operationId": "v1TenantsUidMacrosList", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "List the macros of the specified tenant", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1TenantsUidMacrosUpdateByMacroName", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the macros for the specified tenant by given macro name", + "tags": [ + "tenants" + ] + }, + "post": { + "operationId": "v1TenantsUidMacrosCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create or add new macros for the specified tenant", + "tags": [ + "tenants" + ] + }, + "put": { + "operationId": "v1TenantsUidMacrosUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the macros of the specified tenant", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/oidc/config": { + "get": { + "operationId": "V1TenantUidOidcConfigGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1TenantOidcClientSpec" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the oidc Spec for tenant", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "V1TenantUidOidcConfigUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TenantOidcClientSpec" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Associates the oidc Spec for the tenant", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/password/policy": { + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "V1TenantUidPasswordPolicyUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TenantPasswordPolicyEntity" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "creates or updates a password policy for tenant", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/preferences/clusterGroup": { + "get": { + "operationId": "V1TenantPrefClusterGroupGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1TenantEnableClusterGroup" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get is cluster group enabled for a specific tenant", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "V1TenantPrefClusterGroupUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TenantEnableClusterGroup" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Enable or Disable cluster group for a specific tenant", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/preferences/clusterSettings": { + "get": { + "operationId": "v1TenantClusterSettingsGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1TenantClusterSettings" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get tenant cluster settings", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ] + }, + "/v1/tenants/{tenantUid}/preferences/clusterSettings/nodesAutoRemediationSetting": { + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1TenantClustersNodesAutoRemediationSettingUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1NodesAutoRemediationSettings" + } + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update tenant clusters nodes auto remediation setting", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/preferences/developerCredit": { + "get": { + "operationId": "V1TenantDeveloperCreditGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1DeveloperCredit" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get developer credit enabled for a specific tenant", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "V1TenantDeveloperCreditUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1DeveloperCredit" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "update developer credit for a specific tenant", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/preferences/fips": { + "get": { + "operationId": "v1TenantFipsSettingsGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1FipsSettings" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get tenant fips settings", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1TenantFipsSettingsUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1FipsSettings" + } + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update tenant fips setting", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/rateConfig": { + "get": { + "operationId": "v1RateConfigGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1RateConfig" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get all rate config for public and private cloud", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1RateConfigUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1RateConfig" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "updates the rate config for public and private cloud", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/resourceLimits": { + "get": { + "operationId": "v1TenantResourceLimitsGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1TenantResourceLimits" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get tenant level resource limits configuration", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1TenantResourceLimitsUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TenantResourceLimitsEntity" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update tenant resource limits configuration", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/saml/config": { + "get": { + "operationId": "V1TenantUidSamlConfigSpecGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1TenantSamlSpec" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified service provider metadata and Saml Spec for tenant", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "V1TenantUidSamlConfigUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TenantSamlRequestSpec" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Associates the specified federation metadata for the tenant", + "tags": [ + "tenants" + ] + } + }, + "/v1/tenants/{tenantUid}/sso/auth/providers": { + "get": { + "operationId": "V1TenantUidSsoAuthProvidersGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1TenantSsoAuthProvidersEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "get sso logins for the tenants", + "tags": [ + "tenants" + ] + }, + "parameters": [ + { + "in": "path", + "name": "tenantUid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "V1TenantUidSsoAuthProvidersUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1TenantSsoAuthProvidersEntity" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "enable sso logins for the tenants", + "tags": [ + "tenants" + ] + } + }, + "/v1/users": { + "get": { + "description": "Lists users the given user context", + "operationId": "v1UsersList", + "parameters": [ + { + "description": "Set of fields to be presented in the response with values. The fields are comma separated. Eg: metadata.uid,metadata.name", + "in": "query", + "name": "fields", + "type": "string" + }, + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + }, + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Users" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Lists users", + "tags": [ + "users" + ] + }, + "post": { + "description": "A user is created for the given user context", + "operationId": "v1UsersCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1UserEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create User", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/locations": { + "get": { + "operationId": "v1UsersAssetsLocationGet", + "parameters": [ + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1UserAssetsLocations" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified users location", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/locations/azure": { + "post": { + "operationId": "v1UsersAssetsLocationAzureCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1UserAssetsLocationAzure" + } + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create a Azure location", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/locations/azure/{uid}": { + "get": { + "operationId": "v1UsersAssetsLocationAzureGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1UserAssetsLocationAzure" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified Azure location", + "tags": [ + "users" + ] + }, + "parameters": [ + { + "description": "Specify the Azure location uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1UsersAssetsLocationAzureUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1UserAssetsLocationAzure" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified Azure location", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/locations/gcp": { + "post": { + "operationId": "v1UsersAssetsLocationGcpCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1UserAssetsLocationGcp" + } + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create a GCP location", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/locations/gcp/{uid}": { + "get": { + "operationId": "v1UsersAssetsLocationGcpGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1UserAssetsLocationGcp" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified GCP location", + "tags": [ + "users" + ] + }, + "parameters": [ + { + "description": "Specify the GCP location uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1UsersAssetsLocationGcpUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1UserAssetsLocationGcp" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified GCP location", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/locations/minio": { + "post": { + "operationId": "v1UsersAssetsLocationMinioCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1UserAssetsLocationS3" + } + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create a MinIO location", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/locations/minio/{uid}": { + "get": { + "operationId": "v1UsersAssetsLocationMinioGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1UserAssetsLocationS3" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified MinIO location", + "tags": [ + "users" + ] + }, + "parameters": [ + { + "description": "Specify the MinIO location uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1UsersAssetsLocationMinioUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1UserAssetsLocationS3" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified MinIO location", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/locations/s3": { + "post": { + "operationId": "v1UsersAssetsLocationS3Create", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1UserAssetsLocationS3" + } + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create a S3 location", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/locations/s3/{uid}": { + "delete": { + "operationId": "v1UsersAssetsLocationS3Delete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified S3 location", + "tags": [ + "users" + ] + }, + "get": { + "operationId": "v1UsersAssetsLocationS3Get", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1UserAssetsLocationS3" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified S3 location", + "tags": [ + "users" + ] + }, + "parameters": [ + { + "description": "Specify the S3 location uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1UsersAssetsLocationS3Update", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1UserAssetsLocationS3" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified S3 location", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/locations/{type}/{uid}/default": { + "parameters": [ + { + "description": "Specify the location uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "description": "Specify the location type [aws/azure/gcp/minio/s3]", + "in": "path", + "name": "type", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1UsersAssetsLocationDefaultUpdate", + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the default backup location", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/locations/{uid}": { + "delete": { + "operationId": "v1UsersAssetsLocationDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified location", + "tags": [ + "users" + ] + }, + "parameters": [ + { + "description": "Specify the location uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/users/assets/sshkeys": { + "get": { + "operationId": "v1UsersAssetsSshGet", + "parameters": [ + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1UserAssetsSsh" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the SSH keys", + "tags": [ + "users" + ] + }, + "post": { + "operationId": "v1UserAssetsSshCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1UserAssetSshEntity" + } + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Creates a SSH key", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/sshkeys/{uid}": { + "delete": { + "operationId": "v1UsersAssetSshDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified user ssh key", + "tags": [ + "users" + ] + }, + "get": { + "operationId": "v1UsersAssetSshGetUid", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1UserAssetSsh" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified user ssh key", + "tags": [ + "users" + ] + }, + "parameters": [ + { + "description": "Specify the SSH key uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1UsersAssetSshUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1UserAssetSsh" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified user ssh key", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/vsphere/dnsMapping": { + "get": { + "operationId": "v1VsphereMappingGet", + "parameters": [ + { + "description": "Specify the vSphere gateway uid", + "in": "query", + "name": "gatewayUid", + "required": true, + "type": "string" + }, + { + "description": "Specify the vSphere datacenter name", + "in": "query", + "name": "datacenter", + "required": true, + "type": "string" + }, + { + "description": "Specify the vSphere network name", + "in": "query", + "name": "network", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1VsphereDnsMapping" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified vSphere DNS mapping", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/vsphere/dnsMappings": { + "get": { + "operationId": "v1VsphereDnsMappingsGet", + "parameters": [ + { + "description": "Filters can be combined with AND, OR operators with field path name. Eg: metadata.name=TestServiceANDspec.cloudType=aws\n\nServer will be restricted to certain fields based on the indexed data for each resource.", + "in": "query", + "name": "filters", + "type": "string" + }, + { + "description": "Specify the fields with sort order. 1 indicates ascending and -1 for descending. Eg: orderBy=metadata.name=1,metadata.uid=-1", + "in": "query", + "name": "orderBy", + "type": "string" + } + ], + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1VsphereDnsMappings" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified vSphere DNS mappings", + "tags": [ + "users" + ] + }, + "post": { + "operationId": "v1VsphereDnsMappingCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VsphereDnsMapping" + } + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create a vSphere DNS mapping", + "tags": [ + "users" + ] + } + }, + "/v1/users/assets/vsphere/dnsMappings/{uid}": { + "delete": { + "operationId": "v1VsphereDnsMappingDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified vSphere DNS mapping", + "tags": [ + "users" + ] + }, + "get": { + "operationId": "v1VsphereDnsMappingGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1VsphereDnsMapping" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified vSphere DNS mapping", + "tags": [ + "users" + ] + }, + "parameters": [ + { + "description": "Specify the vSphere DNS mapping uid", + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1VsphereDnsMappingUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1VsphereDnsMapping" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified vSphere DNS mapping", + "tags": [ + "users" + ] + } + }, + "/v1/users/auth/tokens/revoke": { + "post": { + "operationId": "v1UsersAuthTokensRevoke", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1AuthTokenRevoke" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Revoke access of specific token(s)", + "tags": [ + "users" + ] + } + }, + "/v1/users/config/scar": { + "get": { + "operationId": "V1UsersConfigScarGet", + "responses": { + "200": { + "description": "(empty)", + "schema": { + "$ref": "#/definitions/v1SystemScarSpec" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Get the system Spectro repository. Restricted to edge services", + "tags": [ + "users" + ] + } + }, + "/v1/users/kubectl/session/{sessionUid}": { + "get": { + "description": "gets users kubectl session", + "operationId": "V1UsersKubectlSessionUid", + "parameters": [ + { + "in": "path", + "name": "sessionUid", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1UserKubectlSession" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "gets users kubectl session", + "tags": [ + "users" + ] + } + }, + "/v1/users/me": { + "get": { + "description": "Returns a User with permissions with scopes", + "operationId": "v1UsersMeGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1UserMe" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified User ACL information", + "tags": [ + "users" + ] + } + }, + "/v1/users/meta": { + "get": { + "operationId": "v1UsersMetadata", + "responses": { + "200": { + "description": "An array of users metadata items", + "schema": { + "$ref": "#/definitions/v1UsersMetadata" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of users metadata", + "tags": [ + "users" + ] + } + }, + "/v1/users/password/change": { + "patch": { + "description": "User password change request via current password and emailId", + "operationId": "V1UsersPasswordChange", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "properties": { + "currentPassword": { + "type": "string" + }, + "emailId": { + "type": "string" + }, + "newPassword": { + "type": "string" + } + }, + "required": [ + "newPassword", + "emailId", + "currentPassword" + ], + "type": "object" + } + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "User password change request using the user emailId", + "tags": [ + "users" + ] + } + }, + "/v1/users/password/reset": { + "patch": { + "description": "User password request will be sent to the supplied emailId", + "operationId": "v1UsersEmailPasswordReset", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "properties": { + "emailId": { + "type": "string" + } + }, + "required": [ + "emailId" + ], + "type": "object" + } + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "User password reset request using the email id", + "tags": [ + "users" + ] + } + }, + "/v1/users/summary": { + "get": { + "description": "Deprecated, Use Post api - Returns a list of user summaries", + "operationId": "v1UsersSummary", + "parameters": [ + { + "default": 50, + "description": "limit is a maximum number of responses to return for a list call. Default and maximum value of the limit is 50.\nIf more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results.", + "format": "int64", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "offset is the next index number from which the response will start. The response offset value can be used along with continue token for the pagination.", + "format": "int64", + "in": "query", + "name": "offset", + "type": "integer" + }, + { + "description": "continue token to paginate the subsequent data items", + "in": "query", + "name": "continue", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1UsersSummary" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified user summary list", + "tags": [ + "users" + ] + }, + "post": { + "operationId": "v1UsersSummaryGet", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1UsersSummarySpec" + } + } + ], + "responses": { + "200": { + "description": "An array of users summary items", + "schema": { + "$ref": "#/definitions/v1UsersSummaryList" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Retrieves a list of users summary with provided filter spec", + "tags": [ + "users" + ] + } + }, + "/v1/users/system/macros": { + "delete": { + "operationId": "v1UsersSystemMacrosDeleteByMacroName", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete the macros for the system user by macro name", + "tags": [ + "users" + ] + }, + "get": { + "operationId": "v1UsersSystemMacrosList", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "List the macros of the system", + "tags": [ + "users" + ] + }, + "patch": { + "operationId": "v1UsersSystemMacrosUpdateByMacroName", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the macros for the system user by macro name", + "tags": [ + "users" + ] + }, + "post": { + "operationId": "v1UsersSystemMacrosCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create or add new macros for the system user", + "tags": [ + "users" + ] + }, + "put": { + "operationId": "v1UsersSystemMacrosUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1Macros" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update the macros of the system", + "tags": [ + "users" + ] + } + }, + "/v1/users/{uid}": { + "delete": { + "description": "Deletes the specified User for given uid", + "operationId": "v1UsersUidDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified User", + "tags": [ + "users" + ] + }, + "get": { + "description": "Returns a User for the specified uid.", + "operationId": "v1UsersUidGet", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1User" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified User", + "tags": [ + "users" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "description": "User is patched for the specified information", + "operationId": "v1UsersUidPatch", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1UserPatch" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Patches the specified User", + "tags": [ + "users" + ] + }, + "put": { + "description": "A user is created for the given user context", + "operationId": "v1UsersUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1UserUpdateEntity" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update User", + "tags": [ + "users" + ] + } + }, + "/v1/users/{uid}/password/change": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "description": "User password change request via current password", + "operationId": "v1UsersUidPasswordChange", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "properties": { + "currentPassword": { + "type": "string" + }, + "newPassword": { + "type": "string" + } + }, + "required": [ + "newPassword" + ], + "type": "object" + } + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "User password change request using the user uid", + "tags": [ + "users" + ] + } + }, + "/v1/users/{uid}/password/reset": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "description": "User password reset request, will send the password reset option through the emailId", + "operationId": "v1UsersUidPasswordReset", + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "User password reset request using the user uid", + "tags": [ + "users" + ] + } + }, + "/v1/users/{uid}/projects": { + "get": { + "description": "Returns a User with projects and roles", + "operationId": "v1UsersProjectRoles", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ProjectRolesEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified User Projects and Roles information", + "tags": [ + "users" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "description": "User is updated with projects and roles", + "operationId": "v1UsersProjectRolesPut", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1ProjectRolesPatch" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the projects and roles for user", + "tags": [ + "users" + ] + } + }, + "/v1/users/{uid}/resourceRoles": { + "get": { + "description": "Returns resource roles for user", + "operationId": "v1UsersUidResourceRoles", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1ResourceRoles" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified individual and resource roles for a user", + "tags": [ + "users" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "description": "Resource roles added to specific user", + "operationId": "v1UsersUidResourceRolesCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1ResourceRolesUpdateEntity" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Add resource roles for user", + "tags": [ + "users" + ] + } + }, + "/v1/users/{uid}/resourceRoles/{resourceRoleUid}": { + "delete": { + "operationId": "v1UsersUidResourceRolesUidDelete", + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deleted the resource roles from user", + "tags": [ + "users" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "resourceRoleUid", + "required": true, + "type": "string" + } + ], + "patch": { + "description": "Specific resource roles fo user is updated", + "operationId": "v1UsersResourceRolesUidUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1ResourceRolesUpdateEntity" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the resource roles for user", + "tags": [ + "users" + ] + } + }, + "/v1/users/{uid}/roles": { + "get": { + "description": "Returns roles clubbed from team", + "operationId": "v1UsersUidRoles", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1UserRolesEntity" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified individual and team roles for a user", + "tags": [ + "users" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "description": "User is updated with roles", + "operationId": "v1UsersUidRolesUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1UserRoleUIDs" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the roles for user", + "tags": [ + "users" + ] + } + }, + "/v1/users/{uid}/status/loginMode": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "patch": { + "operationId": "v1UsersStatusLoginMode", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1UserStatusLoginMode" + } + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Users status login mode", + "tags": [ + "users" + ] + } + }, + "/v1/workspaces": { + "post": { + "operationId": "v1WorkspacesCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create workspace", + "tags": [ + "workspaces" + ] + } + }, + "/v1/workspaces/teams/{teamUid}/roles": { + "get": { + "operationId": "v1TeamsWorkspaceGetRoles", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1WorkspaceScopeRoles" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified team's workspaces and roles data", + "tags": [ + "workspaces" + ] + }, + "parameters": [ + { + "in": "path", + "name": "teamUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1TeamsWorkspaceRolesPut", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1WorkspacesRolesPatch" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the workspace roles for the specified team", + "tags": [ + "workspaces" + ] + } + }, + "/v1/workspaces/users/{userUid}/roles": { + "get": { + "description": "Returns a User with workspaces and roles", + "operationId": "v1UsersWorkspaceGetRoles", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1WorkspaceScopeRoles" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified User workspaces and Roles information", + "tags": [ + "workspaces" + ] + }, + "parameters": [ + { + "in": "path", + "name": "userUid", + "required": true, + "type": "string" + } + ], + "put": { + "description": "User is updated with workspace roles", + "operationId": "v1UsersWorkspaceRolesPut", + "parameters": [ + { + "in": "body", + "name": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1WorkspacesRolesPatch" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the workspace roles for user", + "tags": [ + "workspaces" + ] + } + }, + "/v1/workspaces/validate/name": { + "get": { + "operationId": "v1WorkspacesValidateName", + "parameters": [ + { + "in": "query", + "name": "name", + "required": true, + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "Ok response without content", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Validates the workspace name", + "tags": [ + "workspaces" + ] + } + }, + "/v1/workspaces/{uid}": { + "delete": { + "operationId": "v1WorkspacesUidDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified workspace", + "tags": [ + "workspaces" + ] + }, + "get": { + "operationId": "v1WorkspacesUidGet", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1Workspace" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the specified workspace", + "tags": [ + "workspaces" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/workspaces/{uid}/backup": { + "delete": { + "operationId": "v1WorkspaceOpsBackupDelete", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceBackupDeleteEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Delete workspace backup", + "tags": [ + "workspaces" + ] + }, + "get": { + "operationId": "v1WorkspaceOpsBackupGet", + "parameters": [ + { + "in": "query", + "name": "backupRequestUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1WorkspaceBackup" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the workspace backup result", + "tags": [ + "workspaces" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1WorkspaceOpsBackupCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceBackupConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create workspace backup settings", + "tags": [ + "workspaces" + ] + }, + "put": { + "operationId": "v1WorkspaceOpsBackupUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceBackupConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Update workspace backup settings", + "tags": [ + "workspaces" + ] + } + }, + "/v1/workspaces/{uid}/backup/onDemand": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1WorkspaceOpsBackupOnDemandCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceBackupConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create On demand Workspace Backup", + "tags": [ + "workspaces" + ] + } + }, + "/v1/workspaces/{uid}/clusterNamespaces": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1WorkspacesUidClusterNamespacesUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceClusterNamespacesEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified workspace namespaces", + "tags": [ + "workspaces" + ] + } + }, + "/v1/workspaces/{uid}/clusterRbacs": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1WorkspacesClusterRbacCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterRbac" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create cluster rbac in workspace", + "tags": [ + "workspaces" + ] + } + }, + "/v1/workspaces/{uid}/clusterRbacs/{clusterRbacUid}": { + "delete": { + "operationId": "v1WorkspacesUidClusterRbacDelete", + "parameters": [ + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was deleted successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Deletes the specified workspace cluster rbac", + "tags": [ + "workspaces" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + }, + { + "in": "path", + "name": "clusterRbacUid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1WorkspacesUidClusterRbacUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ClusterRbac" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified workspace cluster rbac", + "tags": [ + "workspaces" + ] + } + }, + "/v1/workspaces/{uid}/meta": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "operationId": "v1WorkspacesUidMetaUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1ObjectMeta" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified workspace meta", + "tags": [ + "workspaces" + ] + } + }, + "/v1/workspaces/{uid}/resourceAllocations": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "put": { + "description": "Deprecated", + "operationId": "v1WorkspacesUidResourceAllocationsUpdate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceResourceAllocationsEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "204": { + "description": "The resource was updated successfully" + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Updates the specified workspace resource allocations", + "tags": [ + "workspaces" + ] + } + }, + "/v1/workspaces/{uid}/restore": { + "get": { + "operationId": "v1WorkspaceOpsRestoreGet", + "parameters": [ + { + "in": "query", + "name": "restoreRequestUid", + "type": "string" + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1WorkspaceRestore" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Returns the workspace restore result", + "tags": [ + "workspaces" + ] + }, + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ] + }, + "/v1/workspaces/{uid}/restore/onDemand": { + "parameters": [ + { + "in": "path", + "name": "uid", + "required": true, + "type": "string" + } + ], + "post": { + "operationId": "v1WorkspaceOpsRestoreOnDemandCreate", + "parameters": [ + { + "in": "body", + "name": "body", + "schema": { + "$ref": "#/definitions/v1WorkspaceRestoreConfigEntity" + } + }, + { + "description": "Scope the request to the specified project uid", + "in": "header", + "name": "ProjectUid", + "type": "string" + } + ], + "responses": { + "201": { + "description": "Created successfully", + "headers": { + "AuditUid": { + "description": "Audit uid for the request", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/v1Uid" + } + } + }, + "security": [ + { + "ApiKey": [] + }, + { + "Authorization": [] + } + ], + "summary": "Create On demand Workspace Restore", + "tags": [ + "workspaces" + ] + } + } + }, + "produces": [ + "application/json" + ], + "schemes": [ + "http", + "https" + ], + "securityDefinitions": { + "ApiKey": { + "description": "API key authorization where API key can be generated from Palette console under Profile > My API Keys", + "in": "header", + "name": "ApiKey", + "type": "apiKey" + }, + "Authorization": { + "description": "JWT token authorization obtained using /v1/auth/authenticate api", + "in": "header", + "name": "Authorization", + "type": "apiKey" + } + }, + "swagger": "2.0", + "tags": [ + { + "name": "cluster", + "x-displayName": "Cluster" + }, + { + "name": "apiKeys", + "x-displayName": "Api Keys" + }, + { + "name": "appDeployments", + "x-displayName": "App Deployments" + }, + { + "name": "appProfiles", + "x-displayName": "App Profiles" + }, + { + "name": "audits", + "x-displayName": "Audits" + }, + { + "name": "auth", + "x-displayName": "Auth" + }, + { + "name": "cloudaccounts", + "x-displayName": "Cloudaccounts" + }, + { + "name": "cloudconfigs", + "x-displayName": "Cloudconfigs" + }, + { + "name": "clouds", + "x-displayName": "Clouds" + }, + { + "name": "clustergroups", + "x-displayName": "Clustergroups" + }, + { + "name": "clusterprofiles", + "x-displayName": "Clusterprofiles" + }, + { + "name": "dashboard", + "x-displayName": "Dashboard" + }, + { + "name": "datasinks", + "x-displayName": "Datasinks" + }, + { + "name": "edgehosts", + "x-displayName": "Edgehosts" + }, + { + "name": "events", + "x-displayName": "Events" + }, + { + "name": "filters", + "x-displayName": "Filters" + }, + { + "name": "metrics", + "x-displayName": "Metrics" + }, + { + "name": "notifications", + "x-displayName": "Notifications" + }, + { + "name": "overlords", + "x-displayName": "Overlords" + }, + { + "name": "packs", + "x-displayName": "Packs" + }, + { + "name": "pcg", + "x-displayName": "Pcg" + }, + { + "name": "permissions", + "x-displayName": "Permissions" + }, + { + "name": "projects", + "x-displayName": "Projects" + }, + { + "name": "registries", + "x-displayName": "Registries" + }, + { + "name": "roles", + "x-displayName": "Roles" + }, + { + "name": "services", + "x-displayName": "Services" + }, + { + "name": "spectroclusters", + "x-displayName": "Spectroclusters" + }, + { + "name": "system", + "x-displayName": "System" + }, + { + "name": "teams", + "x-displayName": "Teams" + }, + { + "name": "tenants", + "x-displayName": "Tenants" + }, + { + "name": "users", + "x-displayName": "Users" + }, + { + "name": "workspaces", + "x-displayName": "Workspaces" + } + ], + "servers": [ + { + "url": "https://api.spectrocloud.com" + } + ] +} \ No newline at end of file diff --git a/docs/docs-content/vm-management/architecture.md b/docs/docs-content/vm-management/architecture.md index 9b39db2fd5..3f199f8801 100644 --- a/docs/docs-content/vm-management/architecture.md +++ b/docs/docs-content/vm-management/architecture.md @@ -1,8 +1,313 @@ --- sidebar_label: "Architecture" title: "Architecture" -description: "Learn about Palette Virtual Machine Orchestrator (VMO) and the architecture used to support it." +description: "Learn about Palette VMO pack and the architecture behind it." hide_table_of_contents: false sidebar_position: 0 tags: ["VMO", "architecture"] --- + +Palette Virtual Machine Orchestrator (VMO) is a composite solution that includes the Palette VMO pack and a variety of +tools and technologies for deploying and managing Virtual Machines (VMs) alongside containerized applications. + +This page offers a reference architecture you can implement to create a standard, repeatable, and highly scalable VMO +solution that can be further adapted and customized to fit specific environments. + +![Diagram that explains the architecture behind Palette VMO.](/vm-mangement_architecture_arch-diagram.webp) + +As referenced in the diagram, Palette VMO leverages the following core technologies: + +- [**Pure Storage FlashArray**](https://www.purestorage.com/products.html) for storage orchestrated by + [**Portworx Enterprise**](https://portworx.com/services/kubernetes-storage/) as the Container Storage Interface (CSI). + Note that, as the bare metal servers contain internal disks, this is not a hyper-converged configuration. + +- [**Canonical MAAS**](https://maas.io/) to automate the Operating System (OS) and Kubernetes deployment on bare metal. + +- [**Cilium**](https://cilium.io/) to provide network services to containerized workloads. You can also use Cilium with + VMs that do not need to be exposed on a VLAN but could be exposed on the pod overlay network instead (in the case of + hybrid workloads). + +- [**Multus**](https://github.com/k8snetworkplumbingwg/multus-cni) to enable VLAN network access to the VMs. + +- [**MetalLB**](https://metallb.universe.tf/) to provide IPs for Kubernetes service resources of type `LoadBalancer`. + +- [**Nginx**](https://nginx.org/en/) to provide Ingress services to [KubeVirt](https://kubevirt.io/), Prometheus, and + application workloads. + +- [**Prometheus**](https://prometheus.io/) to collect metrics and [**Grafana**](https://grafana.com/) to graph the + metrics into monitoring dashboards. + +## Hardware Resources + +Refer to the following table for the minimum and recommended hardware specifications to build a VMO cluster. + +| Component | Minimum | Recommended | Comments | +| -------------------- | -------------------------------------------------- | -------------------------------------------- | -------------------------------------------------------------------------------- | +| **Server** | 2U Rackmount Chassis | 2U Rackmount Chassis | Needs to fit FC adapters and have sufficient NICs. | +| **CPU** | Intel or AMD x64 CPU with 8 cores | Intel or AMD x64 CPU with 8 cores | | +| **RAM** | 24 GB | 256 GB or more | Assumes the deployment of 20 VMs per node multiplied by the median RAM per VM. | +| **Network Adapters** | 2 x 10 Gbps
(data + mgmt) | 2 x 10 Gbps (data)
2 x 10 Gbps (mgmt) | Pod overlay runs on the mgmt network. | +| **Storage Adapters** | 2 x 16 Gbps FC | 2 x 16 Gbps FC | | +| **Server** | Local disk for the OS boot (SAN boot is supported) | Local disk for the OS boot | Boot from SAN requires special consideration due to the multipath configuration. | + +Typically, the cluster control plane nodes do not run any VMO workloads. As a result, they can have lighter hardware +specifications. For example, a server with 4 cores and 8 GB RAM is sufficient for a minimum-specification control plane +node. + +You can increase the hardware specifications based on the total number of control plane and worker nodes you want in the +cluster. Refer to the following table for guidance on control plane node sizing. Note that these recommendations assume +that each cluster has at least three control plane nodes. + +:::info + +A Palette VMO cluster should consist of at least 10 worker nodes to ensure sufficient resource distribution. The +[Portworx Sharedv4 service pod anti-hyperconvergence](https://docs.portworx.com/portworx-enterprise/concepts/shared-volumes#sharedv4-service-pod-anti-hyperconvergence) +setting, which is necessary for seamless storage failover, requires two nodes to host its persistent storage, and these +two nodes cannot run any VMs. As a result, your VMO cluster needs to have enough nodes so that there are always at least +two nodes available for the storage failover workload. + +::: + +| Worker Nodes | Namespaces | CPU Cores | Memory (GB) | +| ------------ | ---------- | --------- | ----------- | +| 10 | 100 | 4 | 8 | +| 25 | 500 | 4 | 16 | +| 100 | 1000 | 8 | 32 | +| 250 | 2000 | 16 | 64 | +| 500 | 4000 | 32 | 128 | + +:::tip + +For Pure Storage FlashArray, either the +[FlashArray//C](https://www.purestorage.com/products/unified-block-file-storage/flasharray-c.html#specifications) or +[FlashArray//X](https://www.purestorage.com/products/unified-block-file-storage/flasharray-x.html#specifications) models +are compatible with Portworx and suitable for Palette VMO. + +::: + +## Software Resources + +Refer to the following table for the versions of software components we recommend using with Palette VMO. + +:::info + +You can make substitutions in our software recommendations to better fit your specific use case. For more information on +how you can adapt the recommended software resources, get in touch with our +[Customer Support](https://spectrocloud.atlassian.net/servicedesk/customer/portals). + +::: + +| Component | Software | Recommended Version | +| ------------------------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- | +| **Bare Metal Deployment** | Canonical MAAS | 3.4.1 | +| **OS** | Canonical Ubuntu | 22.04 LTS | +| **Multipath Solution** | multipath-tools | 0.9.4 | +| **Kubernetes** | Palette eXtended Kubernetes | 1.28.3 | +| **Container Network Interface (CNI)** | Cilium CNI
Multus | 1.15.3
4.0.2 (included in the VMO pack) | +| **Container Storage Interface (CSI)** | Portworx Enterprise CSI
Pure Storage FlashArray | 3.1.1
[Purity//FA 6.1.4 or higher](https://docs.portworx.com/reference/pure-reference/supported-versions/) | +| **Virtualization** | KubeVirt | 1.1.1 (included in the VMO pack) | +| **Image Import** | KubeVirt CDI | 1.58.0 (included in the VMO pack) | +| **Storage Snapshots** | CSI Snapshot Controller | 6.3.2 (included in the VMO pack) | +| **Cluster Balancing** | Descheduler | 0.27.1 | +| **Monitoring** | Prometheus and Grafana | 55.8.3 | +| **Ingress** | Nginx | 1.9.5 | +| **Load Balancing** | MetalLB | 0.13.12 | + +## Network Configuration + +Compared to the standard Kubernetes clusters, networking for Palette VMO can require additional configuration, +especially if your VMs need to be accessible on the existing VLANs. As this configuration requires bypassing the typical +Kubernetes pod networking stack, we use Multus for networking in Palette VMO. + +This also implies additional requirements for the host network configuration of worker nodes in order to have valid +network targets for the VMs. + +Refer to the following table for an example of network configuration. + +| Network | VLAN ID | Network CIDR | Gateway | +| --------------------------- | ------------- | -------------- | ---------- | +| **Bare Metal Deployment** | 0 (native) | 192.168.0.0/22 | | +| **Kubernetes Hosts (mgmt)** | 10 | 172.16.0.0/22 | | +| **End-user Access (data)** | 20 | 10.20.30.0/16 | 10.20.30.1 | +| **Pod Overlay** | N/A (virtual) | 100.64.0.0/18 | | +| **Cluster Services** | N/A (virtual) | 100.64.64.0/18 | | +| **Existing VM VLANs** | 21 – 100 | | | + +MetalLB can use the **End-user Access** network to publish non-virtualized apps in the following ways: + +- As a network on which to advertise IP addresses, as + [Layer 2 advertisements](https://metallb.universe.tf/concepts/layer2/). + +- As a BGP network where it can + [advertise BGP addresses](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.10-Networking-en-US/images/afe4598d665b24b7a193bfd5b4440d48/209_OpenShift_BGP_0122.png) + to BGP routers. + +You can select either approach depending on your network equipment. + +:::tip + +We recommend using a dedicated VLAN for end-user access and not sharing it with VLANs used by VMs. While it is possible +to share the same VLAN for VMs and containers, you must be cautious when this VLAN also has the default gateway. + +::: + +Refer to the following table for an example of a host network configuration, which uses a total of 4 NICs in 2 bonds and +fits with our recommended VMO network configuration. + +| Interface | Type | Contents | VLAN | CIDR | Gateway | +| ---------------- | ------ | -------------------- | ------ | -------------- | ---------- | +| **bond_mgmt** | Bond | enp1s0
enp2s0 | Native | 192.168.0.0/22 | | +| **bond_mgmt.10** | VLAN | bond_mgmt | 10 | 172.16.0.0/22 | | +| **bond_data** | Bond | enp1s1
enp2s1 | Native | | | +| **bond_data.20** | VLAN | bond_data | 20 | 10.20.30.0/16 | 10.20.30.1 | +| **br0** | Bridge | bond_data | Native | | | + +The **br0** bridge interface is used as a master interface by Multus to automatically create VLAN interfaces for VMs. In +this scenario, the master interface must be a bridge, as no other type will work. + +This setup also assumes that the physical servers (the worker nodes) have four physical network interfaces that are +connected to the switch, as described in the following table. + +| Physical Port | Name in OS | Purpose | Switchport Configuration | +| ----------------- | ---------- | ---------------------------------------------------- | ------------------------ | +| **NIC 1, Port 1** | enp1s0 | PXE boot for OS deployment
Management network | Trunk (allowing 0, 10) | +| **NIC 1, Port 2** | enp2s0 | Management network | Trunk (allowing 0, 10) | +| **NIC 2, Port 1** | enp1s1 | Data network | Trunk (allowing 20-100) | +| **NIC 2, Port 2** | enp2s1 | Data network | Trunk (allowing 20-100) | + +For PXE boot, you can use both an untagged or native VLAN 0 network and a tagged network, such as VLAN 5. However, to +ensure a successful PXE boot on a tagged network, we recommend setting the native VLAN network to the tagged VLAN ID on +the switch port (in our example, this would be 5), so that the PXE boot can work with untagged traffic. + +Alternatively, if the server supports UEFI PXE boot and allows you to set the VLAN ID for PXE boot directly, you can +also use this option. In this case, you need to adjust the configuration for **bond_mgmt** to run the `192.168.0.0/22` +on a **bond_mgmt.5** subinterface. However, because it is difficult to achieve PXE boot on a tagged VLAN, we recommend +using a native or untagged VLAN for PXE. + +The **bond_data.20** subinterface provides outbound connectivity, as it has the default gateway. This is the primary way +to publish services from container workloads to the end users. If there are any specific data-center networks that you +want to reach over the **bond_mgmt.10** subinterface instead, you can configure them through static routes on the +`172.16.0.0/22` subnet in Canonical MAAS. Those routes will be automatically applied by MAAS upon server installation. + +For publishing workloads from VMs, you have the following ways: + +- Running the VM on the pod network like containers and publishing the individual VM ports as Kubernetes services on the + ** bond_data.20** network. In this case, you can use MetalLB to assign IP addresses. + +- Placing the entire VM on a VLAN and using Multus to assign the VM to a VLAN on top of the **br0** interface. In this + case, it's the responsibility of the VM (for static IPs) or the network (for DHCP) to assign IP addresses. + +### Limited Alternative + +If your setup is limited to two physical network interfaces, you will need to make some adjustments. Assuming the same +networks and VLANs are used, consider the following network configuration example (configured through Canonical MAAS). + +| Interface | Type | Contents | VLAN | CIDR | Gateway | +| ------------ | ------ | -------------------- | ------ | -------------- | ---------- | +| **bond0** | Bond | enp1s0
enp2s0 | Native | | | +| **bond0.10** | VLAN | bond0 | 10 | 172.16.0.0/22 | | +| **bond0.20** | VLAN | bond0 | 20 | 10.20.30.0/16 | 10.20.30.1 | +| **br0** | Bridge | bond0 | Native | 192.168.0.0/22 | | + +For this setup, it is assumed that the physical servers (worker nodes) are connected to the switch, as described in the +following table. + +| Physical Port | Name in OS | Purpose | Switchport Configuration | +| ----------------- | ---------- | ------------------------------------------------------------------------ | ------------------------------ | +| **NIC 1, Port 1** | enp1s0 | PXE boot for OS deployment
Management network
Data network | Trunk (allowing 0, 10, 20-100) | +| **NIC 1, Port 2** | enp2s0 | Management network
Data network | Trunk (allowing 0, 10, 20-100) | + +In this configuration, VLANs 10 (mgmt) and 20 (data) are not available for use by VMs on the **br0** interface because +the VLAN subinterfaces on the bridge master interface and VLAN subinterfaces on the bridge are mutually exclusive. + +If you need to run VMs on the same VLAN as either the mgmt (10) or the data (20) VLAN, you can facilitate this by +changing the network configuration as follows. + +| Interface | Type | Contents | VLAN | CIDR | Gateway | +| ------------ | ------ | -------------------- | ------ | -------------- | ---------- | +| **bond0** | Bond | enp1s0
enp2s0 | Native | | | +| **bond0.10** | VLAN | bond0 | 10 | 172.16.0.0/22 | | +| **br0** | Bridge | bond0 | Native | 192.168.0.0/22 | | +| **br0.20** | VLAN | br0 | 20 | 10.20.30.0/16 | 10.20.30.1 | + +In this example, VLAN 20 is defined as a subinterface of **br0** instead of on **bond0**. This configuration allows +virtual machines to also run on VLAN 20 without conflicts. + +## Storage Configuration + +This section provides the minimum requirements for Kubernetes storage on KubeVirt, as well as an example implementation +based on Portworx and Pure Flash Array, which were validated for this reference architecture. + +:::info + +While we have validated the Portworx and Pure Flash Array solution, there are other viable approaches. You can also +configure a reliable VMO cluster with other storage solutions, such as NetApp, DellEMC PowerFlex, and Rook-Ceph. + +::: + +### Live Migration + +The core requirement for Kubernetes storage for KubeVirt is the support for persistent volumes with a `ReadWriteMany` +(RWX) access mode. This is because a VM live migration is possible only with RWX volumes, and live migration is a common +requirement for running VMs in production requirements. + +Most storage providers support RWX access for persistent volumes in one access mode, either `Block` or `FileSystem`. +Refer to the following list of storage providers that offer the necessary support. + +| Storage Provider | Version | RWX Access Mode | +| ------------------------------ | ----------- | --------------- | +| Portworx Enterprise | 2.x and 3.x | `FileSystem` | +| Rook-Ceph | 1.11.x | `Block` | +| Longhorn | 1.5.x | `FileSystem` | +| Netapp Trident | 23.x | `FileSystem` | +| Dell CSM Operator - PowerFlex | 2.10.0 | `Block` | +| Dell CSM Operator - PowerMax | 2.10.0 | `Block` | +| Dell CSM Operator - PowerStore | 2.10.0 | `Block` | + +### Kubernetes Upgrades + +Distributed Kubernetes storage solutions, such as Rook-Ceph and Portworx, enable hyper-converged infrastructures where +the storage is provided by aggregating local disks in servers (or LUNs from traditional storage arrays) and providing +distributed storage logic on top of it, similar to VMware vSAN. When using this approach for Palette-managed clusters, +you need to take additional steps to prevent data loss during Kubernetes upgrades. + +When upgrading OS and Kubernetes versions, Palette used the repave method. During the repave, a cluster node is +gracefully removed from the cluster and then replaced by a new node with the upgraded OS and Kubernetes. To learn more +about the repave behavior in Palette, refer to +[Repave Behavior and Configuration](https://docs.spectrocloud.com/clusters/cluster-management/node-pool/#repave-behavior-and-configuration). + +This presents a challenge for hyper-converged clusters because every node repave causes a significant amount of storage +input and output as the data from the lost node is rebuilt onto the new node. To ensure that bare metal Palette clusters +with hyper-converged storage can successfully perform repaves without storage issues, you need to set a fixed worker +node pool in Canonical MAAS. Refer to our +[Reliable Distributed Storage for Bare-Metal CAPI Clusters](https://thenewstack.io/reliable-distributed-storage-for-bare-metal-capi-clusters/) +article for an example storage implementation. + +### Example Solution + +For our validated Palette VMO architecture, we've selected Portworx as the CSI for the back-end Pure Storage +[FlashArray//C](https://www.purestorage.com/products/unified-block-file-storage/flasharray-c.html#specifications), as it +provides some unique benefits with regard to performance, efficiency, and ease of management: + +- Both products are made and maintained by the same company, and therefore + [work well together](https://docs.portworx.com/cloud-references/auto-disk-provisioning/pure-flash-array/#architecture). + Portworx is the [designated CSI](https://github.com/purestorage/pso-csi/tree/master#readme) for managing Pure Storage + arrays from Kubernetes. + +- Portworx provides NFS-based shared volumes (RWX) based on storage pools that are backed by FlashArray storage. + +- As Portworx is initialized on each worker node, it automatically requests a LUN from FlashArray to join the shared + cluster storage pool. Persistent volumes are then served from the shared storage pool. + +- FlashArray performs deduplication on the back end to increase storage efficiency. Since Portworx creates two copies of + the data for resiliency, the deduplication on the back-end array restores some of that capacity. + +- Portworx can automatically reassign LUNs from FlashArray to other Kubernetes nodes, allowing cluster repaves to happen + without rebuilding any data. + +## Next Steps + +Now that you understand the architecture behind Palette VMO and how the different technologies work together to enable +clusters capable of combining VMs and containerized applications, continue exploring VMO by reviewing our +[Create a VMO Profile](./create-vmo-profile.md) and [Create and Manage VMO Cluster](./create-manage-vmo-cluster.md) +guides. diff --git a/docs/docs-content/vm-management/create-manage-vm/_category_.json b/docs/docs-content/vm-management/create-manage-vm/_category_.json index 094470741d..e7e7c54966 100644 --- a/docs/docs-content/vm-management/create-manage-vm/_category_.json +++ b/docs/docs-content/vm-management/create-manage-vm/_category_.json @@ -1,3 +1,3 @@ { - "position": 10 + "position": 40 } diff --git a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-disk-templates.md b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-disk-templates.md index 412cefec9b..99286f7b20 100644 --- a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-disk-templates.md +++ b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/create-disk-templates.md @@ -335,6 +335,6 @@ This guide demonstrates how to implement your own disk and VM templates using Ku To learn more about the Palette VMO, we encourage you to check out the reference resources below. -- [Virtual Machine Orchestrator Pack](../../vm-packs-profiles/vm-packs-profiles.md) +- [Palette VMO](../../vm-management.md) - [Deploy VM From a Template](../deploy-vm-from-template.md) diff --git a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/vm-oversubscription.md b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/vm-oversubscription.md index d30dcf163b..50052e9b80 100644 --- a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/vm-oversubscription.md +++ b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/vm-oversubscription.md @@ -33,7 +33,7 @@ greater than 1 has the effect of requesting less CPU from Kubernetes for each VM ### Instructions -1. +1. Certain workloads that require a predictable latency and enhanced performance would benefit from obtaining dedicated CPU resources. KubeVirt relies on the Kubernetes CPU manager to pin vCPUs to the physical host’s CPUs. To learn more, refer diff --git a/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md b/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md index e8f4c0e595..87e5f0aaef 100644 --- a/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md +++ b/docs/docs-content/vm-management/create-manage-vm/migrate-vm-to-different-node.md @@ -13,8 +13,8 @@ node to another without any noticeable downtime. Successful live migrations rely on appropriately configured storage and networking, and live migration must be enabled as a feature gate. Live migration is enabled by default in the `feature-gates` section of the KubeVirt configuration -file that is part of the **Virtual Machine Orchestrator** pack. Refer to -[Feature Gates](../vm-management.md#feature-gates) for more information. +file that is part of the **Virtual Machine Orchestrator** pack. Refer to [Feature Gates](../vm-management.md) for more +information. Live migration is used with rolling Kubernetes upgrades and workload balancing. To avoid interrupting a VM when a node is placed into maintenance or upgraded, all VM instances require a `LiveMigrate` eviction strategy. diff --git a/docs/docs-content/vm-management/create-manage-vmo-cluster.md b/docs/docs-content/vm-management/create-manage-vmo-cluster.md new file mode 100644 index 0000000000..0ca2bf93db --- /dev/null +++ b/docs/docs-content/vm-management/create-manage-vmo-cluster.md @@ -0,0 +1,9 @@ +--- +sidebar_label: "Create and Manage VMO Cluster" +title: "Create and Manage VMO Cluster" +description: "Learn how to create and manage Palette VMO clusters." +icon: " " +hide_table_of_contents: false +sidebar_position: 20 +tags: ["vmo"] +--- diff --git a/docs/docs-content/vm-management/create-vmo-profile.md b/docs/docs-content/vm-management/create-vmo-profile.md index fec377cf36..669905a0ae 100644 --- a/docs/docs-content/vm-management/create-vmo-profile.md +++ b/docs/docs-content/vm-management/create-vmo-profile.md @@ -4,13 +4,13 @@ title: "Create a VMO Profile" description: "Learn how to create a cluster profile to utilize Palette Virtual Machine Orchestrator capabilities." icon: " " hide_table_of_contents: false -sidebar_position: 5 +sidebar_position: 10 tags: ["vmo"] --- The **Virtual Machine Orchestrator** pack conveniently includes several components and automatically installs the [Spectro Proxy](../integrations/frp.md) pack when you use the default profile configuration. To learn about pack -components, refer to [Virtual Machine Orchestrator Pack](./vm-packs-profiles/vm-packs-profiles.md). +components, refer to [Palette VMO](./vm-management.md). ## Limitations diff --git a/docs/docs-content/vm-management/rbac/_category_.json b/docs/docs-content/vm-management/rbac/_category_.json index 455b8e4969..c3460c6dbd 100644 --- a/docs/docs-content/vm-management/rbac/_category_.json +++ b/docs/docs-content/vm-management/rbac/_category_.json @@ -1,3 +1,3 @@ { - "position": 20 + "position": 30 } diff --git a/docs/docs-content/vm-management/rbac/rbac.md b/docs/docs-content/vm-management/rbac/rbac.md new file mode 100644 index 0000000000..718314c10f --- /dev/null +++ b/docs/docs-content/vm-management/rbac/rbac.md @@ -0,0 +1,9 @@ +--- +sidebar_label: "RBAC" +title: "Role-based access control" +description: "Learn about the different RBAC capabilities Palette VMO has to offer." +icon: " " +hide_table_of_contents: false +sidebar_position: 0 +tags: ["vmo"] +--- diff --git a/docs/docs-content/vm-management/vm-management.md b/docs/docs-content/vm-management/vm-management.md index ba7f669c5f..8fa4740b19 100644 --- a/docs/docs-content/vm-management/vm-management.md +++ b/docs/docs-content/vm-management/vm-management.md @@ -10,110 +10,47 @@ sidebar_custom_props: tags: ["vmo"] --- -Palette Virtual Machine Orchestrator (VMO) provides a unified platform for managing containerized and virtualized -applications. This solution allows organizations to onboard, deploy, manage, and scale VMs within the same cluster as -their containerized applications. Palette VM Orchestrator simplifies managing infrastructure, improves resource -utilization, and removes the cost of having a hypervisor. +Palette Virtual Machine Orchestrator (VMO) provides a unified platform for deploying, managing, and scaling Virtual +Machines (VMs) and containerized applications within Kubernetes clusters deployed on bare-metal servers in data centers. -![A drawing of VMs deployed to Palette](/docs_vm-mangement_vmo-diagram.webp) +Palette VMO simplifies infrastructure management, improves resource utilization, and eliminates hypervisor costs. -## Use Cases - -Palette VM Orchestrator is particularly suitable in the following scenarios: - -- Organizations that want to remove their virtualization infrastructure due to an aging environment or to reduce costs. - By using Palette VM Orchestrator, legacy applications and modern, containerized applications can be deployed on VMs. - -- Edge locations with a few VMs deployed and where a hypervisor is no longer desired. - -## Prerequisites - -Palette Virtual Machine Orchestrator requires the following: - -- Palette version 3.3.0 or higher. - -- For data centers, production VMs are supported on bare metal Kubernetes clusters deployed on Canonical MAAS. To learn - how to configure MAAS and create MAAS clusters in Palette, refer to the - [Deploy to MAAS](../clusters/data-center/maas/create-manage-maas-clusters.md) guide. - -- For Edge deployment, your Edge cluster profile must have a CSI pack. For more information, refer to - [Create VMO Profile](./create-vmo-profile.md#create-the-profile) in the **Edge** tab. - -- VMs with Persistent Volume Claim (PVC) must have a StorageClass that supports `ReadWriteMany` (`RWX`) access mode for - seamless live migration to a different node - either when triggered manually or during a Kubernetes upgrades. - - :::warning +![A drawing of VMs deployed to Palette](/vm-mangement_vmo-diagram.webp) - In environments that use nested virtualization, where VMs operate inside of VMs due to lack of hardware to host VMs, - it is technically possible to operate VMs in Kubernetes by setting the KubeVirt resource `useEmulation` to true. - However, we do not recommend this approach. - - ::: - -## Get Started With VM Orchestrator - -To get started, review [Virtual Machine Orchestrator Pack](vm-packs-profiles/vm-packs-profiles.md) to learn about its -components. - -Review [Create a VMO Profile](./create-vmo-profile.md) and -[Add Roles and Role Bindings](./rbac/add-roles-and-role-bindings.md) to learn how to create the cluster profile and add -roles and permissions that allow users to create and manage Virtual Machines (VMs). - -Palette VM Orchestrator provides various methods to quickly deploy VMs from out-of-the-box templates or from your -organization's templates. To learn more about using and creating templates, review -[Deploy VM From a Template](create-manage-vm/deploy-vm-from-template.md) and -[Create a VM Template](create-manage-vm/advanced-topics/create-vm-template.md). +## Use Cases -While you can import template disks from external locations when deploying a VM, it can be inefficient. Instead, you can -leverage the `DataVolume` resource to import template disks once and then clone them when deploying new VMs. Review the -[Create Disk Templates](create-manage-vm/advanced-topics/create-disk-templates.md) guide for more information. +You will benefit from Palette VMO in the following cases: -## Feature Gates +- You are planning to shift from VMs to containers gradually and want to continue running both during the transition. -Palette VM Orchestrator utilizes open-source KubeVirt as a component of the **Virtual Machine Orchestrator** pack to -manage VMs and enables the following KubeVirt feature gates by default: +- Your established infrastructure combines containers and VMs, and you want to manage them more effectively. -- LiveMigration -- Snapshot -- HotplugVolumes -- VMExport -- ExpandDisks -- HotplugNICs -- VMLiveUpdateFeatures +- You are integrating new VM-based applications into an existing containerized infrastructure. -KubeVirt offers other feature gates you may find useful and which you can enable using -[Kubernetes feature gates](https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/). To enable -more KubeVirt feature gates, you can modify the `kubevirt.kubevirtResource.additonalFeatureGates` parameter in the -**Virtual Machine Orchestrator** manifest. +- You are managing edge locations with VM-based workloads and would like to stop using a hypervisor. -For more information on KubeVirt feature gates, refer to the -[KubeVirt user guide](https://kubevirt.io/user-guide/cluster_admin/activating_feature_gates/). +## Get Started -## Kubevirt Plugins +To get started with Palette VMO, review the [Architecture](./architecture.md) page to learn about the different +components involved in building a full-fledged VMO solution. Then, review the +[Create a VMO Profile](./create-vmo-profile.md) guide to prepare everything you need to deploy your first VMO cluster. -VMO includes the following KubeVirt plugins: +Once your VMO cluster is up and running, refer to the [Create and Manage VMs](./create-manage-vm/create-manage-vm.md) +section for information on deploying VMs from existing Palette templates and performing standard VM operations. +Alternatively, review the [Advanced Topics](./create-manage-vm/advanced-topics/advanced-topics.md) section to understand +how you can create VM and disk templates, manage the VM resources, and perform other advanced operations. -- [Kubevirt-Velero](https://github.com/kubevirt/kubevirt-velero-plugin) - VMO includes the Kubevirt-Velero plugin, which - allows you to back up and restore VMs using Velero. This installs Velero snapshot controller and Custom Resource - Definitions required by Velero. Refer to the - [Virtual Machine Orchestrator Pack](./vm-packs-profiles/vm-packs-profiles.md) guide for more information. +Finally, refer to the [Role-based access control (RBAC)](./rbac/rbac.md) section for information on configuring roles +and permissions for your VMs. ## Resources -- [Virtual Machine Orchestrator Pack](vm-packs-profiles/vm-packs-profiles.md) +- [Architecture](./architecture.md) - [Create a VMO Profile](./create-vmo-profile.md) -- [Add Roles and Role Bindings](./rbac/add-roles-and-role-bindings.md) - -- [Create and Manage VMs](create-manage-vm/create-manage-vm.md) - -- [Deploy VM from a Template](create-manage-vm/deploy-vm-from-template.md) - -- [Create a VM Template](create-manage-vm/advanced-topics/create-vm-template.md) - -- [Create Disk Templates](create-manage-vm/advanced-topics/create-disk-templates.md) +- [Create and Manage VMs](./create-manage-vm/create-manage-vm.md) -- [VM Roles and Permissions](./rbac/vm-roles-permissions.md) +- [Advanced Topics](./create-manage-vm/advanced-topics/advanced-topics.md) -- [KubeVirt user guide](https://kubevirt.io/user-guide/) +- [RBAC](./rbac/rbac.md) diff --git a/docs/docs-content/vm-management/vm-packs-profiles/_category_.json b/docs/docs-content/vm-management/vm-packs-profiles/_category_.json deleted file mode 100644 index 3fca6fb9f9..0000000000 --- a/docs/docs-content/vm-management/vm-packs-profiles/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 0 -} diff --git a/docs/docs-content/vm-management/vm-packs-profiles/vm-packs-profiles.md b/docs/docs-content/vm-management/vm-packs-profiles/vm-packs-profiles.md deleted file mode 100644 index 065dbeb3a7..0000000000 --- a/docs/docs-content/vm-management/vm-packs-profiles/vm-packs-profiles.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -sidebar_label: "Virtual Machine Orchestrator Pack" -title: "Virtual Machine Orchestrator Pack" -description: "Learn about components of the Virtual Machine Orchestrator pack." -icon: " " -hide_table_of_contents: false -tags: ["vmo"] ---- - -The **Virtual Machine Orchestrator** pack provides a single-pack experience that consolidates all the dependencies -needed to deploy and manage VMs in your Kubernetes host cluster. You use **Virtual Machine Orchestrator** pack to create -a VMO cluster profile. The pack's components are described below. All the components are enabled by default in the -`charts:` section of the pack YAML configuration file. - -- **Descheduler** - Provides the ability to live migrate a VM to a different node in the node pool when the node is - placed in maintenance mode. - -- **Snapshot Controller** - Provides the ability to create VM snapshots. - - :::warning - - The snapshot controller is installed automatically when you initiate or schedule a backup for your cluster. If you are - deploying the VMO pack and your cluster already has a backup schedule configured or you have taken an on-demand backup - in the past, then the snapshot controller will already be installed. To prevent any resource conflicts, you can - disable the snapshot controller in the pack YAML file - - ```yaml - charts: - virtual-machine-orchestrator: - snapshot-controller: - enabled: false - ``` - - ::: - -- **Spectro VM Dashboard**: Enables access to a web console so you can manage and monitor your VMs. The console is - accessible from the **Virtual Machines** tab that appears on the cluster overview page when using Palette Virtual - Machine Orchestrator (VMO). The dashboard provides a web interface to create and manage VMs in your Kubernetes - cluster. - -- **KubeVirt**: Allows you to create VMs within a Kubernetes cluster using open-source [KubeVirt](https://kubevirt.io). - KubeVirt provides feature gates you can enable in the Virtual Machine Orchestrator pack YAML file. To learn which - feature gates Palette enables by default and how you can enable additional feature gates, check out the - [Feature Gates](../vm-management.md#feature-gates) section. - - KubeVirt extends Kubernetes with additional virtualization resource types using Kubernetes Custom Resource Definitions - (CRD) API. KubeVirt also includes controllers and agents that provide VM management capabilities on the cluster. - Through KubeVirt you can use the Kubernetes API to manage VM resources similar to the way you manage Kubernetes - resources. - -- **KubeVirt CDI**: Provides persistent storage for Kubernetes clusters. It enables Persistent Volume Claims (PVCs) to - be used as disks for KubeVirt VMs. - -- **Volume Snapshot Controller**: A Kubernetes plugin that watches VolumeSnapshot CRD objects and manages the creation - and deletion of volume snapshots. A snapshot represents a point-in-time copy of a volume. - -- **Multus CNI**: A Controller Network Interface (CNI) plugin that enables multiple network interfaces to attach to - Kubernetes pods. In this context, it is used to attach VM networks to the launched VM. - -:::info - -The **Spectro Proxy** pack enables the use of a reverse proxy with a Kubernetes cluster and is automatically installed -when you create the cluster with the default **Proxied** setting for **Access** during cluster profile creation. Check -out the [Spectro Proxy](../../integrations/frp.md) pack documentation to learn more. - -::: - -Administrators can configure the out-of-the-box add-on packs, cluster profiles, and VM templates that include commonly -used operating systems, or they can define their own VM templates to share with users. - -## Resources - -- [Spectro Proxy](../../integrations/frp.md) - -- [Feature Gates](../vm-management.md#feature-gates) diff --git a/static/assets/docs/images/docs_vm-mangement_vmo-diagram.webp b/static/assets/docs/images/docs_vm-mangement_vmo-diagram.webp deleted file mode 100644 index c06e38a9db7971247290dbeb2a39f4a841b8c1a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52042 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 diff --git a/static/assets/docs/images/vm-mangement_architecture_arch-diagram.webp b/static/assets/docs/images/vm-mangement_architecture_arch-diagram.webp new file mode 100644 index 0000000000000000000000000000000000000000..2a3f8d90f4ad374af70a5fecaa232c3b0fbe7bcb GIT binary patch literal 36200 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 ^#Zywi&Nez7tppCIPyr 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 literal 0 HcmV?d00001 diff --git a/styleguide/spectro-cloud-style-guide.md b/styleguide/spectro-cloud-style-guide.md index 8e072eeab4..03e4d56ef7 100644 --- a/styleguide/spectro-cloud-style-guide.md +++ b/styleguide/spectro-cloud-style-guide.md @@ -280,12 +280,10 @@ heading. Include two lines between each item. - [Create and Manage VMs](/vm-management/create-manage-vm) -- [Deploy VM from a Template](/vm-management/create-manage-vm/standard-vm-operations/deploy-vm-from-template) +- [Deploy VM from a Template](/vm-management/create-manage-vm/deploy-vm-from-template) - [Create a VM Template](/vm-management/create-manage-vm/create-vm-template) -- [Standard VM Operations](/vm-management/create-manage-vm/standard-vm-operations) - - [VM Roles and Permissions](/vm-management/vm-roles-permissions) ### Metadata From 5df892a4d68da190a4b3d855decfa97e0644856b Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Mon, 1 Jul 2024 09:55:07 -0700 Subject: [PATCH 10/26] docs: progress on vmo --- .../advanced-topics/vm-oversubscription.md | 46 +++++++++++-------- .../create-manage-vm/clone-vm.md | 11 +++++ .../create-manage-vm/create-manage-vm.md | 13 ------ .../deploy-vm-from-template.md | 11 +++++ docs/docs-content/vm-management/rbac/rbac.md | 9 ++++ 5 files changed, 59 insertions(+), 31 deletions(-) diff --git a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/vm-oversubscription.md b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/vm-oversubscription.md index 50052e9b80..ca9bc3df11 100644 --- a/docs/docs-content/vm-management/create-manage-vm/advanced-topics/vm-oversubscription.md +++ b/docs/docs-content/vm-management/create-manage-vm/advanced-topics/vm-oversubscription.md @@ -1,6 +1,6 @@ --- sidebar_label: "Over-commit Resources to Enhance VM Performance" -title: "VM Performance" +title: "Over-commit Resources to Enhance VM Performance" description: "Learn how to improve VM performance by maximizing virtual machine CPU and memory using Palette." icon: " " hide_table_of_contents: false @@ -23,30 +23,36 @@ allocated to VMs than there are physical resources on the system. Kubevirt offers the `cpuAllocationRatio` in its Custom Resource Definitions (CRD). This ratio is used to normalize the amount of CPU time the pod will request based on the number of virtual CPUs (vCPUs). -Using the following algorithm, when `cpuAllocationRatio` is set to 1, the full amount of vCPUs are requested for the -pod: `pod CPU request = number of vCPUs * 1/cpuAllocationRatio`. The `cpuAllocationRatio` is global, so setting it to -greater than 1 has the effect of requesting less CPU from Kubernetes for each VM. - ### Prerequisites - An active VMO cluster in Palette. -### Instructions +### Procedure + +1. Log in to [Palette](https://console.spectrocloud.com). + +2. From the left **Main Menu**, click on **Profiles**. + +3. Select the profile you use to create the cluster with the VMO pack. -1. +4. Select the VMO add-on layer of the cluster profile. -Certain workloads that require a predictable latency and enhanced performance would benefit from obtaining dedicated CPU -resources. KubeVirt relies on the Kubernetes CPU manager to pin vCPUs to the physical host’s CPUs. To learn more, refer -to [Dedicated CPU Resources](https://kubevirt.io/user-guide/compute/dedicated_cpu_resources/) and -[Resources Requests and Limits](https://kubevirt.io/user-guide/compute/virtual_hardware/#resources-requests-and-limits) -Kubevirt documentation. +5. Using the following algorithm, when `cpuAllocationRatio` is set to 1, the full amount of vCPUs are requested for the + pod: `pod CPU request = number of vCPUs * 1/cpuAllocationRatio`. The `cpuAllocationRatio` is global, so setting it to + greater than 1 has the effect of requesting less CPU from Kubernetes for each VM. + + Certain workloads that require a predictable latency and enhanced performance would benefit from obtaining dedicated + CPU resources. KubeVirt relies on the Kubernetes CPU manager to pin vCPUs to the physical host’s CPUs. To learn more, + refer to [Dedicated CPU Resources](https://kubevirt.io/user-guide/compute/dedicated_cpu_resources/) and + [Resources Requests and Limits](https://kubevirt.io/user-guide/compute/virtual_hardware/#resources-requests-and-limits) + Kubevirt documentation. :::warning -- We do not recommend overcommitting CPUs in a production environment without extensive testing. Applications that use - 100 percent of processing resources may become unstable in overcommitted environments. +- We do not recommend over-committing CPUs in a production environment without extensive testing. Applications that use + 100 percent of processing resources may become unstable in over-committed environments. -- Ensure you don't overcommit guest VMs on more than the physical number of processing cores. For example, a guest VM +- Ensure you don't over-commit guest VMs on more than the physical number of processing cores. For example, a guest VM with four vCPUs should only be deployed on a host physical machine with a quad-core processor instead of a dual-core processor. @@ -54,7 +60,7 @@ Kubevirt documentation. ::: -## Memory Overcommit +## Over-Commit Memory KubeVirt allows you to assign more or less memory to a VM than a VM requests to Kubernetes. You may want to overcommit VM memory if you have a cluster or a few nodes that are dedicated to running VMs. In this case, overcommitting memory @@ -63,9 +69,13 @@ makes use of all the memory in the nodes regardless of reserved or requested mem To learn about options for memory overcommitment, refer to [Node Overcommit](https://kubevirt.io/user-guide/compute/node_overcommit/) KubeVirt resource. -You can make several changes to reduce the memory footprint and overcommit the per-VMI memory overhead. +### Prerequisites + +### Procedure + +You can make several changes to reduce the memory footprint and over-commit the per-VMI memory overhead. -- Enable guest overhead overcommit by setting `spec.domain.resources.overcommitGuestOverhead` to true. +- Enable guest overhead over-commit by setting `spec.domain.resources.overcommitGuestOverhead` to true. - Enable guest memory by setting `spec.domain.memory.guest` to a value higher than `spec.domain.resources.requests.memory`, as shown in the example. diff --git a/docs/docs-content/vm-management/create-manage-vm/clone-vm.md b/docs/docs-content/vm-management/create-manage-vm/clone-vm.md index 876aae03bf..8c84f77179 100644 --- a/docs/docs-content/vm-management/create-manage-vm/clone-vm.md +++ b/docs/docs-content/vm-management/create-manage-vm/clone-vm.md @@ -23,6 +23,17 @@ clone a VM for the following reasons: - An active cluster in Palette with the Virtual Machine Orchestrator (VMO) pack. +- Outbound internet connectivity for port 443 is allowed so that you and your applications can connect with the Spectro + Cloud reverse proxy. + +- Users or groups must be mapped to a Virtual Machine RBAC role. You can create a custom role through a manifest and use + Palette's RoleBinding feature to associate users and groups with the role. Refer to the + [Create Role Bindings](../../clusters/cluster-management/cluster-rbac.md#create-role-bindings) guide to learn more. + +- A namespace for VMs. Although you can deploy VMs from the default namespace, we recommend creating at least one + namespace dedicated to VMs as a way to organize and manage them. To learn how to create a namespace, check out + [Create a Namespace](../../clusters/cluster-management/namespace-management.md#create-a-namespace). + ## Clone a VM 1. Log in to [Palette](https://console.spectrocloud.com). diff --git a/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md b/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md index d8dc57c7a0..8268488eb0 100644 --- a/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md +++ b/docs/docs-content/vm-management/create-manage-vm/create-manage-vm.md @@ -9,19 +9,6 @@ tags: ["vmo"] Palette Virtual Machine Orchestrator (VMO) allows you to deploy and manage Virtual Machines (VMs) alongside containerized applications. -## Prerequisites - -- Outbound internet connectivity for port 443 is allowed so that you and your applications can connect with the Spectro - Cloud reverse proxy. - -- Users or groups must be mapped to a Virtual Machine RBAC role. You can create a custom role through a manifest and use - Palette's RoleBinding feature to associate users and groups with the role. Refer to the - [Create Role Bindings](../../clusters/cluster-management/cluster-rbac.md#create-role-bindings) guide to learn more. - -- A namespace for VMs. Although you can deploy VMs from the default namespace, we recommend creating at least one - namespace dedicated to VMs as a way to organize and manage them. To learn how to create a namespace, check out - [Create a Namespace](../../clusters/cluster-management/namespace-management.md#create-a-namespace). - ## VM Creation You can create a VM in one of the following ways: diff --git a/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md b/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md index fa33737ee8..35daec7d43 100644 --- a/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md +++ b/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md @@ -15,6 +15,17 @@ organization's administrator provides. - Configured Virtual Machine Orchestrator profile applied to your cluster. Review [Create a VMO Profile](../create-vmo-profile.md) to configure the dashboard. +- Outbound internet connectivity for port 443 is allowed so that you and your applications can connect with the Spectro + Cloud reverse proxy. + +- Users or groups must be mapped to a Virtual Machine RBAC role. You can create a custom role through a manifest and use + Palette's RoleBinding feature to associate users and groups with the role. Refer to the + [Create Role Bindings](../../clusters/cluster-management/cluster-rbac.md#create-role-bindings) guide to learn more. + +- A namespace for VMs. Although you can deploy VMs from the default namespace, we recommend creating at least one + namespace dedicated to VMs as a way to organize and manage them. To learn how to create a namespace, check out + [Create a Namespace](../../clusters/cluster-management/namespace-management.md#create-a-namespace). + ## Deploy VM from a Template These steps will help guide you to deploy a VM from an out-of-the-box VM template. diff --git a/docs/docs-content/vm-management/rbac/rbac.md b/docs/docs-content/vm-management/rbac/rbac.md index 718314c10f..7e656aa522 100644 --- a/docs/docs-content/vm-management/rbac/rbac.md +++ b/docs/docs-content/vm-management/rbac/rbac.md @@ -7,3 +7,12 @@ hide_table_of_contents: false sidebar_position: 0 tags: ["vmo"] --- + +Access to the Virtual Machines (VM) is governed by Role-Based Access Control (RBAC). You must create roles and role +bindings and role bindings and assign them to users before they are allowed to create or manage VMs. + +## Resources + +- [Add Roles and Role Bindings](./add-roles-and-role-bindings.md) +- [Configure OIDC](./configure_OIDC.md) +- [VM Roles and Permissions](./vm-roles-permissions.md) From f2ab6dd36012f3434f70fb7a403d6e67bb756862 Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Thu, 18 Jul 2024 15:45:40 -0700 Subject: [PATCH 11/26] docs: document options in update configurations --- .../deploy-vm-from-template.md | 15 ++++---- .../update-vm-configuration.md | 35 ++++++++++++++----- .../vm-management/create-vmo-profile.md | 2 +- 3 files changed, 36 insertions(+), 16 deletions(-) diff --git a/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md b/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md index 35daec7d43..55a6d55200 100644 --- a/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md +++ b/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md @@ -12,15 +12,19 @@ organization's administrator provides. ## Prerequisites -- Configured Virtual Machine Orchestrator profile applied to your cluster. Review +- An active cluster with the Virtual Machine Orchestrator (VMO) pack. Review [Create a VMO Profile](../create-vmo-profile.md) to configure the dashboard. + - If this is an Edge cluster with VMs as Edge hosts, such as a VM in VMWare vCenter, the VM Edge host must support + hardware-assisted virtualization to the guest Operating System (OS). + - Outbound internet connectivity for port 443 is allowed so that you and your applications can connect with the Spectro Cloud reverse proxy. -- Users or groups must be mapped to a Virtual Machine RBAC role. You can create a custom role through a manifest and use - Palette's RoleBinding feature to associate users and groups with the role. Refer to the - [Create Role Bindings](../../clusters/cluster-management/cluster-rbac.md#create-role-bindings) guide to learn more. +- Users or groups must be mapped to a Virtual Machine Role-Based Access Control (RBAC) role. You can create a custom + role through a manifest and use Palette's RoleBinding feature to associate users and groups with the role. Refer to + the [Create Role Bindings](../../clusters/cluster-management/cluster-rbac.md#create-role-bindings) guide to learn + more. - A namespace for VMs. Although you can deploy VMs from the default namespace, we recommend creating at least one namespace dedicated to VMs as a way to organize and manage them. To learn how to create a namespace, check out @@ -40,8 +44,7 @@ These steps will help guide you to deploy a VM from an out-of-the-box VM templat 5. From the **Virtual Machines** tab that appears, click **New Virtual Machine**. -6. Click the **New Virtual Machine** button. Available templates are displayed based on supported Operating Systems - (OS). +6. Click the **New Virtual Machine** button. Available templates are displayed based on supported OS. 7. You can deploy from a template or create an empty VM as follows: diff --git a/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md index 81e13e1bf4..0d60ab4d2b 100644 --- a/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md +++ b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md @@ -13,7 +13,8 @@ You can add storage and additional network interfaces to your virtual machines ( ## Add Disk Storage KubeVirt allows hot plugging additional storage into a running VM. Both block and file system volume types are -supported. +supported. Disks are "hot plugged" into your VMs, meaning that you do not need to power off the VM in order to add +disks. ### Prerequisites @@ -31,17 +32,33 @@ supported. network interface. The interface type determines out-of-the-box operating system (OS) support and disk performance. Choose from the - following: + following. - - **virtio**: Optimized for best performance, but the operating system may require additional Virtio drivers. + | Interface type | Description | + | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | virtio | Optimized for best performance, but the operating system may require additional Virtio drivers. | + | sata | Most operating systems support Serial ATA (SATA). However it offers lower performance. | + | scsi | A paravirtualized Internet Small Computer System Interface (iSCSI) HDD driver that offers similar functionality to the virtio-block device but with some additional enhancements. In particular, this driver supports adding hundreds of devices and names devices using the standard SCSI device naming scheme. | - - **sata**: Most operating systems support Serial ATA (SATA). However it offers lower performance. +5. Next, specify the access mode for your disk. - - **scsi**: A paravirtualized Internet Small Computer System Interface (iSCSI) HDD driver that offers similar - functionality to the virtio-block device but with some additional enhancements. In particular, this driver supports - adding hundreds of devices and names devices using the standard SCSI device naming scheme. + | Access mode | Description | + | --------------------- | ---------------------------------------------------------------------------- | + | Read-Write-Once (RWO) | Ensures that only one client can write to the volume at any given time. | + | Read-Write-Many (RWX) | Allows multiple clients to read from and write to the volume simultaneously. | + | Read-Only-Many (ROX) | Permits multiple clients to read data only. | -5. Click **Add** when you are done. +6. Specify the volume mode for your disk. + + | Volume mode | Description | + | ----------- | ------------------------------------------------------------------------------------------------------------------------------------ | + | Filesystem | The volume is formatted with a filesystem. The OS manages the volume using a directory structure, where files are stored in folders. | + | Block | The volume is presented as a raw block device. The OS manages the volume at the block level, without any filesystem structure. | + +7. If you'd like to allocate storage to the VM right away, check **Enable preallocation**. Otherwise, the storage is + allocated to your VM as data is written to the storage. + +8. Click **Add** when you are done. ### Validate @@ -63,7 +80,7 @@ created a default `NetworkAttachmentDefinition` CRD. For more information, refer ### Prerequisites -- A deployed VM. +- A deployed VM that in i ### Add an Interface diff --git a/docs/docs-content/vm-management/create-vmo-profile.md b/docs/docs-content/vm-management/create-vmo-profile.md index 669905a0ae..456d8e0b05 100644 --- a/docs/docs-content/vm-management/create-vmo-profile.md +++ b/docs/docs-content/vm-management/create-vmo-profile.md @@ -28,7 +28,7 @@ components, refer to [Palette VMO](./vm-management.md). - A Palette permission key `create` for the resource `clusterProfile`. -- If you are creating an Edge cluster profile, your profile must have a Container Storage Interface pack. +- If you are creating an Edge cluster profile, your profile must have a Container Storage Interface (CSI) pack. ## Create the Profile From 01eb29e3ab64e2838696edc3acfbe69ba42f10e7 Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Fri, 19 Jul 2024 09:49:10 -0700 Subject: [PATCH 12/26] docs: edit prerequisites --- .../create-manage-vm/update-vm-configuration.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md index 0d60ab4d2b..b4caa7805c 100644 --- a/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md +++ b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md @@ -18,7 +18,7 @@ disks. ### Prerequisites -- A deployed VM. +- A deployed VM in an active cluster that has the Virtual Machine Orchestrator (VMO) pack. ### Add a Disk @@ -80,7 +80,9 @@ created a default `NetworkAttachmentDefinition` CRD. For more information, refer ### Prerequisites -- A deployed VM that in i +- A deployed VM in an active cluster that has the Virtual Machine Orchestrator (VMO) pack. + +- The VM must be in the **Stopped** state. ### Add an Interface From 4daa1881e62dc160b9415d17ec945626fbea1d40 Mon Sep 17 00:00:00 2001 From: Yuliia Horbenko Date: Fri, 19 Jul 2024 20:50:44 +0200 Subject: [PATCH 13/26] docs: Update the VMO architecture, add the environment setup topic, other refactoring work --- .../vm-management/architecture.md | 334 +++--------------- .../create-manage-vm/enable-cpu-hotplug.md | 92 +++++ .../create-manage-vmo-cluster.md | 9 - .../vm-management/environment-setup.md | 160 +++++++++ .../vm-management/vm-management.md | 9 +- package-lock.json | 6 +- ...agement_architecture_vmo-architecture.webp | Bin 0 -> 210411 bytes ...-vm_enable-cpu-hotplug_vm-yaml-editor.webp | Bin 0 -> 46718 bytes ...m-mangement_architecture_arch-diagram.webp | Bin 36200 -> 0 bytes .../docs/images/vm-mangement_vmo-diagram.webp | Bin 23034 -> 191833 bytes 10 files changed, 314 insertions(+), 296 deletions(-) create mode 100644 docs/docs-content/vm-management/create-manage-vm/enable-cpu-hotplug.md delete mode 100644 docs/docs-content/vm-management/create-manage-vmo-cluster.md create mode 100644 docs/docs-content/vm-management/environment-setup.md create mode 100644 static/assets/docs/images/vm-management_architecture_vmo-architecture.webp create mode 100644 static/assets/docs/images/vm-management_create-manage-vm_enable-cpu-hotplug_vm-yaml-editor.webp delete mode 100644 static/assets/docs/images/vm-mangement_architecture_arch-diagram.webp diff --git a/docs/docs-content/vm-management/architecture.md b/docs/docs-content/vm-management/architecture.md index 3f199f8801..09e897334b 100644 --- a/docs/docs-content/vm-management/architecture.md +++ b/docs/docs-content/vm-management/architecture.md @@ -4,310 +4,84 @@ title: "Architecture" description: "Learn about Palette VMO pack and the architecture behind it." hide_table_of_contents: false sidebar_position: 0 -tags: ["VMO", "architecture"] +tags: ["vmo", "architecture"] --- -Palette Virtual Machine Orchestrator (VMO) is a composite solution that includes the Palette VMO pack and a variety of -tools and technologies for deploying and managing Virtual Machines (VMs) alongside containerized applications. +The Palette Virtual Machine Orchestrator (VMO) pack consolidates all components that you need to deploy and manage +Virtual Machines (VMs) alongside containers in a Kubernetes host cluster. You can deploy VMO as an +[add-on cluster profile](../profiles/cluster-profiles/create-cluster-profiles/create-addon-profile/create-addon-profile.md) +on top of an existing data center or edge cluster. -This page offers a reference architecture you can implement to create a standard, repeatable, and highly scalable VMO -solution that can be further adapted and customized to fit specific environments. +![Diagram that explains the architecture behind Palette VMO.](/vm-management_architecture_vmo-architecture.webp) -![Diagram that explains the architecture behind Palette VMO.](/vm-mangement_architecture_arch-diagram.webp) +## Palette VMO Components -As referenced in the diagram, Palette VMO leverages the following core technologies: +By default, Palette VMO includes the following components: -- [**Pure Storage FlashArray**](https://www.purestorage.com/products.html) for storage orchestrated by - [**Portworx Enterprise**](https://portworx.com/services/kubernetes-storage/) as the Container Storage Interface (CSI). - Note that, as the bare metal servers contain internal disks, this is not a hyper-converged configuration. +- **Descheduler**. Enables VM live migration to different nodes in the node pool when the original node is in + maintenance mode. -- [**Canonical MAAS**](https://maas.io/) to automate the Operating System (OS) and Kubernetes deployment on bare metal. +- **Snapshot Controller**. Enables you to create VM snapshots. This component is automatically installed when you + initiate or schedule cluster backups. -- [**Cilium**](https://cilium.io/) to provide network services to containerized workloads. You can also use Cilium with - VMs that do not need to be exposed on a VLAN but could be exposed on the pod overlay network instead (in the case of - hybrid workloads). + :::info -- [**Multus**](https://github.com/k8snetworkplumbingwg/multus-cni) to enable VLAN network access to the VMs. + Palette installs a snapshot controller into every cluster where backups are scheduled or have been created on-demand + in the past. To prevent resource conflicts, you can disable the VMO snapshot controller in the pack YAML + configuration. -- [**MetalLB**](https://metallb.universe.tf/) to provide IPs for Kubernetes service resources of type `LoadBalancer`. + ```yaml + charts: + virtual-machine-orchestrator: + snapshot-controller: + enabled: false + ``` -- [**Nginx**](https://nginx.org/en/) to provide Ingress services to [KubeVirt](https://kubevirt.io/), Prometheus, and - application workloads. + ::: -- [**Prometheus**](https://prometheus.io/) to collect metrics and [**Grafana**](https://grafana.com/) to graph the - metrics into monitoring dashboards. +- **Spectro VM Dashboard**. Enables you to create, manage, and monitor VMs from Palette. The dashboard becomes available + once the VMO pack is successfully deployed as part of your cluster profile. -## Hardware Resources +- **KubeVirt**. This open-source solution enables you to create and manage VMs within Kubernetes clusters. KubeVirt + extends Kubernetes with additional virtualization resource types using Kubernetes Custom Resource Definitions (CRD) + API. -Refer to the following table for the minimum and recommended hardware specifications to build a VMO cluster. + With KubeVirt, you can use the Kubernetes API to manage VM resources in the same way you would manage standard + Kubernetes resources. -| Component | Minimum | Recommended | Comments | -| -------------------- | -------------------------------------------------- | -------------------------------------------- | -------------------------------------------------------------------------------- | -| **Server** | 2U Rackmount Chassis | 2U Rackmount Chassis | Needs to fit FC adapters and have sufficient NICs. | -| **CPU** | Intel or AMD x64 CPU with 8 cores | Intel or AMD x64 CPU with 8 cores | | -| **RAM** | 24 GB | 256 GB or more | Assumes the deployment of 20 VMs per node multiplied by the median RAM per VM. | -| **Network Adapters** | 2 x 10 Gbps
(data + mgmt) | 2 x 10 Gbps (data)
2 x 10 Gbps (mgmt) | Pod overlay runs on the mgmt network. | -| **Storage Adapters** | 2 x 16 Gbps FC | 2 x 16 Gbps FC | | -| **Server** | Local disk for the OS boot (SAN boot is supported) | Local disk for the OS boot | Boot from SAN requires special consideration due to the multipath configuration. | + :::tip -Typically, the cluster control plane nodes do not run any VMO workloads. As a result, they can have lighter hardware -specifications. For example, a server with 4 cores and 8 GB RAM is sufficient for a minimum-specification control plane -node. + Palette VMO is pre-configured to use a number of KubeVirt feature gates out of the box, and you can configure + additional feature gates as necessary. Refer to the [Feature Gates](#feature-gates) section for more information. -You can increase the hardware specifications based on the total number of control plane and worker nodes you want in the -cluster. Refer to the following table for guidance on control plane node sizing. Note that these recommendations assume -that each cluster has at least three control plane nodes. + ::: -:::info +- **KubeVirt CDI**. Provides persistent storage for Kubernetes clusters and enables the use of Persistent Volume Claims + (PVCs) as disks for KubeVirt VMs. -A Palette VMO cluster should consist of at least 10 worker nodes to ensure sufficient resource distribution. The -[Portworx Sharedv4 service pod anti-hyperconvergence](https://docs.portworx.com/portworx-enterprise/concepts/shared-volumes#sharedv4-service-pod-anti-hyperconvergence) -setting, which is necessary for seamless storage failover, requires two nodes to host its persistent storage, and these -two nodes cannot run any VMs. As a result, your VMO cluster needs to have enough nodes so that there are always at least -two nodes available for the storage failover workload. +- **Volume Snapshot Controller**. Watches VolumeSnapshot CRD objects and manages the creation and deletion of volume + snapshots. A snapshot represents a point-in-time copy of a volume. -::: +- **Multus CNI**. Enables multiple network interfaces to attach to Kubernetes pods. In the context of VMO, Multus + Controller Network Interface (CNI) automatically creates VLAN interfaces onto which you can place VMs. -| Worker Nodes | Namespaces | CPU Cores | Memory (GB) | -| ------------ | ---------- | --------- | ----------- | -| 10 | 100 | 4 | 8 | -| 25 | 500 | 4 | 16 | -| 100 | 1000 | 8 | 32 | -| 250 | 2000 | 16 | 64 | -| 500 | 4000 | 32 | 128 | +### Feature Gates -:::tip +Palette VMO includes the following KubeVirt feature gates by default: -For Pure Storage FlashArray, either the -[FlashArray//C](https://www.purestorage.com/products/unified-block-file-storage/flasharray-c.html#specifications) or -[FlashArray//X](https://www.purestorage.com/products/unified-block-file-storage/flasharray-x.html#specifications) models -are compatible with Portworx and suitable for Palette VMO. +- LiveMigration +- Snapshot +- HotplugVolumes +- VMExport +- ExpandDisks +- HotplugNICs +- VMLiveUpdateFeatures +- [CPU Hotplug](./create-manage-vm/enable-cpu-hotplug.md) -::: - -## Software Resources - -Refer to the following table for the versions of software components we recommend using with Palette VMO. - -:::info - -You can make substitutions in our software recommendations to better fit your specific use case. For more information on -how you can adapt the recommended software resources, get in touch with our -[Customer Support](https://spectrocloud.atlassian.net/servicedesk/customer/portals). - -::: - -| Component | Software | Recommended Version | -| ------------------------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- | -| **Bare Metal Deployment** | Canonical MAAS | 3.4.1 | -| **OS** | Canonical Ubuntu | 22.04 LTS | -| **Multipath Solution** | multipath-tools | 0.9.4 | -| **Kubernetes** | Palette eXtended Kubernetes | 1.28.3 | -| **Container Network Interface (CNI)** | Cilium CNI
Multus | 1.15.3
4.0.2 (included in the VMO pack) | -| **Container Storage Interface (CSI)** | Portworx Enterprise CSI
Pure Storage FlashArray | 3.1.1
[Purity//FA 6.1.4 or higher](https://docs.portworx.com/reference/pure-reference/supported-versions/) | -| **Virtualization** | KubeVirt | 1.1.1 (included in the VMO pack) | -| **Image Import** | KubeVirt CDI | 1.58.0 (included in the VMO pack) | -| **Storage Snapshots** | CSI Snapshot Controller | 6.3.2 (included in the VMO pack) | -| **Cluster Balancing** | Descheduler | 0.27.1 | -| **Monitoring** | Prometheus and Grafana | 55.8.3 | -| **Ingress** | Nginx | 1.9.5 | -| **Load Balancing** | MetalLB | 0.13.12 | - -## Network Configuration - -Compared to the standard Kubernetes clusters, networking for Palette VMO can require additional configuration, -especially if your VMs need to be accessible on the existing VLANs. As this configuration requires bypassing the typical -Kubernetes pod networking stack, we use Multus for networking in Palette VMO. - -This also implies additional requirements for the host network configuration of worker nodes in order to have valid -network targets for the VMs. - -Refer to the following table for an example of network configuration. - -| Network | VLAN ID | Network CIDR | Gateway | -| --------------------------- | ------------- | -------------- | ---------- | -| **Bare Metal Deployment** | 0 (native) | 192.168.0.0/22 | | -| **Kubernetes Hosts (mgmt)** | 10 | 172.16.0.0/22 | | -| **End-user Access (data)** | 20 | 10.20.30.0/16 | 10.20.30.1 | -| **Pod Overlay** | N/A (virtual) | 100.64.0.0/18 | | -| **Cluster Services** | N/A (virtual) | 100.64.64.0/18 | | -| **Existing VM VLANs** | 21 – 100 | | | - -MetalLB can use the **End-user Access** network to publish non-virtualized apps in the following ways: - -- As a network on which to advertise IP addresses, as - [Layer 2 advertisements](https://metallb.universe.tf/concepts/layer2/). - -- As a BGP network where it can - [advertise BGP addresses](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.10-Networking-en-US/images/afe4598d665b24b7a193bfd5b4440d48/209_OpenShift_BGP_0122.png) - to BGP routers. - -You can select either approach depending on your network equipment. - -:::tip - -We recommend using a dedicated VLAN for end-user access and not sharing it with VLANs used by VMs. While it is possible -to share the same VLAN for VMs and containers, you must be cautious when this VLAN also has the default gateway. - -::: - -Refer to the following table for an example of a host network configuration, which uses a total of 4 NICs in 2 bonds and -fits with our recommended VMO network configuration. - -| Interface | Type | Contents | VLAN | CIDR | Gateway | -| ---------------- | ------ | -------------------- | ------ | -------------- | ---------- | -| **bond_mgmt** | Bond | enp1s0
enp2s0 | Native | 192.168.0.0/22 | | -| **bond_mgmt.10** | VLAN | bond_mgmt | 10 | 172.16.0.0/22 | | -| **bond_data** | Bond | enp1s1
enp2s1 | Native | | | -| **bond_data.20** | VLAN | bond_data | 20 | 10.20.30.0/16 | 10.20.30.1 | -| **br0** | Bridge | bond_data | Native | | | - -The **br0** bridge interface is used as a master interface by Multus to automatically create VLAN interfaces for VMs. In -this scenario, the master interface must be a bridge, as no other type will work. - -This setup also assumes that the physical servers (the worker nodes) have four physical network interfaces that are -connected to the switch, as described in the following table. - -| Physical Port | Name in OS | Purpose | Switchport Configuration | -| ----------------- | ---------- | ---------------------------------------------------- | ------------------------ | -| **NIC 1, Port 1** | enp1s0 | PXE boot for OS deployment
Management network | Trunk (allowing 0, 10) | -| **NIC 1, Port 2** | enp2s0 | Management network | Trunk (allowing 0, 10) | -| **NIC 2, Port 1** | enp1s1 | Data network | Trunk (allowing 20-100) | -| **NIC 2, Port 2** | enp2s1 | Data network | Trunk (allowing 20-100) | - -For PXE boot, you can use both an untagged or native VLAN 0 network and a tagged network, such as VLAN 5. However, to -ensure a successful PXE boot on a tagged network, we recommend setting the native VLAN network to the tagged VLAN ID on -the switch port (in our example, this would be 5), so that the PXE boot can work with untagged traffic. - -Alternatively, if the server supports UEFI PXE boot and allows you to set the VLAN ID for PXE boot directly, you can -also use this option. In this case, you need to adjust the configuration for **bond_mgmt** to run the `192.168.0.0/22` -on a **bond_mgmt.5** subinterface. However, because it is difficult to achieve PXE boot on a tagged VLAN, we recommend -using a native or untagged VLAN for PXE. - -The **bond_data.20** subinterface provides outbound connectivity, as it has the default gateway. This is the primary way -to publish services from container workloads to the end users. If there are any specific data-center networks that you -want to reach over the **bond_mgmt.10** subinterface instead, you can configure them through static routes on the -`172.16.0.0/22` subnet in Canonical MAAS. Those routes will be automatically applied by MAAS upon server installation. - -For publishing workloads from VMs, you have the following ways: - -- Running the VM on the pod network like containers and publishing the individual VM ports as Kubernetes services on the - ** bond_data.20** network. In this case, you can use MetalLB to assign IP addresses. - -- Placing the entire VM on a VLAN and using Multus to assign the VM to a VLAN on top of the **br0** interface. In this - case, it's the responsibility of the VM (for static IPs) or the network (for DHCP) to assign IP addresses. - -### Limited Alternative - -If your setup is limited to two physical network interfaces, you will need to make some adjustments. Assuming the same -networks and VLANs are used, consider the following network configuration example (configured through Canonical MAAS). - -| Interface | Type | Contents | VLAN | CIDR | Gateway | -| ------------ | ------ | -------------------- | ------ | -------------- | ---------- | -| **bond0** | Bond | enp1s0
enp2s0 | Native | | | -| **bond0.10** | VLAN | bond0 | 10 | 172.16.0.0/22 | | -| **bond0.20** | VLAN | bond0 | 20 | 10.20.30.0/16 | 10.20.30.1 | -| **br0** | Bridge | bond0 | Native | 192.168.0.0/22 | | - -For this setup, it is assumed that the physical servers (worker nodes) are connected to the switch, as described in the -following table. - -| Physical Port | Name in OS | Purpose | Switchport Configuration | -| ----------------- | ---------- | ------------------------------------------------------------------------ | ------------------------------ | -| **NIC 1, Port 1** | enp1s0 | PXE boot for OS deployment
Management network
Data network | Trunk (allowing 0, 10, 20-100) | -| **NIC 1, Port 2** | enp2s0 | Management network
Data network | Trunk (allowing 0, 10, 20-100) | - -In this configuration, VLANs 10 (mgmt) and 20 (data) are not available for use by VMs on the **br0** interface because -the VLAN subinterfaces on the bridge master interface and VLAN subinterfaces on the bridge are mutually exclusive. - -If you need to run VMs on the same VLAN as either the mgmt (10) or the data (20) VLAN, you can facilitate this by -changing the network configuration as follows. - -| Interface | Type | Contents | VLAN | CIDR | Gateway | -| ------------ | ------ | -------------------- | ------ | -------------- | ---------- | -| **bond0** | Bond | enp1s0
enp2s0 | Native | | | -| **bond0.10** | VLAN | bond0 | 10 | 172.16.0.0/22 | | -| **br0** | Bridge | bond0 | Native | 192.168.0.0/22 | | -| **br0.20** | VLAN | br0 | 20 | 10.20.30.0/16 | 10.20.30.1 | - -In this example, VLAN 20 is defined as a subinterface of **br0** instead of on **bond0**. This configuration allows -virtual machines to also run on VLAN 20 without conflicts. - -## Storage Configuration - -This section provides the minimum requirements for Kubernetes storage on KubeVirt, as well as an example implementation -based on Portworx and Pure Flash Array, which were validated for this reference architecture. - -:::info - -While we have validated the Portworx and Pure Flash Array solution, there are other viable approaches. You can also -configure a reliable VMO cluster with other storage solutions, such as NetApp, DellEMC PowerFlex, and Rook-Ceph. - -::: - -### Live Migration - -The core requirement for Kubernetes storage for KubeVirt is the support for persistent volumes with a `ReadWriteMany` -(RWX) access mode. This is because a VM live migration is possible only with RWX volumes, and live migration is a common -requirement for running VMs in production requirements. - -Most storage providers support RWX access for persistent volumes in one access mode, either `Block` or `FileSystem`. -Refer to the following list of storage providers that offer the necessary support. - -| Storage Provider | Version | RWX Access Mode | -| ------------------------------ | ----------- | --------------- | -| Portworx Enterprise | 2.x and 3.x | `FileSystem` | -| Rook-Ceph | 1.11.x | `Block` | -| Longhorn | 1.5.x | `FileSystem` | -| Netapp Trident | 23.x | `FileSystem` | -| Dell CSM Operator - PowerFlex | 2.10.0 | `Block` | -| Dell CSM Operator - PowerMax | 2.10.0 | `Block` | -| Dell CSM Operator - PowerStore | 2.10.0 | `Block` | - -### Kubernetes Upgrades - -Distributed Kubernetes storage solutions, such as Rook-Ceph and Portworx, enable hyper-converged infrastructures where -the storage is provided by aggregating local disks in servers (or LUNs from traditional storage arrays) and providing -distributed storage logic on top of it, similar to VMware vSAN. When using this approach for Palette-managed clusters, -you need to take additional steps to prevent data loss during Kubernetes upgrades. - -When upgrading OS and Kubernetes versions, Palette used the repave method. During the repave, a cluster node is -gracefully removed from the cluster and then replaced by a new node with the upgraded OS and Kubernetes. To learn more -about the repave behavior in Palette, refer to -[Repave Behavior and Configuration](https://docs.spectrocloud.com/clusters/cluster-management/node-pool/#repave-behavior-and-configuration). - -This presents a challenge for hyper-converged clusters because every node repave causes a significant amount of storage -input and output as the data from the lost node is rebuilt onto the new node. To ensure that bare metal Palette clusters -with hyper-converged storage can successfully perform repaves without storage issues, you need to set a fixed worker -node pool in Canonical MAAS. Refer to our -[Reliable Distributed Storage for Bare-Metal CAPI Clusters](https://thenewstack.io/reliable-distributed-storage-for-bare-metal-capi-clusters/) -article for an example storage implementation. - -### Example Solution - -For our validated Palette VMO architecture, we've selected Portworx as the CSI for the back-end Pure Storage -[FlashArray//C](https://www.purestorage.com/products/unified-block-file-storage/flasharray-c.html#specifications), as it -provides some unique benefits with regard to performance, efficiency, and ease of management: - -- Both products are made and maintained by the same company, and therefore - [work well together](https://docs.portworx.com/cloud-references/auto-disk-provisioning/pure-flash-array/#architecture). - Portworx is the [designated CSI](https://github.com/purestorage/pso-csi/tree/master#readme) for managing Pure Storage - arrays from Kubernetes. - -- Portworx provides NFS-based shared volumes (RWX) based on storage pools that are backed by FlashArray storage. - -- As Portworx is initialized on each worker node, it automatically requests a LUN from FlashArray to join the shared - cluster storage pool. Persistent volumes are then served from the shared storage pool. - -- FlashArray performs deduplication on the back end to increase storage efficiency. Since Portworx creates two copies of - the data for resiliency, the deduplication on the back-end array restores some of that capacity. - -- Portworx can automatically reassign LUNs from FlashArray to other Kubernetes nodes, allowing cluster repaves to happen - without rebuilding any data. +For more information on KubeVirt feature gates, refer to the +[KubeVirt Activating feature gates](https://kubevirt.io/user-guide/cluster_admin/activating_feature_gates/) guide. ## Next Steps -Now that you understand the architecture behind Palette VMO and how the different technologies work together to enable -clusters capable of combining VMs and containerized applications, continue exploring VMO by reviewing our -[Create a VMO Profile](./create-vmo-profile.md) and [Create and Manage VMO Cluster](./create-manage-vmo-cluster.md) -guides. +Now that you understand the architecture behind Palette VMO, you can continue exploring it by reviewing our +[Environment Setup](./environment-setup.md) and [Create a VMO Profile](./create-vmo-profile.md) pages. diff --git a/docs/docs-content/vm-management/create-manage-vm/enable-cpu-hotplug.md b/docs/docs-content/vm-management/create-manage-vm/enable-cpu-hotplug.md new file mode 100644 index 0000000000..10d3c78e65 --- /dev/null +++ b/docs/docs-content/vm-management/create-manage-vm/enable-cpu-hotplug.md @@ -0,0 +1,92 @@ +--- +sidebar_label: "Enable CPU Hotplug" +title: "Enable CPU Hotplug" +description: "Learn how to enable the CPU Hotplug feature in your VMs using Palette Virtual Machine Orchestrator." +sidebar_position: 50 +tags: ["vmo", "cpu-hotplug"] +--- + +You can enable the [KubeVirt CPU Hotplug](https://kubevirt.io/user-guide/compute/cpu_hotplug/) feature in Palette, which +allows the Virtual Machine (VM) to add and remove virtual CPUs while the VM is running. + +## Limitations + +- CPU hotplug is not currently supported by the ARM64 architecture. +- The current CPU hotplug implementation requires the live migration of the VM workload. + +## Prerequisites + +- A VM deployed and active in Palette. + +## Enable CPU Hotplug + +1. Log in to [Palette](https://console.spectrocloud.com/). + +2. From the left **Main Menu**, select **Clusters**, and then select the cluster with the VM you want to update. + +3. Select the **Virtual Machines** tab, then select the necessary VM and open its **YAML** tab. + + ![Palette with the VM YAML editor displayed.](/vm-management_create-manage-vm_enable-cpu-hotplug_vm-yaml-editor.webp) + +4. In the VM YAML configuration editor, navigate to the VM object configuration and update the number of CPU sockets. + Consider the following example for reference. + + ```yaml + spec: + template: + spec: + domain: + cpu: + // highlight-next-line + sockets: 5 + ``` + +5. In the bottom-left corner, select **Save**. Palette applies your updates. + +6. To track the update process, in the YAML configuration editor, select **Reload** and monitor for a status update + similar to the following example. + + ```yaml + status: + conditions: + - lastProbeTime: null + lastTransitionTime: null + status: "True" + type: LiveMigratable + - lastProbeTime: null + lastTransitionTime: null + status: "True" + // highlight-next-line + type: HotVCPUChange + ``` + +## Validate + +1. Log in to [Palette](https://console.spectrocloud.com/). + +2. From the left **Main Menu**, select **Clusters**, and then select the cluster with the VM where you enabled the CPU + hotplug. + +3. Select the **Virtual Machines** tab, then select the necessary VM and open its **YAML** tab. + +4. In the VM YAML configuration editor, navigate to the VM object and status configurations and verify that they specify + the expected number of CPUs. Consider the following example for reference. + + ```yaml + spec: + template: + spec: + domain: + cpu: + cores: 1 + // highlight-next-line + sockets: 5 + threads: 1 + ... + status: + currentCPUTopology: + cores: 1 + // highlight-next-line + sockets: 5 + threads: 1 + ``` diff --git a/docs/docs-content/vm-management/create-manage-vmo-cluster.md b/docs/docs-content/vm-management/create-manage-vmo-cluster.md deleted file mode 100644 index 0ca2bf93db..0000000000 --- a/docs/docs-content/vm-management/create-manage-vmo-cluster.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -sidebar_label: "Create and Manage VMO Cluster" -title: "Create and Manage VMO Cluster" -description: "Learn how to create and manage Palette VMO clusters." -icon: " " -hide_table_of_contents: false -sidebar_position: 20 -tags: ["vmo"] ---- diff --git a/docs/docs-content/vm-management/environment-setup.md b/docs/docs-content/vm-management/environment-setup.md new file mode 100644 index 0000000000..94c8c922c7 --- /dev/null +++ b/docs/docs-content/vm-management/environment-setup.md @@ -0,0 +1,160 @@ +--- +sidebar_label: "Environment Setup" +title: "Environment Setup" +description: "Learn about Palette VMO pack and the architecture behind it." +hide_table_of_contents: false +sidebar_position: 5 +tags: ["vmo", "environment-setup"] +--- + +This page provides reference specifications for the Palette Virtual Machine Orchestrator (VMO) hardware and network +resources. + +## Hardware Resources + +Refer to the following table for the minimum and recommended hardware specifications for the worker nodes of the +cluster. + +| Component | Minimum | Recommended | Comments | +| -------------------- | -------------------------------------------------- | -------------------------------------------- | -------------------------------------------------------------------------------- | +| **Server** | 2U Rackmount Chassis | 2U Rackmount Chassis | Needs to fit FC adapters and have sufficient NICs. | +| **CPU** | Intel or AMD x64 CPU with 8 cores | Intel or AMD x64 CPU with 8 cores | | +| **RAM** | 24 GB | 256 GB or more | Assumes the deployment of 20 VMs per node multiplied by the median RAM per VM. | +| **Network Adapters** | 2 x 10 Gbps
(data + mgmt) | 2 x 10 Gbps (data)
2 x 10 Gbps (mgmt) | Pod overlay runs on the mgmt network. | +| **Storage Adapters** | 2 x 16 Gbps FC | 2 x 16 Gbps FC | | +| **Disks** | Local disk for the OS boot (SAN boot is supported) | Local disk for the OS boot | Boot from SAN requires special consideration due to the multipath configuration. | + +Typically, the cluster control plane nodes do not run any VMO workloads. As a result, they can have lighter hardware +specifications. For example, a server with 4 cores and 8 GB RAM is sufficient for a minimum-specification control plane +node. + +You can increase the hardware specifications based on the total number of control plane and worker nodes you want in the +cluster. Refer to the following table for guidance on control plane node sizing. Note that these recommendations assume +that each cluster has at least three control plane nodes. + +| Worker Nodes | Namespaces | CPU Cores | Memory (GB) | +| ------------ | ---------- | --------- | ----------- | +| 10 | 100 | 4 | 8 | +| 25 | 500 | 4 | 16 | +| 100 | 1000 | 8 | 32 | +| 250 | 2000 | 16 | 64 | +| 500 | 4000 | 32 | 128 | + +## Network Configuration + +Compared to the standard Kubernetes clusters, networking for Palette VMO can require additional configuration, +especially if your VMs need to be accessible on the existing VLANs. As this configuration requires bypassing the typical +Kubernetes pod networking stack, we use Multus for networking in Palette VMO. + +This also implies additional requirements for the host network configuration of worker nodes in order to have valid +network targets for the VMs. + +Refer to the following table for an example of network configuration. + +| Network | VLAN ID | Network CIDR | Gateway | +| --------------------------- | ------------- | -------------- | ---------- | +| **Bare Metal Deployment** | 0 (native) | 192.168.0.0/22 | | +| **Kubernetes Hosts (mgmt)** | 10 | 172.16.0.0/22 | | +| **End-user Access (data)** | 20 | 10.20.30.0/16 | 10.20.30.1 | +| **Pod Overlay** | N/A (virtual) | 100.64.0.0/18 | | +| **Cluster Services** | N/A (virtual) | 100.64.64.0/18 | | +| **Existing VM VLANs** | 21 – 100 | | | + +MetalLB can use the **End-user Access** network to publish non-virtualized apps in the following ways: + +- As a network on which to advertise IP addresses, as + [Layer 2 advertisements](https://metallb.universe.tf/concepts/layer2/). + +- As a BGP network where it can + [advertise BGP addresses](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.10-Networking-en-US/images/afe4598d665b24b7a193bfd5b4440d48/209_OpenShift_BGP_0122.png) + to BGP routers. + +You can select either approach depending on your network equipment. + +:::tip + +We recommend using a dedicated VLAN for end-user access and not sharing it with VLANs used by VMs. + +::: + +Refer to the following table for an example of a host network configuration, which uses a total of 4 NICs in 2 bonds and +fits with our recommended VMO network configuration. + +| Interface | Type | Contents | VLAN | CIDR | Gateway | +| ---------------- | ------ | -------------------- | ------ | -------------- | ---------- | +| **bond_mgmt** | Bond | enp1s0
enp2s0 | Native | 192.168.0.0/22 | | +| **bond_mgmt.10** | VLAN | bond_mgmt | 10 | 172.16.0.0/22 | | +| **bond_data** | Bond | enp1s1
enp2s1 | Native | | | +| **bond_data.20** | VLAN | bond_data | 20 | 10.20.30.0/16 | 10.20.30.1 | +| **br0** | Bridge | bond_data | Native | | | + +The **br0** bridge interface is used as a master interface by Multus to automatically create VLAN interfaces for VMs. In +this scenario, the master interface must be a bridge, as no other type will work. + +This setup also assumes that the physical servers (the worker nodes) have four physical network interfaces that are +connected to the switch, as described in the following table. + +| Physical Port | Name in OS | Purpose | Switchport Configuration | +| ----------------- | ---------- | ---------------------------------------------------- | ------------------------ | +| **NIC 1, Port 1** | enp1s0 | PXE boot for OS deployment
Management network | Trunk (allowing 0, 10) | +| **NIC 1, Port 2** | enp2s0 | Management network | Trunk (allowing 0, 10) | +| **NIC 2, Port 1** | enp1s1 | Data network | Trunk (allowing 20-100) | +| **NIC 2, Port 2** | enp2s1 | Data network | Trunk (allowing 20-100) | + +For PXE boot, you can use both an untagged or native VLAN 0 network and a tagged network, such as VLAN 5. However, to +ensure a successful PXE boot on a tagged network, we recommend setting the native VLAN network to the tagged VLAN ID on +the switch port (in our example, this would be 5), so that the PXE boot can work with untagged traffic. + +Alternatively, if the server supports UEFI PXE boot and allows you to set the VLAN ID for PXE boot directly, you can +also use this option. In this case, you need to adjust the configuration for **bond_mgmt** to run the `192.168.0.0/22` +on a **bond_mgmt.5** subinterface. However, because it is difficult to achieve PXE boot on a tagged VLAN, we recommend +using a native or untagged VLAN for PXE. + +The **bond_data.20** subinterface provides outbound connectivity, as it has the default gateway. This is the primary way +to publish services from container workloads to the end users. If there are any specific data-center networks that you +want to reach over the **bond_mgmt.10** subinterface instead, you can configure them through static routes on the +`172.16.0.0/22` subnet in Canonical MAAS. Those routes will be automatically applied by MAAS upon server installation. + +For publishing workloads from VMs, you have the following ways: + +- Running the VM on the pod network like containers and publishing the individual VM ports as Kubernetes services on the + **bond_data.20** network. In this case, you can use MetalLB to assign IP addresses. + +- Placing the entire VM on a VLAN and using Multus to assign the VM to a VLAN on top of the **br0** interface. In this + case, it's the responsibility of the VM (for static IPs) or the network (for DHCP) to assign IP addresses. + +### Limited Alternative + +If your setup is limited to two physical network interfaces, you will need to make some adjustments. Assuming the same +networks and VLANs are used, consider the following network configuration example (configured through Canonical MAAS). + +| Interface | Type | Contents | VLAN | CIDR | Gateway | +| ------------ | ------ | -------------------- | ------ | -------------- | ---------- | +| **bond0** | Bond | enp1s0
enp2s0 | Native | | | +| **bond0.10** | VLAN | bond0 | 10 | 172.16.0.0/22 | | +| **bond0.20** | VLAN | bond0 | 20 | 10.20.30.0/16 | 10.20.30.1 | +| **br0** | Bridge | bond0 | Native | 192.168.0.0/22 | | + +For this setup, it is assumed that the physical servers (worker nodes) are connected to the switch, as described in the +following table. + +| Physical Port | Name in OS | Purpose | Switchport Configuration | +| ----------------- | ---------- | ------------------------------------------------------------------------ | ------------------------------ | +| **NIC 1, Port 1** | enp1s0 | PXE boot for OS deployment
Management network
Data network | Trunk (allowing 0, 10, 20-100) | +| **NIC 1, Port 2** | enp2s0 | Management network
Data network | Trunk (allowing 0, 10, 20-100) | + +In this configuration, VLANs 10 (mgmt) and 20 (data) are not available for use by VMs on the **br0** interface because +the VLAN subinterfaces on the bridge master interface and VLAN subinterfaces on the bridge are mutually exclusive. + +If you need to run VMs on the same VLAN as either the mgmt (10) or the data (20) VLAN, you can facilitate this by +changing the network configuration as follows. + +| Interface | Type | Contents | VLAN | CIDR | Gateway | +| ------------ | ------ | -------------------- | ------ | -------------- | ---------- | +| **bond0** | Bond | enp1s0
enp2s0 | Native | | | +| **bond0.10** | VLAN | bond0 | 10 | 172.16.0.0/22 | | +| **br0** | Bridge | bond0 | Native | 192.168.0.0/22 | | +| **br0.20** | VLAN | br0 | 20 | 10.20.30.0/16 | 10.20.30.1 | + +In this example, VLAN 20 is defined as a subinterface of **br0** instead of on **bond0**. This configuration allows +virtual machines to also run on VLAN 20 without conflicts. diff --git a/docs/docs-content/vm-management/vm-management.md b/docs/docs-content/vm-management/vm-management.md index 8fa4740b19..8246b94c90 100644 --- a/docs/docs-content/vm-management/vm-management.md +++ b/docs/docs-content/vm-management/vm-management.md @@ -11,7 +11,8 @@ tags: ["vmo"] --- Palette Virtual Machine Orchestrator (VMO) provides a unified platform for deploying, managing, and scaling Virtual -Machines (VMs) and containerized applications within Kubernetes clusters deployed on bare-metal servers in data centers. +Machines (VMs) and containerized applications within Kubernetes clusters. Palette VMO supports deployment to edge +devices and bare metal servers in data centers. Palette VMO simplifies infrastructure management, improves resource utilization, and eliminates hypervisor costs. @@ -31,9 +32,9 @@ You will benefit from Palette VMO in the following cases: ## Get Started -To get started with Palette VMO, review the [Architecture](./architecture.md) page to learn about the different -components involved in building a full-fledged VMO solution. Then, review the -[Create a VMO Profile](./create-vmo-profile.md) guide to prepare everything you need to deploy your first VMO cluster. +To get started with Palette VMO, review the [Architecture](./architecture.md) page to learn about the components +involved in enabling VMO for your infrastructure. Then, review the [Create a VMO Profile](./create-vmo-profile.md) guide +to prepare everything you need to deploy your first VMO cluster. Once your VMO cluster is up and running, refer to the [Create and Manage VMs](./create-manage-vm/create-manage-vm.md) section for information on deploying VMs from existing Palette templates and performing standard VM operations. diff --git a/package-lock.json b/package-lock.json index e9cb1edb47..56ffba8bbb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,9 +39,9 @@ "@playwright/test": "^1.42.1", "@semantic-release/changelog": "^6.0.1", "@semantic-release/exec": "^6.0.3", - "@semantic-release/git": "*", - "@semantic-release/github": "*", - "@semantic-release/npm": "*", + "@semantic-release/git": "latest", + "@semantic-release/github": "latest", + "@semantic-release/npm": "latest", "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^14.1.2", "@tsconfig/docusaurus": "^1.0.5", diff --git a/static/assets/docs/images/vm-management_architecture_vmo-architecture.webp b/static/assets/docs/images/vm-management_architecture_vmo-architecture.webp new file mode 100644 index 0000000000000000000000000000000000000000..e30915ec7fd1f041dc547631f8b2793d0ac91175 GIT binary patch literal 210411 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 literal 0 HcmV?d00001 diff --git a/static/assets/docs/images/vm-management_create-manage-vm_enable-cpu-hotplug_vm-yaml-editor.webp b/static/assets/docs/images/vm-management_create-manage-vm_enable-cpu-hotplug_vm-yaml-editor.webp new file mode 100644 index 0000000000000000000000000000000000000000..383b04e0bc4d528085ad5322c860ca50a9d9df27 GIT binary patch literal 46718 zcmaHSbChMzl6BeYvdu2rwr$(C*

)n(hR>auOyHtyFCzc+8*%zXEslWS$Jvmzs7 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

XNE{;{J%&jN4$8uv6TsZgvqQ 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 literal 0 HcmV?d00001 diff --git a/static/assets/docs/images/vm-mangement_architecture_arch-diagram.webp b/static/assets/docs/images/vm-mangement_architecture_arch-diagram.webp deleted file mode 100644 index 2a3f8d90f4ad374af70a5fecaa232c3b0fbe7bcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36200 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 ^#Zywi&Nez7tppCIPyr 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%0A0NVhnYq@MK&3;RB* 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

lTbVS~oFVh!m?gPo)UeIHjh*P} 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 z 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 diff --git a/static/assets/docs/images/vm-mangement_vmo-diagram.webp b/static/assets/docs/images/vm-mangement_vmo-diagram.webp index d2e888fbb1330862c243c713797652a6a8c27c15..f4b6291ce52ef67afd04c7c4fdb7b26b15373b42 100644 GIT binary patch literal 27744 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 teu}Lo+xw9)_+hglG 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%0A0NVhnYq@MK&3;RB* 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

M1gJBP7)@ZEy&waiymg2XA`D=w-u$W?)D4^LDJ- zp2etLnD{&+$R!HW1)kN#99d3|K|iC{W002;U^G5;TFp>;7M6Fw4HZ;}ehO1mm__e* zUDuH>cuWzCE8bIM{}>(_zCNez&ZJAHq6MVN-5!53T$ZU%+ymSUvLsV*f98Di5YGma z)u{dBL2d@!tlt~8?7jbXTnLU+X`k|1$$!nj?@P`7jB+-b;|Ss(v1vS-9(*~iq75jn zp?-*sPd8r?wfsM z^fbz1wYm9# z|9n_&1J?;3fD*3qY&ySWWLSz><9yVwT&A;f()Xx^YlXQ z0xf=Ivfnf7M|#GRxi_7dwbmOBSvQ*J!jP28$efx!xX=Ff}mRu+@|@jMgHFX@AqHU73OEfOxP4Z-`%Ne!15z_D(!>lRRtfa(A6`R0+3Jy-K{ z*UV|E#W4Zr7E4cp$W`nE`zm#&-8wowPMbBYXS|E63CrT0t_x=}vNHMC)SkC@pxWnJ zBs3E7HR`_n;U&qcNhXR>Gi9^s8)|goKk7lk?uiS336%S7EN&`BWDI_1Tp_;vYCOcf zDrP|oG1JV@p`3~fMQGSgP(z&^7+2czVLYP`#3JK~!Xg8tDcg#w)4fk@N;HAAHbF#j zE*hkHc|*Lu6y@|y`|H zn>jE8O!*u+v#d$zAjd<$>lz5x?1jr&_HWR=hdu*Nbp*&A62WzcWyH_0yGvzj5XK;q z!ges~2bRfr`dqS_(P@5rI z15ZbY|7w|braPLq+sIE#etf`H0I5Mfy&u z|54A$~34)YOaVgoFRw+f|5KBK&zO2ZBf6YIvot32_L})r_lf}fp3VwS*%_~V4 z;U=}v7vIp8rM7?y=9CsEx5SP5ScnY~v8rjp3@h~|HZ?FY>CN9nyL23odcXg=&oy-N zjPqaZMXj%&k(M6h3cr{TE~w)^8H-~?ITOb!tSKDrG;p9;m(Z5bh7&Vs&M98{(;9p_ znB`oEFL2UvHIG5UZ|;v6PcpTbfXN(RG;w`ljUE^`=@JCns7q@7>0%3u*i_W^Y~?z# zYaPQ=c>mXc&McwDM0}6m`Ar4;A>MUpZOqQA4%Xc+0s!Cu;Yr;oD;sj&c;EW7vzj!ufuSUlmfDX>T_5YJI} z2*DBMJUl};#>3v9^#Y`duB*qyOR=47Q%kKj!OvU)2c|OEtjYgXde!2>72Uj%EMfPx*_*U zPDZy5_E{W_Uj7|H%R796ge*JNRPvr+YNEtijD{?R7W(wk%6rKk@&&)^xHwgD=d66e zyz5%%`A_`T>cVb<5o*0l9M_VmoHgm0i^P*kT zTVfu`ARy`E4&W&WBW=6iH9Z=ASI7;wbvcs9Q?~5n=dM5mj=6I;FSFW6oJ(?y@xaC} zyLC)?63BzPxv#H(&HtSp{|V2q?^w}Qu%Ard;C6XJH{d~x!864oi?=%{C8)`oLj5ig zP0J8?Lf)JIM)EWe;QA=3A*o3Jrd5Dm1d;t)^7?awLk8owWN#Vb z!o&VS%$rb%%Kz1DLv*kRNEn8FMi`b6LDFHUM6;j*5j=do@T`~lrgSqRA)KmT_y6`@ zr=o1)R)oM6hY8Qgh@_P`UtLyBGL`Mlit6VvMKaDeopNp+ogCce?{RF9Dy0 zbIPdaifIL4Rh7l#qp1Q50fxAn!i&U)T0U03tm$8xf5vZ8PxDJR7gqxYD!*RCH~;4z z#oY&}>LWWYE}uzQQxGsKP%7*R>H187+nm`BM*v!&fFuQJM;Cfyhd1*1dIL++FS-Qc zmTq1IL*%_!o2_9c`J>43w;+hm^8#Nax=cEDqQDa$Q-7j4L=QHJI{wW0`I2S$@DF(; z+0ot5t4W*dVeAnx0ILXGTw!>Ie4*(wQNJ|)kz4=%?}knrJW2IGyj<<^1LpB~xw&M> zrR2{3HMeZxZMwq;+=!w0-z!FyRD>J~a3>D`<&P-Gz6sgHqKgFdY}DN zg9{Hkk(N%`=ua1$@GK{hPJ=~0<$p-@LU=`S5YHt`GxnS8Jrm1u>B8-+fG5uEYJm;8 z$YB(;8@BZyvy>HnFkv1BRCcoC2r(~3p{0`tj;U)U-`Y>C5`q7;-UGT41pvMwW;#8Y zKK7@y338%Q?gU`o^nA+XF+Z_Y`J-OD_)c8Mn!A~PeVZ`4aw9tm0h?BJa_v4^srXg9 z|FDNEj@=TkRZEe)SYwA>Om{!p#r>)T^{$7@I+Q_c>jy*>z;r^{livRh>j6LOJpmVI zr!rBy(X0wM^r+rvX_@K?{5zO*9z|Rf>)~LB5WmH6`9uMkDFNcP9Etgd<(E6#Fgq zZr0fPi`Nl865HiH8yPr}v{7iv0^NaDB`^a@BqhehyycMRlKcT4cn(wID`VUjzl7_P zcl2h%^>RQGt>(1Mi;pZ!o877y zL+V3LLPIZ%5Ly-DseI&+Yvjo?B{B%@)8Kj}r(IjUO#!9d+invXAbA@ z|78JYkf=Z-s$0t|M?41p`|2j%IDdEUEH@|iG^iS*KyIW~j>BAQW{r7TLd?G}SHgum zcJA54;@Ue9&V0nJ6GS)&O^sHsduqxi@aQx|ps};o3 z4UIfS6;OaTjT*SZe?xx!Tkn!*FipS>J-U=;Ky=2$)g9Z3@;$$Y2qGR_ z@;6II)K*qHaJslMi`)sD3fX`r5e1(*VwaK7t&`Aan04m2;p)8ROjy2gpklNb}fgpSTO|*QLbh{R6 z{(8Tuuyx0avS$?*i?$N^Fw5&zMH2tME_BvYo+NlG{QCRL>lO<$PcLfE#$moG6h9$u zQ3h4>beD!vX>iv!+r*uBJ|h=KU@z;i=ocQ!Cb%g9r#XqTKtP6=11OeTwgdO67$UtW zM!Il8gL`-$FJ=yOhcV<$9&qY^yymS-@`8wsWe~*INcGgg(PY z2LK3iBdoYc$w&GbBJYUKDgS}^=0^i07bjv30715%8GijD1P6B8bDr6THA89&t~Txb z7;*<1N{Uc)|I~4J+b9@KQex$gv4b!N%j77v;D1b&iaHb6NNNGVQm}G~^ey^>4!UY( zV7;3ahFl;Zb2??jh3608NoS9E7{6S1G4d18wEc97xM&+~%1d(;`8<0o-blLVnkk~V z_~&p4cyFv9vz6h02zK&6@6U=F@T%Il?`XG}9HCPlhS4Mjg>ughM^$?rv{mz6`|moz0jSL;rQ0XO=vo|nj1+Z~7-v8`d< z7K_cl^GlLL;D4K*Q(w6VUsbD()sp3;4Y*qVtM42)*K&J(dgIR5f#8FFGINDFJ3Tc^ ztZE|O4WWG6xW!!Drc4`~OxkS(d9Q4xiU~%=)Gufo8;xA%i>p*qVObUmy7ePxudVU9 zUGl|b#5pvRCdJrkZp5gF?|w~qIh*ax2l0+d`}oF=NjhN2e{uB1O9!(-xp{TEcv!*4 zD~7OpKkt@w!0rUc_)L#dW=$?p^O99&k1$}Nhpd>uQYknQ6FGv? zWXYZhi+%*Om0KkkcPH6In}f7|cjK6j!_DHK)6i_vIGqMun33|?F>iStNl3O~?uO{0 zRy`#zs{D!r`WGK>slwnwDqa`-jz?uE!c0OSu#6;eyi^UGQ6%v+mdS#&@kW?w8;aO{ zyWS#gdXo!j_W8aq*e`g{KPUw}R$#H<+>7p_aC3p*AFc>6G*Y&?6l~veCN}Wk0RuVj z$3s3Y3}vRQ?Vy)w88=+H0`-6vw+*-XX0SIg3T-d%{kz`qiD7s;Ux{z8=lGSql(wFS zC;r@B^}s?*7Sdqi!o(=f+xJNVLoSq9=vhqg!IR0z@le2$m7-TI)x*T`kQmD8Tc+-6 z|Ep4t%=REN>yN`hhc*oQ3sb9KCodTyTZ;GEh6uio#8+qgd)CMblRJCGD)KWd`Nid= zm#v4A!{Y?$Sp#T>9Z~u@a(Ne>&fKV%8#w~Thm%8*DhIU#Bhdb%k15}U_O+`5;805% zk7V~(@s%S74)b@TEzIAm0TOsj{Ro*p!KcfWdbB2fR4W;5DBGALHNqean&DTN-XOf^ z>7|c@M26|n?ZnSG2eQ(&E5G|EM8i2#MdI#YDbcb&o&q!>vt@s^HI=9U@HbtT(@sSY z-_ObX4Z^d(OW&`(yKd^2L`p{Dh*zp!q`=?qh&KMt>~2nVQRHkbis3?GMcXA}9>+FH zmY^m%5g_LRe`_V(s7$Tc!AQYt(cPz$q=tt|TeAb- zf0+wUXUnCZiZn8UcH?!;+1x;#yOtgyy;-fh$2~mpmI#Yrh)Up97sa23MJ1oD5yZH*1s+kTjeMX?PB%g=&P%1P!J_U#ihSNnSL zAI54nV9x_Q+R2tZm-LzQrDQp?D<~U*P~|i)U{3|5EcC`+zz1F%5j<UmKaBV|~=4`7fOM1{!rb zBV78Jm7OM!WJDwb(JUh`d*~v!ljY91!C4|ii5g=e+PqXPiB(xM{>O|CRt~+*?SvEv zNqv-OGd;R753^oRSMU$+Q@d(2R&9?jmqG*ZumRVvD(;sb5A0vER;X2^k+>f)f|WP_ zd=DehFtV&(NZcpBn%ut;A!%R!onYsh3J@XUREYNx4WLsQX4}^2%@BL&_eQ#9* zcOWHoRa`2m@nQa^O{I;v#hYmGMat&wop0agXfHV+4%#ClQxD876(eTo_PM)le0U8o z4E}U{o2`F=*PL(4@*W#@#;_ayAwA}qN?JP9E@#ZEiuqaK<2#3XCYft<&svSjJVR1? zA>=3eDL!97{C-)|{r&s&voc`T00`{X6e@X<(hkm$$Y;>S%5tE-icOzj62p}9VaLWW z?oU{&!M(|L0ffR40}~V_CQ~;XdO{$4K*mBRZop%QOn=M11Y}@mDMSuyMjXCqIr2-^ zDwyo)cCH%!T#V{ZP@}4JiPK`P-kIs)jZMN!L5U|8*EDB!*b#7ZXsw62^qO%X<{K9G zpb>;$^nPEkTzxwZ?JG^@>&JoHCou}AxCxH6&I;Isi{I)-Qy0xHG7sp=mFk_=FgYtj zQQSb?Q|ttIoTyq;x^eNwrZvjINB*#rYU13M{Nzz3%J(Cf5N2DYGMFf2Gm^U+YE`vK8^1+9KZFiga zM}f^@*g%+B9^+}sqHh)cCIICivmuE7F}uY8jie2o#U6BV;ByK@MGy7v(KNndoUfYU z5@3o~R!3#)`P=*)`Pup@=x%~-_ZNOpL3PRm{N8Etz8RDJ`S;^Aq{O`8geY4Tpv*{u-RNR>!~Z$i z1zhSTHr5cda|Q2*e#z?mHTr&GdXPq$=6k97!INPi%D#kproJW~9>Qm$Y&gKLhL7G)Df|YAZz`ATb-|@gloSd`=|wYBp1WoasOHAe29*MsTqOO4@(?02h!ridG%bOL>^rE z_)fd6Ru-{oF2V)*tSPo8Htlbgmyf;TqMJfgCQuTIKJ*mg}3yT%h zS{zo=YG$eB3yVt;&&OZZ?^m4N?vEk|N1J3~3^MEJmWw^w&92{Ggr!McE{o+VpB7sz zu1|){qbUX^<0HZ1YMet^+b(o!gvHZHpmi@(q>Zy3LW2#vJwO{01GTlbH`V!TwRe7qk2_LT9jTUG&gC4pLR`qMJ!!ZM9Hz;4CcSfY`h3tPd<5t-GFfjez?L zd<8_)n|d&y)g30Bgbw&kaOl_4>}KnNe*7vj1;KA?@%75~`({ou-RFEBTL&DbKjKo4 z7l3gUCo!=LHV0MHh!7`kll_!KLXh zdsBN=RCZLl!V;1|fMSu+^U`Dz)Eht{Y4#JCGE*_t2?}E!x89u$DvhUa9!#|g&wmK4 z1uE+WQy62l)MgxC<|XC3_5u@X*-JQ^MpI{-7{%f{nt8d575$tfG4D1CqqQVb zAx1X|Oia|S|LZy3nKaMHm4%RG{Vafh83_|YPhZSYt)~|MadTgZIJI%~ij@Y1k>?6x zZ~URR8mLG-kOW}5&N-r!QHHeJs)*HGJ<=Sys1BhrS+-17_U*?jx;N4~2@x!Nh@@Hk zax%V(JoZu@9MIiSale{!>;((BL394NC$UI#V^NkU8J!moCoL_~j9Hsh0M5j3YScXO zT2?`!kn(GtJ9m`yTLl(#txo<>nvX%+{(9H$$2+R`ec=Cim_CU6eS5UA`(UU<;$%2e z*Xggqb`DXAKSr6j&g+`rOTv^5D-e~5D29XE`J&K}F3{=m)%}o9-~DinH9l^d7s+L7 zWlJCqd5x4`bQ1ZQFNICgjb~}PHP=m2o`v38jk-gbnocbc?zbD}mNy?}BKJm?X zN4c#(lxRa5yEsBgA~fBT6hV(UG6nX5ScFjo5qDAO>Gzucy4mZfMS@oU!EXL8+V`hL zBm~BNnU-gELu43;Ac|s7luv6yi)l^@b108|g;e2D0+wc4}x|`t-Va~66 zILvJ}j%mI2sb}W)?Y2d*f`yz<^U1yYOqI~$vhqq$PTBHou^CAHL9*MbUJf~&oM-}X z%ua!(wE6J~kpvbQjN+NxOPV{LisX5eSc$~PBejMn+(lXqQ>XqzS(egblP4nV1-O|v1rVX}IM>p(C z0q@<>kPoNQF4Q-?C%wTOYtR@c))^`DED;+||ZV!@+Zd=!*cFb(A9anOY zn<7v-Z!cs407`8|!;!ELLBA1-*!CxjW}vppuJ(qf%WvHbA*2+L?S|vADwkN z_GsCdgLuw9(RZ<>2~0m~{cS?klFCyo^YClVl2EOxFNcwzbV&~sSm_`7;UY~B`|;P9 zJR(})E$k%}LJAOK`EwC(XRl2;y!vZjn6Pi9mDfW((b+{x|IUby{QQL=ld`{UPR>bF zM)l8U;g4i$L4l-eWN31VVqS;+X^KQ}-O+9>2*)y7Ap_E)eUFWx_!J^AdXo zn*Wz4TVTXG#uaheyiV-|K9wt~KuTNHyg}s$93j=7s~8dfH3cBGSSSuu5DaIP|3yt; zTG^80ax^J9#xte!sc%>pu^MuGm!E?UcT6*jdcQ$bRAr39{w(Op(@RC|`j6!!CoqdJ zUP-YAObOA_Yb2dZ+}>ighi)V;#9J~3ep3vbPIcT2cHHbq9jlovWFnQ4(*QAP47$vp zS9Epb5}mX;Dl~rz4ITDo{8{W|l}G&1IzTi^vDxai-%k3AQ!%gFpO}Tj%2GseMjA!; zbi{dg$g#1Zy}%qtXr*E8Q4=ZYHjOA-yr3TW9*^nkP7(`H_PqQ`NxVXkf%q{DeL#Fl zHgu%#vvJzV^`Aet7?87RSk4SM6#e-fSQbKNr_UIHIqx#a$Vxt86t-OlOq0jC}iJCn#VnQ)O=`W9FDY*Xjzf3nSJYBFS0jC~< z7xv+Ww-L$7In zxV=!g`<4I&=u1m}c2)+AcVi4|8EGs<#T%uWdpjxLGet# zu4OLMu?kJs=L*$8xOn++uQ-2C{vHMLp(@yoZw=}I>!QpFlJu~#9-|jdK?qEkFQFv6F(ih1|CPXUHAH-G=VWY@R z4wq?rV;f(i=y?sHD```hSG~)S9DaJ9`4o`S>TTwm{TS z8Z%M$YjxDPBWL({mGMyr- zk-91R>_WGPH{HD+$UPW+fvPWRID6M>t{K*-CS24>lP+j&hh`T{I>Q)hLRd6x6*${1 zxD`9-tzkwz;{kTcv~t%MV152wpXkkVq;sd~tJG-=Q%j_rvPQdLpeO7=GJ)z+Qp9D?6TTaMB2)J4gLdOQTFJNV~g zDLRwAWhG`I-8zZ*e>7cXR8(!-9a?Z`rMtUxNJY9ux*G(^LAsQX8oIl?8|m(r?k;KR z_|EgL_5GOtXU#hIefG7l9mUR&(9<|!XD_;l>O&+bI&B1MfEmeP!Y&I*dAe7+f~&C| zJmVbvViwB2;l|e)1F;|&{syP#&y~Z3HpIm52dJ^XIb7k;8gS2QIru$E=c)6sxJ~{< z247B2k-9jvNDASH!>5ls81NJ%23qHMO^ZN3{kdeh4x|qoE(8sw68?)y3@$6B?~xcF zK3yYCT=>xwRfYs)m_e@K#rw4?8177FG-Wy#wCv@;tlyJB$YT~6z#3u3PQQ~yv!%!5 zK;U1pciplhAcZ7mtOjk_;^n{JWeBrWF;puShQ5i)^7WDC6Agn-y{qXn8)p*sH}kwS z-ZQH;|23vbjX{Q5G})u@T%7^edadU`;B>o2Q%;2?EmaxQKTz2&^akD$@H7XH40E2% z;6&CoTPiA|vl$u$?hQM|(Qg$g^hU4nNHXT@CHy)wumF)5%6Vkiy+rGGruqTCnzjp_DmMX8zA;v7Zh}nvG*QSd zeAOicJ%3!wBl0xqTU5q7AF*|VlY}ncY-jg)5?60H)$!dELSWioW!Q<{7V(h*JAk11 zQ1YmEa}onARQ0uNEy;QrEM8ky2=YL_;(cEao=vP4@PAW?N7xk5_?aT85zXDgqha*W zv2)Po=oQ=X_+guKNc?rhM~H(j=ylus0&nGu(Xf{w=bB5{PJK|S+a-ILjJ zf*AbNVBHTQ=8sWLy(Yi{Zd-wKAz^qDTOQQ&wDNU;4nz|bxN^7$D%9cF0qz=U3Nhy#d*7#2g_>6^YYl_W<~h$)BN^O09Y1)r*F(B2XkA1{?rcaVQ;hVWtxXI>biFrIRj z7ul^7e5jRsQkj%$%1F%YGq^KC9lrx5S?e>HK!A)5EGQy9T>7T!zgwa+dxFd9k20AX zeyY6NMg&mQ<>~r?={tN>llZihL0dPOSTjv6g?1eg`@M=`ZBW99Z@7V0r%ZVrCtOx8|2w0 zRV99#M1T-^mDA{P-pIKVwQrv$05i-2Jqy7llvx#EWi)XYu_sI~kO zN-xHWctk=>g_lh@E+B?LDf1tBKj;GX4eJ($5@?mR3VR7ldl8_YkScglXcAbO^O4is zN4uW^X=iQYpX|TM4BS1*$k!om*jXgdujWkr(@syh-;d_og_{MeK6E-(&K7Owb($IO zaBomlVq@|3u?PQO3t)z7G$`3@u!QXPN`Rjv5URr=|FwzX2Visa5bLp#8{4~S|MzLX zDY)4DP4=#5YPp)XrCn=MOd|;yP)TGm82Aaf)h~s96*)<(Di}7Z>#p{5&euZ(%F`qv zJMuR>7mHyxJy)0}AQ5JWNyNdzjKl~UR|7f9%1O#6u**Osd1hkC>_ zud!X>QtoleDE-40Z)UevU}fp24oy|N8)4|1g$oX79by+*ChRlz;CzEgIz6hsExp+4WFnj zu&kv8t4yn%7WTnShT{p`C8N2$RV}9BbE>ekOA@#9dTrqjUpN}~Dj*&&rju9JB0Z{W zExX^nZ;xq|4J&{C0_I4o?nGs(G+D-vv01&n6NMb$CeV7C!3oAxx>S<;)Pwe{>2dHS z-q_+JQ1Vl?i?a}|S|K2@&jk-nu@Ph*)L~pY%bk~mPsSIjZ5xns*!~B+&+-5oAKz?_ zB7lH0s6DOP%8bRSaCQ#BTLJZz+o&(|Bk(xe z^1wT&=$wwf$b?o)yo)ZeqJGa*@gR&LfBYiE zcU-HrDg%<8$Id+rit-7(nZ)i)M}G(TtE3K2%?9=JH{PGWb6v$-^*rMBpo5Tj!@ z%>6?)msSh$+Dd%j#Q;vAE{(RBn3bT<@Nh^iCfwM`gXrwxWQv`eK{o~=s8(|pKIXHP7zMUa||av8yMH8(+!?~ z(!*i#P;dlmr6+%&N;Uo`qWOs#2p<_(0bUD>{e6|?YV>4?NtEmr^sg-Sy!}#H61x>k zNL*Su^Ofn)+U7C)cfjy#H1o?PPv-`8Ln?@Gf8Dts-BK8>A(9H;fg|Ci{LHE|y)n9# z>8oj25sdyh=FOzwp?2CUoCvk`%Iy~T=9cDub~S6w8Z=;bXoZSrzpl-rF;Lx5k2VA? z*78}NsHc0TItoP;N36&OQP$_~XLE#|S4}SuAcgmi^SN}d>Qg7Bq;30s@h5}Cn}xFE z=uJ^nQtK^7S1{QyBWBgcyB|z;U5zXZ@!)5)AMSFOMe3~>7(o~x#LFJ08xS!yXTDRGu1A4i|>7)=Kfw0t(%~-l7Ax<;h8@k62wQGS_ zu;7)X36MQOy_w_$5ija9SW6pFNU|(m%Ebe=VCOt63Q0KpY#?W&!_^5mt*L2%(^H+y zt_^Mfc^mzf^~{+I5QA3|`BL=hsSIu!a5c_;6ry)#c5V6NW(V>t84bUe#M+=6P!_c0 zz<(OX9R|_p`zgl9u!8_#Bc14?QrGN226+%&2X^!AuP5((Jgq*=8aks4B82@|fT)L1 z&3<_R3Gu-(q%BrgeD@D0y&PJ+x-n3I?OE<7T{0aeO85vMZVe8qU$2Y3^oiQa#bp%( z*89$dmR7PqAvk0Mf!RqU$>6# z&mDA&o{2#;N{r?@o&-WXFiR3)eKyamCH#`V<#zwibrIQ^MdCBx4MN5GC>$y7C?!Qv zT?N<$pbi?-l&?__0gUjwb9t41Z(PE3#%=E(!jZ-Ca;n2-|Bd9jmya80qD{w*r)=&- zIF#Euj%^f8MH(O+9d_%Q)0QO)%W8;{KOy0eF1tVUr9`~)TUIYx^i#FO2`A2cpLL<@ zq;_!3Ufa0BdHMZI$6R>iAp>Z!yt3X-XRP1(X8~pQA-^1IzG{d7f<|&|Hj0}$0FR+ilzA+5#39DjAxV#h5eg94 zw2n7Qf*rX=M1te4KqURhjHfix-T>BI zAF&Y5dm=lOGN?X-*N;M(rHhU4vl6PiS^#K8(;D1 zHM$eqTXxq*lWBZT75{s~ZI8=ppWUvkM3A;KRn;P$c=Pd@I`(cXHCULx*~(OCuAaTZ z3%5_)!xq%x6HR4eeMaKUnw#IXr!_p#&~T6XZcLHWh(6OEBVA2LBjhghkBmC+dA00l zW#GopQq%q_IUF+;!%waCi|-5~4&W>)m&CM;esfj3BuAf^v6anZNgp2_k;q!7R&fk( z@<2dquP+*}DeX62Jo-0k!s9xE@X2H!T-Z{>XI<;O5TH^gH@1PjA9B@LUjDIFOX(wz zAN78IjN{qcNdg5t7hh9pIp@$G*;d#sET__P*5YXAd=hnJvbdz214OFkMEiYGB%B0& zV=!mq48==;Tw>odcfrLfL%yO$csL&RefKOo*FPQXbNjH{^eO?`n-M89`2{CSRzGu$i&%p3*VT#np7v?Z+}B$;C7yQjPADqK zYUSxV=uz~-k7(lJ>2J?h*R6l%t4s?L116u`k4wq3=-&3@7fttV>Kbs7^VSZsfMPFt zU12+w%>XH)uP$y12JUH6se$RD%CPN-=c~KNeM?7mX-i#L?}^p%;z#4gE4%G zelMAN`HQwk!F9j$y;M&JqxIkSN~RsSe$-vWGk01*sITC=KVP@b3HTCdKSBCnsny2x z+ijYO^bQ7!f?tQ_&@F0xI&dhhQ-0wahf*1Yq(3FgjZHQ;*}eC%pSdSUPwFvjeGr)L zT^KS`(bWt3ThAO_z8g-w7h%fjRF}+U3N+1)yI}`CNLBgPCAuU@B5qU_<#5u~o0w<9 z*)4R#k!pZ@S+HEnnhM^zEK>{06b(ahl$U(dxW8M(hItO2_kuILpZ)CXnvX)c^y;e7 z$I!b}t(`?&sw_b^DSpAe)c&Nu4L3I${Qc3CQwe@j3#v7F7^jR`%Iy~jAc$}{GZpyy!{L+UE zFKyzOq&U8B#WBZZ%1)BA>adllH*6$LgnfW{Al!hKPW;p)*ta29%xWkBfuPwBONKB0 z!)>&2IEJD}n@fNz2Kvf%+HeV%0yAbh%V);vs!ImVPiOfZ*NbKcJSj2E@oh_W+CJtT ziQ~bTfyM_r7n99d)c$QKmg3^D7(-6LJbhy3u#7&|bT~71&)kU$$=&~J-0HFJbA3XF zePTvg&6T5F|IOY^S*XFY7iAFJRFb8iN^h#;;FnY97#zGyOAwN&G;8ynb~`woD^=B&n+DcA|O5#=dI!fl1N`3xGKm4A&uj3^Q6&e}k8nIF|w8|d4 z6AGKh9Nj$g?Mc_`aP)lt`1t3s5S~534@0(Nh@xIV750a<_stENQey#}EH_c2m9+G4 zlyfII;8uU0I^(Vi0;P{-J~Mg>pt#=DOl~9I%u)mmZ@;kBKPMCM;42n=s;nsM7B4_f zE!|f&=raF2j3CQ_6iTSoeay_NQMm0GKF~=B`IeULJnxR5+t!l6Y5r#Nz6Zu!RnmZA z=zVDXeXOB{kHt_U@SbWMFKPpwUv*A=Li|hsgY?*f*jMtSNgo`^OEOx@^OzZ-#C}lu z@_j*UxKsRCP9B~A(zh^Ehflc=Art$@ava~l#qWi5{}x=n zq}6)t5ZK5R%_@OWlC<0$P4DT`;@v$p41{LGB_Z##dK9Awi+Z9}=jP@s>^k)uV_TWv zrQVjS6+S)zSbLQ=YXANWJ@33{pU$C9EI&%^?Se6@A%~knr?d=UtLNvB%gQZBc78ie zP1pIP_3r~u6)_2vaBglO6NPy=1vQi&I2mYbn=!03u`jSEA`3)|4SZ{C&pNf>%-!< z1YT4Rp~#A5Fo9^}N)vo$d-ZPKpZ2v?iT^e>6c#WN`kK1s{C;#%kiO$SvYz9B$I}UO zC5O0l1Y>mYxGZz(?NtQo!Xeol^6-=Xgg7QC^>F+V`=>V!f?cRLInf{?%o$rwJko;D zOA_qB3``XVIEoB!s#lux)0=W9z9Sip9|VwVpO~pUzqetGH0vWswj^0{oH(tw+e3J{ z0ZkDocMdcnkf#>nQ{6eL#O!U5J6sI^u4-qV_Y(K$znbd)UnHFwY?z!%kS}>&I1(>< z)I>U2Uu5$b0th+n%}o%rVe>Vjo**(Y5Q6|(+6NiVoVpADfcaM=qlsnFZjXZl_&1l6 zi}Q_suh&`}Sh+UnzCX{NmLaWEf{}klLeGIiq1{q>#L!j9uCQT)sjxkK6`0(-sr zvFgidpUCr#%27O+FHVk`NmU!3huwbTn4Y||Kj(-Lx8Ss$^2B{#KOA$)WI8FF;BQJN zA?oy`;rw+Hi1eP6(8;^b8EDFAk!cj2la+?ZQ6?EQv#*1XC$S?8QD!15rI*d7@?+(A3QA`LA zccXo_6Nn8)5LiLf=E|hy$gP}LAQ=x&C>SF7vWrN$-42>_ncW`OW z^K6dAgv9(x{c`w|n2H1s z!kI1wXv;5Z5lZlrB59uz!S1J79T+bZG_>^d62W3>biLY>p&^MtfM(n06Vyx<29}SP z)bkExXB4PE1aP~Iu5{L_0XgJ~^{l)kzSsVl@%8#wW46+Yg<{RS5V(Nz&+m&haKJvoAz)0@Ih>3zm25<~+Imy(qNXdX=nX!^^?&+c;jf~_t^zecH^ecZd zYJW!F?8Y5WyXWthnl$rWGvJU^-^Yz`y;{Ee)X)2o@Rsx3tHz=GDIO@CGP>IhQ{kA` zg%=YOV@775xm`xlNo%=Zrh|v8e|y658)(6T*VEKLm!7>Wdpu2vMQlY@%5BuJzCY=x z6lRAd!Y&;;eEeWwb3Ft7pDxTl;Sjl3B_ycbJeBFCf{_I|;`pdiiBM@d_D34+jYo+A zWi1>jB;7CL^~~Rub4DbvVA{mc=rH|DYRu=h+R0EGrXZD%MkdzC$-_L~q5Rt^yluaf z@pG*T2>4l2#oYe z{XetS&C3!fYh4kfx)+@v3(J`?49U9;J>MKvx(pMJrKa5kQQ(ab2KV6jP1Rob9S&LLivp{^+(x- zX&Zxt1xx$-1h2JkJ%YWGwU;xp)9}CUS#&eFi@Ky+dxv{^9IE=U) zJKX9=w|-TP-v_ra0N#_V?l-YT8RIDZEtKou0ZkH2rfwC{@>Sb?lpQsMx+>n?2@cw5P$j+q#2F z@R>qv>rssmUzYx0*$(;@HJe7j`SKC`HD*AvY*`{PU+;|E=GyI1%?F8FHWG9 zUpal(;T)LfdCg9H_xhzeiOpT17y-na%zx61=7!_fszs6Hmx79T)LJLRfb;`$@BSbR zt!oU_HSm2b)h0Q};66%ZU{^I(V4PC7*=oATaay4^)9`h+c~9o!jA3~9iPvC}`{(P; zmhj6%f?Vr-ho7$p3)6WbLUZ9v|ofBHcDSMWAl^>=iIjI=6Sqg%T#pcRT?DqNA)L zP5YCx{)M=XG?lfy_7)Pev=uFz3j2>DKhk-Y`2FsS8BaXzCF4V!f90oyX}@zy3~$-Mn7lJ2X&#tq7Ed#`3Y$Cm?Pp?zgT z>RL`M9^TR-FYA?tq@q7_xF-%segRL@;`W3qty<+%XG&sEmQ%Gctvdi@ulT(suS~z3 zCg5|KrPPQs!i-iEtDoc`|K@R$M4IXdYd7F<8ZBr1aL;|%M@LZ?r6)d-4Hu5C1dQX^ z4*o%jFrxz?f`2?~U*bO~zO~DCYk8ER@ zN(T$lXYIG>E}akQqG687hzeG|I*7r}=$057?Y4ImyXuU^m2lafSCEkp?nrwl4^3j2 z?VFrX-$(-FsIjGE5RLY5)vxC5vTgToyad!K{zjgV1I-I#7kgKH*3|ko;Vd z=X=9Xoq$Axr}<%&N}r6bb$h?wEWr5EIBSq=wwHqSIY!no*Zy8^Ee)EgTKukvvNVJp z%Zi_?u~pC6Qp49P&tp&DDPOl9Q=N=$PyGNFvwt8(624TVszlyT>69lW?Q2pdAfN7Ene14Ygt^iOE(DeIg~b; zpKW7XuHhZf_&j{wP05FmOd{Vwl5F>&;5Y92dcx#&!K|E9&2uNRF56(DJZ%_s8SOIQ zXs}K5okYt&mzw0fc{}FWHsg9(qFjJ)c=y38cZE!54ck zc6pM&{$`bGmKP035-+Lh;IN;-ZJjh{!?j*|h}EPy^;n`H!W=%uMwWaG>1$6sAr%~# zLk17!=Py%qsspWQviOHU`Zh~jFJhedJCt+= z@I7f``9M5=db>Dl7*ona7lKd=5oSil1U6rX7Zy<*D^kZCC0^E6- zt&)+8E^ER5c2InA5*CsBw(*X@JsuHOjF5%syfRF2Tg#GMPHs!iN%DG?Le1=Q(%P6axVVv?px{Q+~}!mQ1z8G%4B1z{BNFab^<}Kg|2*8+g{)|=-%-J zCfzvtJttW(=q^tSq142HVvg0u3!%96vIvV`=AM~K-*YCjp=I$-C2|1OxFM0fnk*lc z-V8V#~Ze=pAGX>NNzSdm>M?Vikp9 z{40(626o=N6tE$vBMS4O^$uW)b3?fYF@{Fd*%6nB?!)<+#n9#&w*O?0Wyai~8~H=Y zR9zWQA4k=hq&$dUA0hwmsi*Q-_{IYZ3C{B=W&d_!JDq;eJzg_zDCaW?bFsuU$^vIH zzQB3IT(IfS=E7lS1oOORVODpL6dfu`ko)NdaM>MD;>e8~n(C0)u zOEbSLeciuIb$ESgtZvH=1fK4|xQqx>A{Z#gafN|A-b`w@sRTyS=&GvE1!R{X+N5}` zruDVB)N9Rr=)`!{`?2ryqq=vFhh1x!n zJYtDP z`}*C-99nB{9PByOTDAqPK&@7yizdE%9(cIYEDM?cX4h_(D(hHEFSI$sgYd|9(fjerwj{UiCpQ{AN zaj0?xArW*K+UMJh5f+Cj6kbkpCX2*0zIQ(eunL@F4BQi+aEO5uB4bbXvM6=$7O+A7 zdBc)jcM+I#TJ!^iv>5r0*P~zv)7OF>^<{pRzj7SQLlPSM6)YE71aXHaPls=;qEp4K%q% zdc7u8qrK}KM?zs?-)DcU%m=6}-(0iQhr4#}ygUX#q-LUvr1 zq^^G5qBfBo^Rz>Yr|uVb;q~NCt5c>qPrX;Bofk1g*YN>wzdiMp;*`Nht%PF0L$%5W zEgUDFaqnJMz2L4<)`b(uCs9%FuofsW;lKUzzWV!kYqY=iVJ{niMWolu>|{ruoE-3M zbV{l{B;S8;UEKdSn*Ao5HeX9MrL)buncrc@xl-FVEq>k}(}}$Uv*NF$=QH9GasT2< z*o!8wR!GYx6U}g#Y668(aARWVE1U!C2wpZ7YlNOV^OB~hf8ofZ1CLPG=|xu%@15c+ zT;J&C-gH`sDHpT}wFdU}PjpGQ^!_qIR!`UuG1n$8|4k;7ge#Aa^X1yQJp@AF$;BE0 z^7n;d;i4JcBmxj1)FArs95X#bo~uFWOvO$u2aCuO{7BNS;)Wloui$OPe=FL z!*xlm8D>Ho+s)Sv(a)Lp+HTubxZh|4udAZ{Xetl5gdxlM_){e`QPh6KQ~br>yIS*_ z>cZT21;jDZU9ako&+~!q1}?~2=6^T-S+3LbA&gV_kRd=o8m==Fl+SqAz1U9vW2f*^!sR|`gY)XZxj_L}$N3Fpk3^QV^|ZR8im;9!{0OR~5$1}3Rb z@|enY!EDCTaWoeYfBvP8XIVj)j&Wa9kz$Me@InQUPT7`2|v$HCuo78Vy88ZfZKMll-YL7d&}U1-*1T(E^jf-O2d< z$T$un=Z7P`oN9g!i`)=)vKwdmgfr?3%-@a+JH zt8AHl@#owFDxO8FXC89uj5SaA7jBipvQ`3JhVv2*_1(9h+a2;dJmsXP(lfeo)xD`8 z1eqP2a~QJK0l`2^Nm8#Iyl^LeA-~BOyuahhiuwr(@8D#26rJk zCOu_XfUm3=!DPiyTJes@q`Tb&D#1B1hB{f)7N-}UK>`}hQB3SXkkjN=+aZZz4s}w` z3LalW;9jU{r?N+X{39W9_m92BmBNO)o!!6Z$>!oYbRhFuE1)Mi9@`iTMGaR23sFoa6wz6UO+r ziU#K>yJD7(;%FMsRU4;gjEPqX+ba}=UK3rJnj}3JkY9BhIXNf{!P%z8H{vHv`^6xC zeCn3}JxY<>1xE&%ey7gKn|AzX_vz6HlhoU{b{>kw)CI?-KFhVV_leApY|% zx8lv!!VuEIWbK&4u9%Mz`P`R8V@Y**#*mXxpFAdm@b~8Li&)sCTIqhqjLB;3yq=#h zk&umwy>c-3q0HZMb>@{D|9F19A0Im)+;plFyT5yT((WRmt|g`(Hs^-@HH@((!9aZ4 zz4(wOW=1wHE`Dq1$l$4^1|_-fe0Io*{L{l|IP4HMEKmPad8}dEbx-Ggk6)z=Z*H1s zVQ>BNe||KPdGRc$b{Y+NSfqdA}^gwS=?7POI+E*)`*jF@1YHy0=UTFl%Hn26%j-XE!T4wl#_&8fycYAuNI z8%m$~NGRCiT2Cl5xOIdXz4H~73^Lele(+@I>-z2yQh4Dx&%fDl?Ce_7;ZsE%yhb_@ z-DV0uIJG%RJ88=O11KUO)O%S(508&MK3Eh9*E~H&goBvHcs=r0s1)v79spvTdtH5K zf5;%5$;ma2sWd5lm&Cw1U-arPMCFA%CiW<*yfo1@It%s!VQDkp1LhB$ewO4G(J-Z* zf7!;~H90+RC}^=jTOnEi*gnftE)IqXCTKNvAnYK?tO?}yM#V4+Gx!}+p+F)A7XB<5 zwH&ls3XUL2j6=G9+g8nxvZ%*wfAzsN=j9_F=2y>rrujnF$qEqtg`%m`oEon`{Y5J8 zowYDYoyj)NvYnv}f#mHxrtyla(QF8)(_*q4zs$67t8o|fKK!i@yRW&SN?Ruy zP{;qWxr~XqIl|Ao$^Clqt8!-;5lXYLeOyo79X}(u2b}e%hspjNDjE|`3!;_J@#3cH z@bCNbtyq~Q)LRiRmRLfUXBbLksabdMdVjcoo!}C#ZFJ}eADRD`<(a4BFPK>Nw_B1_ zT3c0Zr{sOlpC*f{w12e8C1|sF1JNnUl!Eb}qypHPSeeZ`W;zVjZ#FJM?GP3y#ieD+ zYP4;&in{16m#X;G#}r|U{W!NsX15@YSXomO2dvtwTA9Xj@sj%Ff6%=&UUiZIEhLm} zwl*(!#FMmNaQ8f`KX)_%DJ2OZMkc5v6F}OtB5}7lZ|53KwoCf_NliuC+_obOs=H#5 zZIa=`Rgs6hJipAFCR0%s$B4IRPY6~}cSp%1W02P&QA-C4?N4jalQa{ozg|wT1M}ni zwbLsL9cVXU`hSj8Dg23P+}mp#+$P_FqMOO+1NQZYDrAY99k2?3WpmxOh1TIH%s5DvaL6eDXF{O5in>VY5whZyMp4uJkVz`|`8j z3!E3T1Pv4qd^BamCr%MZSrD=z2*G+Svs&z zo*SAsJHo5heu+7^T_dKI*_hMnVMveQZ1#>BP1h$C7?dRT%dt7dFGv#dsR@NN*WYtO zFD;T49t0!gOEp#Do863m+A*QKxaYpL zja~*-{HJH%J%>6LeSFI8;Xwnr{h0m>bWYVwbcmLo+}=*AW}pwJxfO#+U&NDrEuicM z!c?zg5m9MtVn$QH0aKtaa;p9Wbe9J-lm-B)zUpiqpX;r%7(H3>h$IM}L@;Mq?~gE0 zkwTDcRrlR7R_)$2Uua$&E5T&7AE|MWtyC8mG41_67B&4r6cDHvTled@sH}gk-(yw- zkGh)cXNT9OGi_yx`xXHI{JP2}Z1R#Ys~IC(|)UItfQ z!M^|W=eWdo&g{~m0`VKfW^rVqe@8bih7F!-P8c3x1Q6mF-lp#j?~h}6Lk}fx`Tf(H z2{?rLf&zi{>Exj+@5QwY!#oKfoWMbG2D=FNhjaqeYt2R0!cu4ynh zu7?bF2C#?ScOHBhmuDK0Bh)Rd52>9*6D;uXth#bBIa-)1xfbPiUmP?TI#0%VE=FB( zpsNvHH#-18aOplFC)hHev4&5*o%eExG4IW~>pq|cf2@#cV~>-wyofCfy4X6Et^RzA z;AA^NDmWASoBaBAI4q?qs@i4ctLrBf-2u2v3XqiY(*okm3&V+LAFTRn zY0g=ZLN5Hut_7ev&?XrtCH8B5TQuFbu;lj>l=*{894CYwz!NVgA_KM3kGExOI+4s` zwRnH`gWpay$AZ$yp_e8|n5G5<67-josOk<=vh>0zG*vS~R6Lg-FSm^iie9=#tg4c5 zV>b712tWVG$r@dma(NPgT4AQ&TB2#;bn+ok1oX zl!k0`=JVy7)^vh1%Qq5XLR;Sd90tvrP3>|C?zvl9WXwwx%6!u2 zD*Y(RPN*qYkS`|)NGAQd<9&9|C!;%KhJIZl%$9lN_|Xdvhg^u31;YlxNG*ckv>8Ag zPY+k~DbuG0imb!2p7`#{`+iFu(Dv58+YJ?c zOHN9j)o-##pjxhwoM8Qnq@c$Z3!EMlgQ%hTB_}&BRbXB{A?q~fom}b`^5jQ&Fua~X zmP9zw{cT&99LeE+(1dg_Q{bPRH3}P>v`;n&$)gri(;Tq$^uGs$6;fw1tdCxsOQu#8 z2uUnE$4{OYXmD@ul%OqJP_5Tuv{z$F|E2@inl@)(e+&H^Bv)(VPPESU zCxJjJj+s9+{>W3Yl5|EW_-83GgvfEf+$NV}=N|3E`^6LSpmpNyf>+zAKaJ1LH3xmejWJFh0I1lb^E*H`C01p-8v1=a!MNYIar2l5o(lP@>@>Vt*j(`F4{u& zqu0%AD*^Ka`{>=-^8D-PYCDGCOYBycZU@l6WU62?Zk+_PV*nl?z1N3c$_~Q8yS`bd z_KyPX^#MSZQ$$*!v)>GiX0(i7b&<4;{D~dyZ*~v&!p~b761is!1htbC_&mdmB29U~ zO-K7p`QxbZV6FA0*QN&<;H?FeMNeF>Z-OQM%<&>t*&vp}fDm=~)U~y@9p+ba7 zZA}e-^!Ptk44nJ=UZT8D*#@&z{(q9CXcFF2e&c|?nVkwJLO*wy1}EdD`e7Q9Z~@Y# zH;en`Dv*S}P19AY47NUUyAC2}Z?z;5u73A#$t-eTnN;+(yE?5dM^x!5x7>*~rc^!i zG%=pj^|U%=G#gEJ&XXCG#hw*WgD?;Vi%GOQ-sXjd2}nrWaiC3b-wVQjSL)94LbFen zLr^|LSUY7q$vz`H99Ry1xHPEq+2zt}%4R)tzYG|i70Ad(tVUxJVlhx&^pHy-3tP`e z4D;NuVkg1)@--wO&K|W_-OH>%?W0d0TsFGRvE%$VVuwDIZWM9UXQ!zUOMQ$_K=+EK znY{8j@ngZo3_UU@Z>&a(GM#43rWAUXv=6%wo^?rUb}mur(lO^I2hkOm)9mPiJtqz_ zR?YhQTZTm(kMs;Z1+pC!=!^Ti-xw2N9GiqU^WjpG;v@X0c3llF4L@JzU%BrO6iUvw z)?b7F&b=jB;1Bti`a`1h^zI&8__nrZ&bhocN zzd(1gPjZHZ{aO=LDWUOg6bTdloDY(UH<4lN^q2S1Q^vP%viJT#pk{z6!BiLwyIMoe z{WR|#Jhg*c&&u!2+;|(ApklolqEE(VwC(l%a+zY*DM%X*w73Pt6xjhBud>MEPs@x0 z3(C@3Rz(6fxxs%JZ%ysUxWv?bH)pV;5p8N1{EG$F^Xc&-EDr8IHJEHR&d3z@u9IvI z>qnB#Ut` zF+<&{Tb=Xr)Pry>*Hn;u`r-X|=vwZD?8&EfrFq^Z-04>6hp|f=4@xAwG&|}5zDeTU zlgEU}4vx@)406sQ-)>+<^vzl>i*o97C+3+~gMG2IwtIbw-~&8M{|xPn^jQ`n9LE#Y zvCmg3(~~NQy#_-T4LfGvBqb*4+rc3wWm0%IJxtOTe#w@Hj*k3%HN(eR3|k&A=*y}7 zt#MEPSH9}|S=P05f6`m>E@!bn^D|c+msiSe!?Av8{HM#28I8e?+im1^;-r@olt4Y$ z(j>ujL)%n>o-8IQrCIEL4P*Q-4}g(P>q+k;d^l>$mA!_L38i#(KC%j0P9ry*!p}`0 zx?{&=g47JsU4nL`PXvC)koyAV+qe&fLUB6-f9Vy2lqh4!s|Q2->gvMtmAGQT!x7Rc zW^z8lP7D${7I0_}L6<&0G33@BY0BLR@;UkbBB@j+2xy`O1AB*Pott!{C-grrsB7$1 z$sh(s!vQ+2-~zA1giG2PiD1oGKaYYW?HaCo(0}pe4nAS%cw!rW9GBD%dG--FHxB7N z#92t)%LIK1rHB%UjYsPfVek({YiMepe@>f@sk~Xp_U(O|1gGc2K?+JlxpAEG?L4--~3*)tR5U0SmarcfT>K%&mnp_KJIkIvEVn zXaXG^WOOK#r_#$y%#I^}ZN?{~S>-g6NEYS?2!(1bz=6W}Fon^Lv2i110z~A;XDf8$KvF}Oc!d3QS(DC zNk9s0LE#9K1Xo`S{iNDH5lBUfWG(x}jz@&CGozrNe;8O@C+@3|xPlc%m>oG>neY$C zx6YFq`UD#$4sB)lt{W3lzaEmemn4bKudcw9*Ou&PfrNMmji`}H_kYsqZqM!B;e8U? zt{4BU4TPY*r6_0a*sC;!IExCtfab!vb+co_Ad^4{@wDovtjuUaMyh|-{)^7np2C+f zAnddH&a9G}5FPF8JQi}8oNkn~5NPT?6FSf3$%`+5is8(5$}9{;OJphzfW+{_ebLs) z>pv306sHzJzLbq$m`VS)_!-cp5<=iW5pSV`47BvPD!A{LLYel;*PmFV9rK3=N8Fs? z6f%#|jpW+-eS?rolIY_=4wrIZ$v+p&?4*AsJ+K7*Qf5Fql{?v{@DSem6|n27`8NRp z!|_&V*@1=KGxz{ue{Y(AT-hYA1~2xX%P4nn@Y0^INK7foXc`5wa>Z$5HIIM9pLz;$ zX)<%|cK1Agk_^pj`*R|AMK`T;`6CTZ&~BgqtqQTSk!cRng?XC#uJH*0-SDWhG?#O) zA!A#LC|@u_+q;zy!eSCvWU$9_IrYtoU3|(Zy^yKI-&Id)Hk=KXps~a{j;g>Sagp1< zCKNj6`si|{BdSE~d}h?03p+IZk(j7&0QU&kYU^LzYy1XAVrYClZ*JMQK&GifEwGvy zNMA4D!ii1(ttVDdtj#I@jp&qnAv=nJz?)WRQPn=Vi0CkZ(A&K2VMjgZ4=6fLNp#AQ zu+4nS+pqh=aGfe5yHk~S&x*Bfb`O7(7`Z8AKmt$jT`Jq_v48sX8|^#eqgzX=euxH- z1Ej2TQI&Jsk*A3B-97HlgQM*ih;X>zu{ukZG^Z^|0Y-YGi8kR}`M2JWC0ZiGBMXiU z7aBP~atxAF9^q-!MZ?MXF$)U%&wDE|wlZFyxonqkPUM|$Z~Loku*o3TtsM_@*wF7v zoE#P-4{~0+>y_q1Zr7WlPe<8gct~NL1n_~PF7iU6j>mHGqrh07;Tm)?IdAY8ha&~9 zd|@si_4Lo1m&Qup0Q0P&$&0H=!G_eLBH^#$yV(+%rknu4RJC+0*avF-)SRsq#-_|d z5CpqTjQ?~|5*_!P9#ZJDx0nP2Bj0v%6+WKm1o+0+J7 zQ@@?v4$etxLBzY+)DLPInHVZ|@K)}^`giadg-gf)Xly zqvyy6!J< z&3u@1pR@Nmd#}CLV1|9Kuuq$dm058TZ?h&$|dnlpuWbu7Y35THT%gIkwP ztn?B)2cZ1Ayr1gTP20^u`@wJUi!j6EETiVckeK%qD&}83)shSM^V9CzuxqH6!;!o> zG@BgAn_S1|7xYv5EF>$8E>pIgi>Ccv&PYu|HAX>@B9`60%CrK4HO zRjQ)iIR6%v6Gst^$j_Pw^-QvpY!<>t^oFw;6bL~0C&q}CNbbB4_tW>Nyq+&dsXdY} zeEKi4zGR+_WeXk(Op>`z>?gj_YcN+IOB1|;(4(kVbyQKDOC8&-utXV>%Wp?x!XBCH(%=)yf*Mbp*7T*zUSok(NkP-w~K~)nMBaR z-RvK>;RnV-#W&mV8K{srP}H#I}Uy7D5nj62ybrCrdm$l1A@I| zGmB&bi+oMj&)qnD@WeFlXRW-xZ|~%b5wP~^urj9;?+2gs7-p zTs%l(mfp;RS|E{rce_uLj7(?+im6h~KuSO$0Q+K9AoozP0c9aH67;`e=kaJ67*0WB zy{=4W4@8aY<;Q}p0?Wbjgui{SB>BBhN%+^k;p^JyRF&21$dtw3vCEW({Gr-XFJ6Bi zb$xAYWb@shn`@1VJeXRejG5z+(`PNSqR-M2d~2ah`y+LDk$s6T3OA|2gfULyszm4T z;eh0jkmg7>&JrCd`j!?ai_WQL|G zn4&&^L%}WGgc!aUUUo(Z!+JA>cD62Dx~Mf^=6G;*aJtR+X-V*rNWwBR{9m_p*Q7Yu zeOD@zpi7k%?TmBOO3Q?NcW2=HO?Dms;*a2uEw`@}=oQrt4kCBYi}N!Fv|C1;kpRnO z+&P=h;FqLSxbP*J3%2o!`rp28+@U{^yr4}=t!cM{toq>K$p7O4`~ptuITT)|kVDi{ zqKxnvG$0mi|8nea{W!|ArrJ6B^<^F5dYaW|-L-Fsf{|0d!`Kw}_<2#I6w<{BaVMm% z4eBH^*#lgxs5Ro3R6J+e+prpaHs4;AWdRVCn;m;I=8_|XA0k?p42$Pv|5sX)>Qpp( z|7)2PyyMlR!5$v-XoY~Dg0h6V%x1tf+qKN*kcg@qY_(;6TGZ>KWh9$SI*e5H>;cRc z#2#(!loNgsO;-6rE{+YZ1J&aHu2YkVB5U_cWuuGfj@k5xTU*v%)`O>ThFky|;P23+ zu(d*NqTh&`v5_HFp^QS6yIU&fqIJjT-Lp7XmgB)fKNJ!@{kSFz5p*|O@t5^6GWrTQ z&@e`|SAMo0zry=u3~?t-j}b#8MkEP=8pCVPQaN?id0iKDq=QfgCJI!`hk6o zhXIQf9H_Nyys?;iBu(YH7dJZuSV{E0DE1vOF|s{l;i=wwU^}NZ8biF%rTQhSy?$fx zq&J3oOg~n#3PnJ`;X50$WfkR83+K+Hqq5=|ImDr?aK)?E{A(`Bc3VzxQjgmM;YRzX z9;8pJspY+{s6@&!GP%r6ohNjD8L`(kWvz7ttS>G7AosYPvRAZ6*s(Y$)5)KstbIqw z(j=5!X|NHurZqx6vW#vCBGSxg!>P9OrF+fMi_zu8JZfGwT0}jzvcB+n9lO#-St_S? z?RFm9kIl>M`E0l1VMHmeM~>M?C@nk{v>LtgFkmPZu%rWBs~-3b0lmHeW_X!d3-Z5rY)bVi=sKwbMsI!hg|Uxlea3`4Y`RG$-8oBi>kw zl-yGVdr;7*iB5LGA+L*U9Dp`}j{fU(3@{5`iLL)Gf;#%mKsTFHW;cy`lYjm)s)uF{ zP21-lU7fpf)#Eh#Pw0D z&e~FQmR?}m=B$ZAvBdLlKf+3+jbi6@)^>Ve><|t$-b}*xtBwG~)*|Bo7}$rh4`*9z z6L33J^iSl*Nsr~Tb0_vZdfUH5{Cc*pV)lQYBIRqK9v=Q16EtAvZhODAwXYkR z-5n8f7chK2N$^+&uy`%aowQdN^;&GGNI`XYSsi~VTdxf;bk*8H&{64Ed{JL>8p;sJ zY_tLwn(;SKwIdW1Hv@kJ-#%IY7&O{}f)n6*zZaXzR_Jif{Qg)UTHjq07!T*_9&Vys z@zLtf)`9+E6LV^U(LPilw7Q$Da5QR9MBc=_ia>TTiE3ii*6XL0D#wUrE&fNAKKEkl zAiY~@+`)>shC}(C&fvR3kxsJa*^1cajPc~9m z$MnV=!%>SRqnY7I=3`o7nwXdfxud>2K=jzQVrgj!VyEM1k7cRHJpG`~0Scwd;tgq9 zP%{DrAwWLtWs6}v5yk2sWtnvjv+!_nE?$~qT|+Xe-}#(AmYS50e)Yh0Hbyn!gJd0;em39`0DMW zx;}XiFw6A2hDIdjZ`kRjW1H2qrRk<8WXA+|1-&-S#`)VXSdk%w>?Bu^LE zK;dU~u`~XOQtk$NCb{-@^U3920ODMz%MMZV2rz=(1}F)Y141sz=Q#-<+03!s<`*^) zImFS=q18E=1oDQ>n(FE(1+;jH%UKHjo5^AQP`PXVA!cnj{;g`USY|TN2X^O2Z)ay3 zX?BSC4|W1Ds_R8E*a4wdos-e~j;y>5!QtKY-=I&r_#x-31ITilsm*VQiAlS@`C1}j z3};%rC#k3C_ahFfG)q|?x*h>Wj!#$(ta^JF+}eMB;;)vCL#3CajY*ed>_evjhoy+E z3Kne1N-I!TG5Tj}xq^lo%ho4La(=_ZPCY37<#R(#BFz04RP5_U?o}h_KV05TMzeOC z>$gUiO547+0G~VzmFZZFvtmJ+MRN;>212n%?jkA5)3434_a-$-> z-Ioi?cDc(Sa=IfqnA!BbPS6xC7%-8>UNl5+8;sm8J<;iph{>fI^1l&7C&r5)Sr{z} z%r%Lhk4M7b6!QofSU#2XidC-IA_#g%+9s8|jg>a9WJcPk9@D#Mu*e zy1cb*oRp-S1hV>-@(cJRzgChR=WW($x6DyU3;e1MDi%t7WJi zSuoipU;xyTlLAm+1N*6EDcxF2_yvrG1X^MoWvmqsH^83-bp*eKv)Wp^~Pp6Z;#0YH}OMY+9z&`n?!5;dH5g| zN*V!3g{7ZjS|KwKWPS&a6`r)c#aO$bY*FGK{*yd=6d93y5$fMC zl_#pWqGe@&Qx2;CQJ`u5%RB)8<}iXL(p|YVmqF`1Zk$@XC2=?~J-)dd^ZSq`u)LtB}j1(f5e$iu?22HFF}kCJUie8}_U<13K1WNwi2D0uVI; z*H#FOq%kSUD9;XmeD=DOUb9#&bujhV;Oo0rDjIV$o0bo&T~X~%daLm}nWS8XrnCb+ zomi_Nd7Dc4pZ?KfjYbMJBr6iVRzn5K<0Zuvw-$p6i9IpW1(;cBQVa8W1331XBl((y zec4`l!^1zdSN&{X+lBRhPNf&6#IpRWri>N%?M*B@g7XGGYiM{*RZ5VXJ6Frv7M}aK z!Y&>&@*7if!#D1`^9+7Hu~~>7+g6)lJ&dPU+>V-H=0OZzqRNVZ@OQlcOyx~Gx$U~;tmkB;*Y;Q z(Y2_%JMU!VjwEp2ww!ouYd|7Lq3bmzm8&l@>Sh-4OwGG^WNie%Zu)Mr0fiHN1|_Xl z`}@o_tYl55Wc}CXD98|>OBVnMt1$0tA}=eW%2B*C&T6yZirTYh6O+;voJS4ww)p+n z#E+35+o_+pbqzg}X@mn)$8{q*s=e(0779KC*u%tO+g;f99O~Y1$T66J4DcJ#I+U^& z(&5)o_hETij=GepMtKs}R6t@RmV=c7Id0E<*0ZCUk@**`?5c^ljCJTzjbd`JqOix{ z|JA;ZZGTEeHix!YN+<55z6M*>2Fc>=|rb|&7WvkoL z&7_v&cBB`$GK&SG#AtBd&fghz+n8~%AM&F!LZLl+yP(ZK$@o;`?ib(e9c z;SFg|xUlN+KGtH6$^-> z4N?7J1#@mkil^NmXDSj0-WJNpT5 zVspQ-=q#*QCicJVWhzo%Omj)=OSL|r4K(?@s<;)VuGG;PlhX9sfy4TRqaK#O)tTuN z=l*wsG-8r+01l#8oL~Y&_Uq?THmEHi{4)Eo`;a;ExmB!=R_`tFAwK)m+68O=t1S`v zEo6bz0|7C1Na9}rG`HWR1v?paFw}1-*Vz9qem%E(Xub>mv`zpfKBN#Xyg8!aXCC=! zt=DwtAc&8=HNbC-ma#(BuENCqExb2*nK4$6CBI&LF7q8oID!Ox-*1=oZqNj%h0!JZ z8_6c{I+mvp%VJY&cG?&pu}Km$hFd!ApFy#hSbkuT(m%yMRl*xEboRr1FJ$btHVj#X zKUHmc0%P()!FML?rmZ{U=LCN`38N_EqJo5FTJU1xL}o;w*xT^X_t+qMfmy>PCZy+ zI2=XhaDWFRr#7*rYi#d(9E+XMYMFTSNR$t%ANGbgn7L*tbhQgU8;1LfN2Hs**-Xf% zFIRHscZ#=e6h;ItmUnU)#>}wOToYMryIvT02M=ERLaiW zd&FO9XS-KEx+!Vw2+&@SdKd2X8KNHl%EOu51SYP&6|mLGIgar+sbgQYz$i9l^R-)@ zaq_(aoQQ4%_pb_nTJ-cx+mCAB-KO8XdE;~oMfPl_`|w1{q{Ddj?QuJysO)Wl#9GF< z7?Sq#U8tw6p>EK{D{lztqq&e*p%m$?#Q++#sR?)PH9S~I==-j(TQa8?A{Bi|wpje0 zkng2MBF49GPu*54s{wL?jqI$+7n2z1e$O%;#MS(mJtYHTmJ_&4&8KDK{+p(#yn^79 z79$J4i0H=9K{b#oDfrDrZ5WB4ni?wxoLSzI2@GG>a!}f!=ulWAgzmR9HJZ>Bsn_rr&{m4D?3f~{jDvN zAp4pHyo4Tm7kq9p3XwBE9W*S<${?&(c_je8K`} z!K;n{8Ll;f8och4_UZ}o@aK3`a^c|ij>$i2Te^@Qui*hA8-%zxmf=5YoAX)HWP0EBvJP(FE1j1G@8bUX=!nbYQ*cZ1PU3C|yj^g1yq!B}s0^R?)$!a1-( zAYNU8s5=ZvV=0c`UqQFdo*v*+ zx{rHVs~o%Q{GzIKnbz-f=F`Cx4R4z$sY*b&G%;%6;cA?YeQ7P+%;WVN%{n6EY15I` zCM@k9x$tB>Jgi_7QO|tBXnIWTP4Qt9A*Di;flzJXs5H8ISCr}5$v5fyq4gSuaH8Dr z3B+U+(D=}=)<=Jcm0=my`$z!H90#ex-i~>uVENW0u6fMY=|^m_L<>h$o%O3=X6FWC zU=~K)&>+6sX6WK4OoH&WM`a%1FjnY|6v^s+?}S69s6M|UKGPnk{ggItGu=l<{I}Z# zFcqdkljcd5&{Hwzq|5YU~Nl&(V{a`#L2irP4qn*55V}iU?`QTnlM=9{o^Pr-7?xf(8YK z+Qmq@)2q9mY+)TTzV)v9ukBlWwME9`=z`5*by;hEKmwp(WwPA$K{`Fh051ecayreU z1uH<34~O8~Z+jHj{teknBp5>`9$1m?`(w#LiEpg7awAPd+E~f^s!m84 zVn^HzPsm*TJ%r#l?_^_axq8VyZ-Vmi!La~IGAW%DJhZH>nK-qd4Y;`R-xV_k4MW#G zB#eNjnMw{7f%Z^~D0>}5U=)k^BH}pD*#jWw20MqOpw%i=q7ChrU@67tG(VaH>?I{jhKR%cVH-Ndx z8gZVOWh16&aZ{L~MoWYoW%Z@I5Paf?dPJ3kOI5c}GV6bW*yQ?L5hjsDrODlx* zMxZ5Y{40JKfvMz(?GKxWw~yShdVxcmE?0S*oBSglYwpLy?uSSnI|d*C7&O=4W>I>~ zH0hWt9(V!0E9=o`m(6u0{)J$=%zamCjb(SG)Q}1MmV#Wu6Ozn2j=&@S32K^**QT(d zj-Ijghz#@Lp$iTOA>lAS)ozYlDqg}KaCGrGrR1v2cwGkP?^X_yHfMg;sw`yVrITsLqLoYDOH5FKxC0GCr7QoQ-5`wCZ}lKO`RU;os14BjF={WbDm zWmH+y73Y0`$l3XaOgd(}iVGN6N>bg=#(~SDmr3ws-?KJ*rC>1r!N=bro@w=o0YM(< zJr!t1j?zyYbtY=1jIgw=euB%yg!?I9Q)mCPjC}JGzyL%n)MYr5A189!^xl~_h%T-o z1%n&$#sJZbyU-xyIF` zF-o0JfN~KI5(LrD6dpk1gGjK)XG@-qpfqq|eB+vj8{wLd=VYuJ7LF7GPeE{0RzKhy zXy1}ez~ckvFS>lHJn5?bDp|hkySR*!vDEl6R_${)O{R(;ukKOBv?9Sr2cnKtqMYbt|l zz|`#up!^q&Hwt9sTd$_F_c1VjY!;!xXqxq(Cz<`>lKCR>N!R4gaO|j`PuT^ym3X?+ z0lSb>+)kjC_&6Hivme+W9@LQn3>5LAR7%1N|KesC+Iz|sh(r|rH8gLH5!4^bw7of_ zdCpI~m#MK+Mds`I4bQD@I<2;`da+k~nUx_Zs?Tm=iHj;yF3x3S7toHPO^3IgnP8>@QTS65d}SC*57ru30G zkBg5dGi_G}>OQOpMHM&4qiHuu9u6yytDv>)451s$$ac>_d!LimD5!R|9jBdMIa=Y)WCV7nd@9}RieeKD9;Qzx7)r#~ z6an)kVY4U~3>_)5h(;05=9lV1%r4)y`K~vstJ;Z2ML?@vNWPEpx0BybUs*=u_&h|O z{^irr-0N&W_jbPLqU9~4gA+ljHC9AP=LbnP-Sso-&ROguGoMd{2lPAz*b}3=-DE0X1ga-l+l% zA4j^ULb7G`#r&6tMuP%Qp;n7%OO+db^AIy^siUI%iZ`-dPP)@% zBz6yd+*Pf=Rl_4QyCE>@>`sm{WD%MU-+FQ`KdR-k<^1^>-y1qvEQAy;Y5dbRi(L(ts_0^h>u|zPIs^SF@Jj$E(4Qho2&#-~v2Vo2-}^RTf66U!fkU z=LZF<3Me)~?&&3(*=wR~!^m>xq+rnZ)Rb_^(@j5uim`;tfD$X&QDP6l52$j!iH~C^ zSvfA15xFBtX{Sl|}l zXNso?uKPuE!lz@8-RfGKxetrKodZ2+t71SOY2>_sZ+bhYO0pVepYd(FU8mecqR&kv z)QprJe*Q9Qqtom_wvtTSoQ+nT@XMN$coR9J;N@eh+Yv_wahoEEtMcMQOvHdlfZ`NY z74M>^wU%Wij)FXvouN{l1LwrhBSKU7tG8p$tu{>n8p)v^GBno3Xe$*P*JC@gou+dujc z*r^WK-Cf^a$SV|jcWfC2{rYlR6y1(O>0nC@48(TtX{h{F79EQgxPvRsa`%TrhDZsc z@Fhv*cU!KIg1OHrk2U(l`b$Jp2C{jbDOu)!hmbfZ7*l;Z4`eWStR<)T#)Imfn;O6% zvL3pXzbMUV#KQJoqlr*fT%Kl3H}CRtO{`y1csn9#zfESF(}YY)<2^u|1!}cTm4KTX zc2VqkV!5;V&Y0!PAzItxvczsSXRS8@OZ`R=o;~I3sunqSqlO*ij8D_qB(ek5pXT3p zw8fQ-)r3M9u2+2^hmBeJ8A2}>EHL^Bi_uJ1F3){h{oC%OD?RNtSE_QuM%sw63DL3l zD}+rp0qKchJ?w_B_t44`Be$yOLZ1S3zRW@=AC6t{&PVsS^|QFXuMr$%PjU6sHrhi= zHCZPjng)5NOsUXlDIsOZs2CXqQg4oaz#)&&z$1fQWQh8QFmE>uv+@f&JPd^3@_?+! z6?Hncj+{XdXP;l9ck~$xjOQ?wT0dO(^P+-mxROwP7xVFX&SCQ9VunbvYGQk&n^99` zfE`Ofb7`9Y;{w3rmYedsd>izJlV+DsktLq-rh6a^q!ej&KzD;Ua03`HNz-OjOSC=*8ZK%kh9 z6Hd(+P?qhuD z#%El*e}+L9I>u?bi@$8&o2A(+y25O?vQ>GO4sgE0W|+Dmswg@dt!D-OVttQVc{&uL zg~wRJUgU5HKg8j_kC8|AQ63Fn9emwm75o}@tT+M<<>{)~CO9Gfs5>UA)FM`@!J2*Z zv?X{yFix88^8MTCRa&#!x@CKgx4lZS)*TkOX1VG921(Ex<7q4S266W@jp*(pM#bcf zpi4kd$2Vimv^yY3h1_FaJGClg%$OYRt^AONgX)>c zf|t3uX99Ak2pFHco??2dtbNBXGOGD!vL%dB6aHHkibnAo0|p5?A|uNy)}f&XLB|p~ zeJrpW>EhJ5(8+IEEnX!=dliNs1w-*=ed;XO%$U?apyiKh?cW~Al%^KQ@F^&1U?X$y zOK)S_Dh0&&mZpxI%|;Vn4@Yv^>F^X2>qf5q-S2msSp1RZ8b7uuaA4Jat$w*I^i(rc z%Mrsj#AjJhej;-J)kpZMCG?gyK>p{}ZmH6{%>D*p)yEhAmLc=OZ1mv=rjpKRh9-SeE zQBjCQswZ{w05k9r1X2m>;~D$?7+Jf0^e~1=jFh6}z@R7W(8C>7;A~4IPxH$4!}{NF zf1qa_2YIj$wpU7iooa~r_40f2YcgLUf&{8EGmc_zAhdU(@r0!pQ8FjI#mtE#FlOkF zqgilBy5D*@S{$~B%2(|uNmf}3w6T@7yCN=yXc?;Ko>TLOY84gz&BkGI_u|fP@HP=) znL1f;hs}rXiZ_N>zVJh~+;4}2+8`z3un|pvOI6DtbR{JQ8lYwh;$-o9vBE01YP5cu ze$SGYI$Nv(oUzf|7RYv~*IIR)@2S^XVKv@(%H$5?Mi7;I9ZF4{OT@2S)v`-ft-mR` zYl{tmL2kCF2!ZLrv2C&+m2gN>Dh#0@-z#jA4!6NXG9Cj^a}w~oVA-aV6}F@{auOja zL@4qxc-@A&=~T$fqzIUh5933{~tt`-F@TU z?rsUCsc`50hE0-LPm}6)2DXg42@A3i7rVB)zRH`M1FV@5$sV03FP>eZqC;&Mh$q0W~0qle} zeEBd)5>v|ls=%^0OB_7;%|!B&jyzg-daaM~)7bL2hmq-iR4fUv0(pOC^Ra3#?aq^mR%o-O8$JpLW-B1R(EG zasQYO#g%4h%(GVuNX}QcZcH=jw1rt6+1S`E?c0L|H%5M@Tj6A6>_Z(}4A^%!%84!) z^HI6-d+4qXDG^ynF#1kp{0o7;+UfB-$X1sE&uiZoo;9)P4(kW+RBRX%vL75WFYrRx z2!wyZBV;|DtKUzt>N#Wat%?Qrro}_4a=w;fzDE_kci?eHnm^uTrc;8+k&G4{DOUvDCQwi#}&)i|6B?7F3 zcdsGD*6))HZ?;Q(WD}9+2j6NQZg-1m!m_DU{0IR@y-W!p`D7Vqe~nf&jG4(5hrC;Z zb`O-BoRAr^Fmh)!gdcuUHhX_X_^!xOiyaB9>SY=nVuo)tTvUe<%Hv>C1$4LF9n?6a4s=qB zwThj0X%~Z4Yd1njFH&sAQ9*a4;G0%+RDp_I=LTl2YhHHDhB{;};e)jzW7a;BC; zKf@Ee@c&?Ddf2Qlx(r1t<68he=*WT%E!r3)ZR)f$3<>ACJ>*ZmGH-R2Q(UqbKS+qb zE@(xWGHq%K4>;RyGj$-`v}TgZ*XdaCXaQh^O^h9(KTU+AY~CsgMNhuw!r8mmO*X)| z{mxi*aMa1yA;e`=FK$d~?Rtf`f$Q$Y?Jr~<4{zR)wO~tLPrHl#e(Ch|d{H{4xVktn z1W7rBsGSjFsLoFtq-J~7RYq!XWN0_N8~Eh%YbNJv&VI6{C9ZEIc{Emi3;o4DGSNq! z>7;0Cp&@W_iCgMoMniK-iHN0{O#xzGB1St_l{qKhqEH!~o{P$(PH_G?>&ol zIW!m@F~hU(Z8@;MXm0>e^@AN9){8)U+Qe#*GyZZFA{V(Y`P-PHP$eLmlT+RccIZ3& z!E?7CBSyBi3l&k=$PtBJS&E1r_2h3SIJYKPv0*4dv3PQ)-ov8HgF$G7i9#5WcF33F z_!6E1vW24RWEO)bDz2jq?8s8WL>zXL*JRqqeA?W6zzyTUZm5!PuO~&i|6p+e8MtTY z9ShQl(oKHSlT9#iN3FHwJI!na$)^13Ll6N1a>Q5p5zZs_nVb`!8*HD=(%rqqPwKNv znYr>SslD4Tl`l7R99~SuQg?7;+j9BFM|&gCibR>DNh}xsWH8To`sq1&ooBL*;#lPu zq;n!$^Y_IVG>a-b?il@Av z^xpQ6_i9Frj(yzyUMq4W?T6+ml>MQPIK+S-ESYup!?f-&3eVNTE7$!+=?H*i@x_vN zEgcsn&v%`#4z9eOFkPq5>O0UGjHN=!Xq_b`8ej+Es?|E;!?d*4fWm5>nYU;X=XjnT z*2MH|R30+0JG zxT^p`fWI|C@N!A0`8WBdt%#97)^855M4vdw%LG`iUqkBLqLyx?V9D<>v_p|zuqwFh zUMy=HqI_RmpwaoBUemV?RfM8D{WT$0_U7wAaaj$EfiBS9NnwkW(jqvGx5n>La> zNhK;x7SI?3!aj*e=W9RBbzBxixOa<=znp#B-c~a? zEaz-%I?QA5^bvd59K1LHh?nX6V0Q9^z{dd!Mh-sm<=E(!T2tEJ)^0Kgsfhaa}v^ubWMb<6j90|pV?U-aiR zPW%61WoB6GR4AtC;SlI!njIqPNj)|)vR<(MTMCOGzbv&yD9&q8xY>e<80ATDx^OC= zRAVHRJ50xkSObzJYj(yOobdjb-j5c`IL$DVt-n8aW8*+j#K%%M42S~d;Q4u*sj&He zSE{~=u5nf__NJ|2pn_|P|DAqeu`ZKXKS>f=s)w>lU>pWp`(~W{+>Iv{i`N=v=5Y`v zqr*4d!WcsbD|%I;R^}_QH-NLsH=Vsw-jG?kFCVP7Wk0M5xHly!%0pxMzPi?z79XWu zi9?gB&24;B{ae|@Al5ZvUu_gC!Jg|}8Eu4#6d07Yv9ts2dQDuQs5UnQf2m{&mxmCj zHvTsprw_myT`%P2KHqP=Mj(gc0f+hSe0O{?gowz4Y9v}t05aV;W@kw0Gxu*@>webO zv+n-*@f{ACO9{C9?_)IHr!Z)eh{LEy9I5_vidO{81e^F5Oaq#Sms-eStpRqG;#(5b z(5;l)=IfdiQ_%KYDbSF8kt9-E++u!i*gw{*jzvJKJDtLRBY_Ne(>kGNa5?vp+60&%>5kE?Tn&YUad8fX&P~-T zWp%F(whRfbnAL0BUrxXRJFmy9N7xcL6PfIksurJ-*0c-j6*KDg%3jSA(YWaP^6BrX zN*y2~Z-_MRqwrn@NHsqIo zO$wf}%Q+!#Q}}keZR~k>tA#(bDK=6AOft86+`YHc<(Rr65zf~u#`A(Xz9Mex{vO4p zq=+J{Pxd>Qq^@J^bFkY-_O4$X0&b*=UBj{oALlltf~{IjhkhFF3H)SOm^x^*pPaZT zgk9$`;@Jy0*Fkd-@yR^8a}+WCO)E!%7gnFLwC0IoPU%r3!6AyYry(HEe29QR&h{CR z9ELXS_=__Y= z07A)WazevI7%E?=zMpIWy$6h{&JTK@&;=j?jgHyDioPBBA5Hi}HaK<^++pr|##Pk2eu9q~R>Z}OTbz4sT3vXc zIOYsUsxH=LOVmlC@VK>ulo*IeatlIaE5V#ArQM&KbCsd_$7U$GI-1I75=%JU+4ZFF)8#Ok53=OI6&j}wJg|bCzzX`1 z!V!}qo+HyM@1_WWiUUdF!nQ{N9J5RM>+91peCMlw=aw2Cx7tNr;;`p!0514^*k?EY z@zfX_LEI?k5N|_~%rS-$1tTM(5Y@{!V7uL8J>@`xDv)MrCLZq3%ulmB2uf8+aMZ$D zS^)s-hI%e11qx`7E&B;^KpOzooUD3#RW7B1?llL`cz}vPoHwjqKXZK3?k` zb)KcXY!8!weN*(kM@gNDC0XB1X|}JlRbBiAqFXyeG6{jztJ)}+(s9+@G=B9Z&Z};q zyKkV{|D0T{OJz52?1(hsyF?$?om(0#RYP&#>zyG%wyEXXuM|bT%iruj2=gTtOv7&? zPjgyx#NQ@x$uwZ`9lIoT(F|t{Ba^Y-J|5!SOm#e3o)n#!O<@1K8D6FUcNjqoICKmI z3B=6jT2*lU(}|#$C@SB>T3w9q^OOS;*S`%~BrYsS!tO0CTUlE zJy1Da%6%*P_6zx2J)o8{#z!2jRmCnU4d!5&7MVYg;z{maQW!Do=(e#Li<26$i1KtM z{VcMdoTZuN6$6`AXL@w>le#Vaa&@?e)hqy(6yjx{y>iVRN_U{ga*MahH5j7X{bDFk z$fUQohEeu)regI*)$2`8p2r*<<1yPO0SSk6K}D)LAO&)RW<}KQ)JyURY9f}6jU|u2 zAW~wjQ>oM-#F-PmRjF?%(^0swT@)$LAHKRe;}imlNb6)Ps%Ilr1pjssn&7{invf)n z;@@AuGc73`$~V_%YtG!rw!0JAxw%PFX0*AQ+y?OFxz7V?z9Yy{Fu->qooM2^2-;E5GwI-lN0=R@JEt;I6$!c~@Cf z=V}yZUZrLHMUQE(0L8;6Q{6FfSn`d~jY+top|R^n+~Q3tAKOlJ{U$b1r8dXvg99t| zQnBc=Wa_Khv?STVjo58ekjn1JohoFXKZzn*H81BqeGDVba0s0MB+m~gU+t`Z=)2Nk zeeUsFrbL!pFP@WM>P&N~9`>)T>Q9i?TG9lc{{UA?hfvF=s4PuaC0>6(=?z@uhqOj@F&P1_eU_On7$mO(^4ahJ z_U`V$-A4Zmx?jdzV`T&sFYBnCa5gPbX(H<5PD?9l43CI z+oJ>eL@tJXGLaGQ+kbDF3#gVWiWyBX|L?7jAR)~473`&6ElwCPP<|KBKXlwe)g7g7 zv$_=r5N2zZ91tTscE)1h-e0x6{KGYFSYT$e_|u)wrMy?e>hBH!)l-~;8Wihlwrz-@ zS9>~90Z={Dba(yuI?dKh@tR)zKoe^PpP)eKD0`$SY<5BKkD=6+Vkqx^zIX;uy2Q8% zQX_L%YtIMDIl4TY>P6qD3&n96RhwkrvN^eyY#?WGU}Wfj;eqy*w^)bdcSKD(EJ{LV zjQQ{1#n~?IL9-ubCpzv=M)21GkPL@#kpM)6JFqj1=YKzNS{eYuL;MTLYkgf(#3-g8 z#(*mtB9`E}S*gd1*{~1aYdT%{k7wIq$e@}ik79? zuD~d|LV_;KVwLl!qt)g#oncMBKaycQ#0j|q`M0aH${nsSOJ5TVpAE5_S$8@K)qk;$ ztr383BPxO1+rjk$;4_?Wm=~|6;OdMJDSf9L{#@4NqL&aF zouWA5TnttYk*24omXFS#iKZVPdx{Y7s7rCg0IY_MWo21vM(4x(Y?E*cS{1Q9340Ng z>i@$Q?;Ti+q_c;m5e`M(=O0(kTX2W*Lw@7#<;O)$%M_Yn=@XF_R0_?tRn@u-q8%A> zD=^7Dy7Gdh2xv>KGVU%_M8|r=En(Aprp-$dSlsE(`E=uw`r3G@T=b{ShSm2 zKw$ZC*tiacqy-(%EysZw!N8fn{`ly+v+tIBTk;Z5UkllrtU&iVm{kCOJ*L+0sBl>- zno=g^qCBTv*9UF`m5R71!frL@z-GNs;2UCMRQz+^1RVboqdQ45rO2&;Z6(mnU(t#?Kj2$83s?yT_Gkk4I7UTrXB#bO${3 zB8IDXFLjSBhJ1q6y*Oy6@@JZCspW-$CL>3i%8)J(DLAPjdV+~A$lB90==x|;9_iXP zpGHh<0hSm0R$l{sihkuJkDZM76(SzBI3T_=a9R55ro3?N84nY(W23mi z3!JPgY`E$0?N)pOA^rp~R2 zVfX*P;p)1c?Q*~I>3-~sCCOPMe^naka-%|oU&Okx2m>ohIBa7f{IYS4XzyOfV3yJo za;LAuN8J_IY@eS=GJVDHn&isijt^B}r;Q*rB?UWc9C}%IzakFXmiT||y@gj)?e_<& zh)PJelz<>5Al=b1E}vTdJpRR{@%6jUF-e> zU)C(vS->#o>}NkaKKrxxgCzDv+GSTr1MSd zz5I+DeMjnr%=AQ$@4)P2grFmR`VrA4eh&e&DTeuVkKP)$<6cPn8D>rlV+h4y`g<=mfy}q@+iMci?&s3@o zvyESZh{eyz^ns#B+Gq0sAM^4H!H7w#(n`>V4wtyZY5%py$n;6M#Hq*J5*0;JRY034 z&fped^2cu*6ZI{8GJ}8x^4r!S6WPEPlwTaUH14Rv?IRGbE7jW2u25A@QW;YQLSLQX z++4n%Ri3VV_=|TLV1o!(geN=_uVrteJ1<^66%*$-ADS z8~xxSzsaC`1#`&$Xv-t60}Nx@^gPPXmI{6Y)vrEDk#eIL6X=O$Eq+80P)OuX2e|De zvu9^1fwAtQr$TuP$P&$oeNhO@mKftAid$4^9x zzlb}eNGe;cRU&#TA555uCUEY4$M-Ss~nV>OWfKG$M>zha?dWV;fmN`8Tb9oFn;oM)f)*L1dV zZ@^;Jn#Mopm%2^ar~7|&xq=dU@Pj|#%%cDHP|<*&{`3$Jb?>js+N8eCxE-TD{O)K$ zvr1H*j8q53FJ8y8=Kfx<(s13_;CKRtLA?;p0e4)0v|(ia^ts7YMz1dth*Qkt+TWmT&Tn@v?l+1}lr{w(JJykmEyMQGa-%@+_^%+xt z`ixUSg~&mEY9U*M;kGuz=hS-6lVkz7t37ylT|aPGT*!2HEF_N5W%o+k$yGl2#hO6S ziKgGB5#ZKsDgjXS*6W}608mZ4FUb1WR3%V(^$x$n$A0JGQu_zh@i@Z4s-GP~@?w$r;&c0#PSS<)gXw>TI#_ zYw|y>>(c;2kc}z}yv(a0TTzcz{QlbO-vQ1BrvC`d6ThDYqwef)7Kjp17o~$9t0ARB z9xq39{ZOM~7b{hn566lIwmoko+Mnxh7lzgD+E52IgD@aC#(7q7u04ir<&)faoY`C<_O9HjaflG^>$u*QOMZ?+*jxtyR>o&Q2UnL%JaHg?=KJNj%_ z13t-`qP)dw;!4D%g%J2PV2SSmHA9;v1nNhxZirSnpCtAEu}O6J&!ze>MRwH^N<%iL z-8N}ovs7{QHArJ(i|3|RKP`Sbl@f#hIWJ7ThPzaC(>t4+#P@8yAmosIqtFfj27XAk z`yiW-y*?)<8WIv{-XJUY;}t0ma{d(JSe9*!EpctOTz=SUofYhk(+hj1B1g=ks)#4{ zyVoD!m{Asv)nLvyc#1i#)ay2#9gQ7(?Cx4OO?+!#P%5-~I+F)-sWM7=yEQm%7QU47 z19o(mChv|)v7Lj%+wy2tm-|)CdUgR+ew&lPaLg=0;q^+cDOSi=`?2=6)3Na{XBccQ zr=QGuEWeGdhsuH4wG>D-MLzG&&TS#Lb&ZD?6)x@StdiVL)R&bHe0<#HptBEtZ@BQA z4M%~E`n~-CNs&_BCTVcjR@k+=`;ecJgYB#$m)LhqaAHYO@+EKVt4CrU%GyE3p=#3l z@WjhgO>VbazM8bKV(_ERAEGx@09!cx(55xlY_v8+w+aC zd*ziad~6Yku1AQ9P6(M>`Aciy=8Y7te|~-67Mm=D2LxtBRtKpGh+OSLcoL~Iy|$&< z9K1lIMTeaye(`ksy28k7blx9#_Wi2v^9`+aKlL4tLO#kY4fzja_S#p3*%a>12XPa* z{0$kAwf5m>8_ZcNKZ@hV*5Vv9r;I-i-&pNYJfQA=Aw}JX{x>C*lmEJzNuk9A=MH(D zVhhxJGTf%7fRPWr-~TC&4cSGo>Rlg>vh3fK!Du>b5NfD4u_ahyQ-=@IZgfg(d6D;} zy|pgKmIpEkTh{C{SLdRCHPG4cSKYsc zf5D<1P$ZkSab!)thM4(JH7A+zN#z2CMYGIk1s*o+(CcA!@G9TFqo{|mR~s+9eT-Y- zNI*@KmXpMHu>+j!)#pQzj$%s)k*g0l$C~#Wxoz0GoJ=<(q{-e~A2?54tWavwV7FGL z-$F6&ys&NkqGVq8mX_rp!ONe;ESke(LXA(a%Y=UZI&yF+?xTI1Gci%n2f7gw03Z}s z{cwHxH`CD1Krg6HILRAOYOlfO;|yH~x73EHDZ%lul|jse1j2@o-!b(Wmnb~YGwsv{ z>S+W}2E6qnaei;e-Hg%8;tmYzrpAW1@ZDQP3O{s?N5`x`I$@D=HqPy)y0#qc*nl&E z6QQ+t9Ou(flQnHSv;w`6KQ|Slmz#H`1-XUv`JeYivMP)i7p25y&RqWLQaC8i)NMXb zPg%+NR@Q{N6ydL$*cfhd)L%O85ekw!--&5n6Lwz@A!hfiz9W-R-(o$~v*QB|Kg8kTaDe6_kTC12$3Vj%6)1=s9Rqk!|5Yo2S`1Zp6X5p9E_#kYHQ zbn?_QSVFB=&4li|=;QWan@WmL5pq<=9Rxmt7R55zS0_)9u0F`gXB(sUfZ8?{P-_)&M)c79{*Prx%Ctz@t6wTHJq)pl|*UmazK8t1w`pI|7WUci~6DSqBU+>Jc$l7SAj#9Hmt+{q0e zen3%`Vb5&=Y6*wT2l>sTq*5L9VDYFthPX zg-T_U?zmXW5{yWvm5x569Cg8@&zbvuJ4kv{ zm#r0WDt>n`rVjN%OKaj=uB)NbFtm8a*dIwgVdt`9EBr#}Vc@T0yc1r4k_|B|qAK{W@0vIlqSL zw&cete=P^c0}KWQN8 za`O)Vw_I(Gg6`|-Qp;MuMAc*NG7W#zsf)cbxiGm;0o(fCXzx_5xM^eoY7gUc*p%{iz?dNVxG4rW zmYv2wGw^6;1yicnQTm(v4bb@*06HIq-_1n(M@^oa_sJ!aH{rJ9uGh}>YBh>*KCH_+ zMSG{7y2{uM9i7R$u7!5K#%xX#XB21YH zW6MWfuaViIPD6j90uKZW)ZXs|uq?SAU0?*B&k-y+!XMA+W2W;YXCJtzjmmFx;FM8T zQMFXW>}p<@tmfv+n=kBN*Q2uDcoc|71BkGZS+>G#GXyX zX9+gqr04bD8!Up8_-~ZpO-MsPj5{7kw(N6_%&wTmn~3rGFc3ec@=PvKBe#mPi_TyO zv8BDx3IyZrm=hQkzsE!1PjE3y>@w5W;Ff)~ys6TRs$N=~UA>93>_?wR)Y`ye9<`;) z{Au)XdN>ma7#P~YX2B+UezaY9ofR7ndS}R#NVHHylpLDVTO+Adhj@Qz0THidCY%f* zE~_@w;WD-05PlsO0WxN~*d*8(d2A6|{w`&;B(25AI?*{Mb^=N=SZ{s=-%z1U-J0<3 zwF4vg1AkJm?at;C7d}4}qRqiHG?JRd6!S=Qft*)C!-rAzM~lD|&gm;bK%wl9y$qYq z6zts2mGwXwi0UGjd<)piE+Jj<@m_2Jb`<%c!Uz%L;`}75i^s0S*_f}FKcdu8tIk*l z61!~vy3fi@YSiB9eZD53M?!Rf9)Y;Lz2B(^Zfm2q)PoJNh1JDQbi76IW~UDV5B!xd zNw-BwYbARuPY2Y4-cNRxb&!th>xtPq-oJ?|+6l?2vvW1Avxd;#4BpzFon&;LOTIsX zA?n&4L8h!fwpA4la_tNZg^(3}xXYRKW~H4^;}r~OGH87Q#8It>qnJXo6Aho2ywwTB z-0NoyW_E-0IAcbSIoT$xC|h*2?ndv#KXoDy8>J{tV*Dwr26TxSwnO;${fQc8T=+xE zqG=o`cUaQ-t zlkidd-koi1nz^^pD+ipNiQ6M6VR1pCi5u!^qNTD6brd{3B`eq2md1iqH~HL9)GGo{ zLtbc}SB$vE*IWjuf{<8oTF$%Dm)%T#{BqrG8Ty=wKt{_pYXz@b(5VGxjt%+Vmkz%c zq0rqSWHFEmg;YJ<2z{)nE4*Q_e$P`E7!}D~LWY;=V^O1#2Q>`72ItXcsQ4p?UPw<@ zAOA=q@Vf{j_?BsD5vwz+pVb8M3&vY2^yHNpBm{)!hpc~_Ji2+gEUVIZa8mj0imIqM zQ>|*1N@+^MAuvDBb5dz5g3?tjP4Qs|G(abI^Epl8XRUQ9Yqq-B<&`LrD`UHHXniocxruK7#> zz-{R;wCrh_=_6lyc}{!5B`hVAOpQ27y^Wl-lvUNKh^%uCWXbWqb-6zk?u`coK)I+_ z0H1`DahKfPJSfs_<+Ngv_-U%aI#jDiI>P?3_7p2{67;en(CF66pPIJbN}c{FoW<}2 zAT8g4>pX#|awF{3*)2n;4o^B?NPQ{j{lF)jE_Te+TgPl0Oqyk-2-#OO-hl5P(8nEV z)sM5hcwt-_llnp*QHi%)SZ%>Fw%(wEDztSavB{eO`IkVIn-}0{?oPv!m1z{3#oA5mnb#UhsFc~`zcgAwWmL*qK4aYS>kM@Zk*C13_Ek%fL^_t z+7M-K>2UvDX-xf`XTagIQ&ffYht8=H)J<1jbdNbK!pI7kzys8RmczSH7siV{1~bQX zW$rL2EWpnU$Wu$SNB}mUs0ZN`jQ-f6p#Y)C0r}v!k3Lq{x0BiWgwr&?u4|^D=1Au3 zpkRtE<;>%i5km^HC1sA+peX9xs?#xveSAyra$&8$eu5MY7h9-Cs5V%l3ZBF&({cDU ze{#7*DoVFenzkQ2woZ}5>xpNtKHa=1$T z0*ZC1vC45{q6|N2V#118galJ~v(bK2aa*V(1>x4hp|uC~jPUE(c|6DO-IPLH4LeDG z!E++YnSH)7UlLIl(1`HTE`1TOe|P~ohg<5HQ=WCEd(Jx|a86wy0LZa9`y#%uA779Y z%5V_aAq7ppyE24YDa&|4z0E_hrR8-eS>T&~XjBi;R3)sXM7%KI4V+x@N^8pYTV6l0 zVP>2a!I?qSiy`_cTbmEt*qu*CQhr4!nkzt33D=r`abNM0cqSIN7WcN6<1NnQ)xa8o@UX<$2l`JHh4>=x_@d=9Y{_-m z%Xc^|x@1dlXeX_&cvYeU{dDU9o+_S99QeY)#=EHcGTi29ZQ;(i; zP?u9htzI=05p>f{1i(`#&+}#yL^&nz#Au;ui zZiw|xBy7Y#kOR>m3;P)#qN%x1ia4dG0cU-(T$%Vm(at>aYUGJ&dcg%tQ|u-CjF@{3 zsLUNVx5Dqn=%?6@8X80xSB2o3eXn_M7>;wWjd@5^w~$l;jM z*a1P@E%eRMo3dzd3(yBq`f%#0UbHg5>$7orAWQqHl7<@n#^(YgJ@$0n2sdl=wD&=S zac>k05+mL4S-NFNu`moj02R(7-|%>*BDoy{t9%K4MYt@I9LDjP#q5LI$=01*8F}Q7 z!|xN{SJf;tM7f3AO3z~tX!6ShT<*uR8*t0Ih}DOm9xN|vuQ}-AtC>>gat80z644}4 z(| z%d;%ml1YhWvogi$4YF6pG}w=*?shrEH}6f7RhA;QU_6Ou$RDEXb-Y!2Q1RokH6>T& zQy$1sqy!sl;{?uvzTLJ>=357gm%xhI`#459`}t;rBS)1AuX!1f>q`OTnXvewO?kQz zqlSD)x-FFSZFIT|TOsp=TJ~CCA$Rs_#*xB%fghp-tbEJXA)w`Rm2dJ`c5>#G+oH#( z4nMdhk8ixss5hD=5s!yAR3>492`8U-qwj@~mQ=qwnDzT;T;Ob7;3oIR=Ebw5vY6Rp9tlr;X^?td z**xe-$Y7t2Ve+^`XUM-YmcdbL1a){UOe^BD)SaDD5w}`b*@~-iSvaharNSCj)X&wL z-hg)2md-cgIBh>=bH8!>K2X)g(H_wjk9HOZq@2~HI)_s>gOSO4xsfXAoqyGfsDPwn z8K^put*p0gxxZN9*4`9MX^7HzZ=uPA^x&DcUaK0egY)B<5!%uG&Zm`c_{4nt1Sw#C zUv{Qj1!h2Qfzp?aRhIhfi)_9{OgTr$%&mz9ewSrAion)(_4g`aEeNvzRE%KNYcy+h z7e^}=!ONV*SYRgCYF6<@7Rb_Nf;TXjI9M`{@#vxO*9?h z$(%;>*S90=uHcM*`-Li>c@19im_IXJb}Rh2cUj(tWTr^RDwZRFRDLUYSXMQQq)kxn z$&29<@tTi64?pT28+UWR3L_r&Ks!FGvD^Hx!g8+?2(8m>`U;-I{Ji_EC8lvkRDT&avU?(hsg9^ zi@y9YV|y&Hf;j8zQ(-|`vj#7Fl-8QPNavO+rj&6yzb~Jfwb3ppR{^JOc*}{$`v-(& z$f5Vt>Bhwty^zZKg`hXd+Xs3I9&6Qd+mh*)!qvgGBD(lmR-G~c)%F7+KqrUU<>_#z z)-q^~WxVSyJIWDG*>b4vS2=A12#|`5*jjyrA+h}tgG4st1i~4UK&L@`7r)m`fjRXV zDSy)DZfW!kvM?WE_hLR}8njoUnm{|>S*Mj=8f%!Jf-FVER(H9Y%Hu!#tfKKFGmPe` zhul;#N+u!O`*mlNg92$K1OOu+Fk&w-bDI!XpPI?kDq z>!nlH0_K>{#1DvziPPtzG&WPafw6C~YRfrz?{l<0Eu=?Fm9Z9pR(YUx*K&&KqgV`i(+ch$RIfds-fvhBCl84^Apd%a~D;QsDxs{gw9 z41=1I;<1dIhXR_==M*ouHG<8wyKB~85^afc84%Z7WwI*)vB(#8vD!ZNi{zBWdduWR z*m};S&P^6`TA6Pfy!(2yI2vNhBKJ)xaycdZl@gCmn_=XuQ91^Pz4BeNh(}4wlize? zDETZOQ<8wYY8>dPRdz(E_`2fx*gL+@mhL&tCvqwA$C*&Eu9xYb*NdAMIA)K?#jCk? zT1(I&6JuG$!*h7x{R zIUFoiysiJ`Q(_<8Z#>165MVl!dW9$^1st1u<$n{5=ucxJI$Y}^H0>u$<=&(+B1oD7 z`5_-fYGAz)f;S(rfS3G`vzqSm1De}H^4=%iZ}ePy=#&9-U4lBNc`ulDa!CjOdP6`|(M2anMVCKOq)Hrn%1PQ;SNZvF z&rl56mIf0oTwxt)M=?g@zl!{FwRl?C7bu*fo`1Au#FVKl5u55h)>&spF7IMj>aHqD^s#IZAZoIG^39bKQU!<(F)Y(A)48>3KDhA0Y)D@x&1J zET8b(h`dg_shjxrrk2FjQp$CrXTm5;A5>T=oRb>?sO>iS5mS*g3z*rqyt3FQdFcwg zV2vzI@8n0rUF$EpLSA-8TlGhdev^IJ=5xAoHLpmfE9`c; z7mfKr&7I!ESfK2rO)C^c@Aejt2wQu}7ip!vY_pTA&1;`zf23mDnhq3SOp8(=S)5Du zzxJQbo7oP$BRpsgjsAc2e?YgxL>)RR_MO`d=X zBu>nEb4yV9qjm8!79G$nEG_8nTYh?l#{AHXxM0+ycI++il6p+qDYL)4ni$c@W(&-5 zrFLY>{`lC>m`*UPVE4*~4M{B5f9&46Ydd$i`65$y0wu+Rb5jMsHK~)J^<9I^Mzh~c zI|MXE8FId`lf|#X#-LZcgU%W7yBcr=r@O0}>&rF5>gO z7-Gx6daw3RXgb@u<&yWPU}l&?;YgD>ryX4W#>z~|)UWY``rAGn2SpkYqFXS|m&YFy zGtK7wqV7IEVXWVEp9}K6E^jr#aYmawMSV}%MO3=+vbZX<4jQC7iTE75ElTW6n} z%Rq97#XscFKe5(ja#>u0I4rBR?#4w1c{Sl7eJvSB44gPej38rFCTM?!Y=q{R5rA;E zdzr4cZ=^e5fgq@>jg^Z8is>9vkr5fy^l&L_dJi<7Z?fxAyhQxL8oRUI1maUbtoXxv?-$e-GKb}_zU>H*GQwA=aCu%!Wj=s<#9*aLRf z{TgVg{N@tHe8`wnDZPP{njnoEE%WJ6CtOW7jx@u{NwiCYYLKbG+Rl0qP?o5rt`G7+oABsYm_b zJ}*9E)mu`%I>>nJw`nKfkDu8YpnbVhqJ@yF%1ocJUt9Mq)AR7Y)pinl+=Ut+BrErZ zM5MVsG)Om`z7*VR$mb>Fv{OE|NRYD)rO^(_2oueo?uj&{^35+!yKbIJtuZii40Rl@ z*YTT5pq0@9soz=t3d$u<7t=`M6j*CtH>3~ZsG>(Eie0*0f~$F1kf`~Q$+X9&ZM^NE zvd_2+s2duC(E2b|jj&Y~8IE^&Q_@1=^59NTl4U7&_5vas42hptKe22K9Cnc5R&p(y zx7}QRs-5a>#OnpV&`i>-a_TwGeX)Z0&iyg>x3`kQ*H|6SY~%UVGPEqym&_M86e09b z`e}$-CCZ;S4&Yh&m+u%hS$!g5jpfq2evRNV21+Nt6WyH z^4Tgid|Ch&m{qJcg;>vnDAT6pAx>-gbjDhA0zsS(GL70{CRICat<&~NOc?xW?m(4r zlS&8|;|4GNjqqt;Fdwfk7|sq9@mn)^ls~s@cR12cV$Z~4f|tLx67vvDmG`>@hT#A_ zMWT(Ea7dZ-V}@u|vo|h#2{)V|258jXQp-006N5KgL0&EO_*eisg4#-LgiH&09vXfF zDdz)EOe0)v>u}QBlbnz;Jh9UL@>5DhQ(lawNoWAM>_W-C=75%qrV7~}lG5_gH5}K( zRXf!rAjI7G(sR%n$hW-7)3D@neX+(Rx^J&jLj*WLiyOXv4McR9@+K|0dFAi}U6B-> z4r(TAZr@J5i3}L5vjD?#qJaD`VdFpyvR$nwpXpO=c-l*Hwtyj;1T{`&uobk^WM13c zz2oKhjAOy|IKRAAF9BQ$1!c@|K3rQr9Dw@cn{;}Hn~J(+RW8F!nkO#!*cv*APt_dC z1VFNEDFoNw!)B1Exf)43*L>i#SiFT&(T)Hig+;+Zs;x3h?P4@Kg)ev{0Lg!Sc17Z7 z;yyCvYr@2opoQg4rF%3OTg0~^_0#=-p5f*(*wEmDbF#Y_X4D5bj&c|rh>U~WE*7p{ z)ma2agCR7r!H#Rkepl_-(tH4mw}w(}SI)AV$h6e|uppR5cnS_+)sNK*-n=j#uIpDK zi?5!X((rCLY+8PFF@0F+l{?WjvsK7|uyYeu-HSGAv0b?Lbhq5Fru^tOe+ARUgoNLx z;{5?;>M7-3>~MyTS%yCU4RX2>4E~G4GwV)j$`b|&?c=5j`BIti{S{U9p!HjMZme-s z{5KRC;A~%X>LHAOOZfODskijHA7(pZixpX_y*s{pR}TknL!)$)DfSO zx8pbEa*oR|TKXB%ov5TU?S!?*r^o228E+_KX-6LInAbe5h`0-`v^w{^PFGTr8`z-G%HqRQL!v-DeNyux%fWU+wy{a%8W)JjW{y|k_u6y7{M9I zP(kZLnbUECsp1eVgkSLKT+NoYvZ_Z~9NBA+M4&(7>z(wifjF81Z?So!dHs!q?zg{p z$43C*F!*{WX5w#S2+*rWdz&A`kEU)lzHs^!#Odu-$);e&ICge z=#y5((tSKDn90g$3>1GP60}TkNt_Pz)CTKxFy3p2elZ3HEYGEqY)7g(~h{%qgtntto@QLSn?}yWw79oDq=E2IRJ6og6PW6_@t)KTG!Dsh9 zwuhd!#iHQ$MsbX%FoJA@2Ki$ByNvL{(%Ng)0%vL%5N8i}UX4MEqxSynXjUM=)4ol} z53~pVHdu)p)eRh-Mr01HebZ zLBPbabau{+nNQeomUgZ*|B-xD*z}ov(YUV*^;XInLry@c8zcH03VJCp_C(wZ0|;Jm zo;BWZE?z4GWdfbgp|O7r(#>Wz1x7(>{yI;2>ac$dMkBIDsI8%Ctm+gXz1xO|KhP`) zT&(6Ygh4Ti%dC1H%IN`)q;~VpCSXea<)5gg9P;_-Qj>YCk53M}hbQ7cK9iZ16tKG|ZK1ro&dsIRE<*T4`r621$v~rG^H#gS~47iw} z6xjXUymPbnZlN_0l6Q*ampzYlxMR(d_~BjB1-*yr!m{jK0go#f>J0cM&vLCKHh-pE ziW=Y$`czXuPqBOCXf}L*6_nYR9`j5!IZ7L3i+MybjYQk3c7p_}qV*JR44}Q^Rpo-y z9+U(%p)RT@BV#{Mm*ye+}9{}%J=p;LjMdo91^<81y@Jt z+o9>MU5z()$VCZwQyUq)OQ6;MFF8)~3%bt3WW%79)Qo5GoUg-&-+ABl%2PK)KIf!3 z%^r&kk`jA!GDX26X|sf?Ehur_YU zQkk8=m4zwH;f@6UcYFF$)q#F{4ijnyt*M?7;|lREc^CE3?sa0P6&=7#%OOS27VX)F z^*gD=CLCWRWm)j|DF1qX$4YJjL+IBJ%W!0*LZi+BRU_afN|HWKs7t6F_>TC$a3YHR zLVFXAjOe#yonGc$PZo>IW&cDKZzW`3JuVGi`&Sc2*#Uwo&nE(rvD{hJ*iQ{o_co5te*-eVqZQ9fivokQ^ zQT`HXv(ZdX+``)JRqrJ$RgG6QD<>~~#1wqM7E`Uc6Sy%(FXr(+B#t=}I5N!A{}VmQ zpghNtGEy=1c=LGlbAl2@LSHC<(SXh@4o>&!YA_Z zMbnb#4|lN|;)yW}KJuiH9RiPa_1y-_HMHmO?icx&rSaDRqy~@aEpl;;6 z%#(=G0r{^eVDdHwZv!ys7i;*dKXUy`?tp!sO9u!AKcD-;&4>)RY)LR3b+-q@Y5NNF zDe89lspmUWe@4eqhrZ(xS)UaN|M&lU5Q9?}*X75@A2LmH?b%aeC!1%eA6#=y!BG>`w7Cj%(Z1P`cq0MJWZRzLBr(<(#c^PlBf7viqX54(FEX;*=aeJ(`g$74K~% zXr~g%3OIaN6O zVl_gkyesd~RFa6Rb+8QPf@*^gUkcRDgiRY_5RGZ#Y}yr@}AY=h2_ejF3fIslGdx&C_9I`;MZ?CG!6@yJki2 zv3t1>JAwrpQ&bz{Wrh*v5~)}G8Nje8o7HPA`9ZlIT3?PM(N#Jd z|NAWRN3th8J35(u5OkP}-a0BN_)M8PCI9*QMIM%ew=Ln>a;+r-Qy4t$!(y%$1zM^$y_M1h6T6Ecd`H-0 z>ER_@E?9YVKxKhd1OyinJFp>(R`HFO^bKSY4xhvc@4{chAIWoPB}}p)V6SqtSf;(* z5FDSw;8N~O(yRp=yb#UNCSUr)XC%i5o;o#SxJY3uA`KwK*W^Acb%Ewv7=gNLQlFdp z!ZEakreLJ6f#)U`@s34ORuP$WBy~>3t|@HIxnvjU7OT+$kQme z6q`w|xC77fKJG|-S~i_H!?B_Q&sxydy!ItfbnThv)|89VEaglb{Ls%AdeP*VzdKv% z%6_q$ZmUZ%0y{CB6XcU{cMbgjnBLnNL@eg{$^vWY&ITf2=XG|slI(JBy*W-sXkw&- zZ-`>km@*hWQ#9p*6`|{qP)-kY>(LiF&s(qQTRT6e{2K^=jmW%mTQPt90GnkS@s3Z- zW@6RKz)fD14Ubv^^nJ9{b~xx)M&zvK=G;+(1;v)Rd2Ej+6IG&uWP;oHI(WK!8IJHEJ$t^LHvZ`q{k?lN4z##={ znFAqfGHNtsvwY^l@#^lR=FR$juqM-nE*y$mOG_q2i+N_SUKTnV2XtBA`Kq&!QI<+Z zTIwupeGgs-Ag<2+iwGE{`xs6e{EKlzwg3eD3;6(3dDMFFLHCkS=HH8yK9an)K{hD!DqM&-vjIj#HHc~oQS7&sJ=9$4?Zf{wI311h0C zfyt}mj?-k;@}I2f<>xMPDW@+$qJxQLwa+Y0OOZvj9mzH1y9S+H{`aM9CHorK1Gx6R znzoc*{9+XtZbi?Wy9&j5R z@%z6M8RXkr#pW!o;dgNlzzjR#>70}ozywD0G(%Ajw7a(EH}UoBXaP0G@}$8C{&IT5 zc33*a8z(ZX*U;#r$%{Ny_L2*jQ87@qGS^Z~D6LAks4l#Ns-o5_qRE~+ zO3c*EgNRYPF^KunIMX)kyEaqKko>69m)Etvn$xt#p8q&kk8V~Q-9?Qod*`{kdZ$7w z#*<#-=N+o4dN*nYcD4!N*;p&JEKBi-L>zPQ9J4~*z)Wr=a$UUkQH#-BdiK)h41aIG zL{d_2N7djCfMMaXJ#AEN8J?@Hl0;8S3Wvl!0HWZq+g(hLMj2j1M>bf6O``+=6{#IL zo+bldBs`H!1UQ3!Au|+mJJC84@M%@+K+a3!XYo7H&fNv3Gq~;L`32uYhhEcg!tQy! zxv5LErm+*^!n-q|WK=8U(VwxwMoWwR$LN{0>E_$=y7lVIv@xvaaX?W%V3=ijyWJU{ zoD%8Lj^*z8MWFu9Z(!~gn(FfxMKTGk>n)fqkzy{=x5GAut9 zZAD-*rQ;M)5sp`fPQSRHkBb%^FFEIKpY>6LX*RKte51ig4yA}GY;Ay3I&$6) zV{NU80DFO~0}tLdq(vVB^*&7=Ie?UQq6)hw8#;W|MhSG$eSel9AZCwI?)(5+K*KiF zzV5F)7S8Dd2{o^JI28mRVd@y`AwPC@JPOchJMszO@TJG3OfC(aY+USX4nAU{rescu zRAyn?7V}i~6ou%n?j2pE*)CIM2QPYU_Zk(B+!2o*6Z^e1uYHw)l_@F7{ON}booXVt zhL7sYod{OZ>e+o{mE@?6Fwzg85kB^Kn74pKP;z9Pc9h9tbYI7JdBi`6Q+WzbL|I_h zH8Qj|{~L~#ns1bWRq4K*=c=Ayjz^fm#+ZOLXM_j?6_>VY$G+$4KnHCL|@kb?Y!;V>mQ(%E``sg14 zKjLJ-OmcxbP8*qKQP#_}pC|QMZ%1`Wtw{(syAGcug|7j1WFQyh0_GF}gGA?8!PC4g zQQ;8CM_mFU0CN7LbLgZ-+3@-eLlnYwU3C}aup#;-|wMJ&N zh9a}8v|nlEX+;rXbAm5SyF+Jqd=V*z04plGH-CZ8l*01Fcd9{WtGnx71CTpwQ^GeX zwa7Fwj#H14&|C3@UD|j{W4!P%%{+V5b>__aizfw8D6FG&fxne zO$KHcsXq7XjSvEQihUXIH-3RZQ^B>)8Z_hMuqiUp9{1{U8C#7Mo)+k8&Xp zz--DLM=LV8m}N!58h4~J80 znFg-fmS1hq#FgBXIG*?*hXygjLBJ4rV9ovx+WiBb{r(QXWtbv7tQO(@x(QJX9zXDf zXoL+X30{kt_#(TLnrltPO5FH%=;ZJG!7J{_0~x_99E{d~b};bcJFAwSC4ijSb7sQ*N^95>wu*lOPy_4ylCJ(Cz3{+oF^xADnkfz1A%tIp_? zzvlPm&T`P_sTqn?N9y13#N4IuL9&lxzMA+GxRv~=OXku2-=E)l?To>!W?SSGN)2f~ zBoJDrpZnwSfl*bcqDRsSwD<(VOAknXPw)XgQS#;!Uuujp{@=gQS4Fp(r#`wZGW|GJ z#>>%J=P8Y_6uE}*iNiD3zLr1o8FIP7AkKc|p8fm4kE)+zFq`+?+x6JW%@_5d9{@rU zY#YaX%K==+H z68XE#{7P~Lc&|t71Cjr}d+6?M>zr~^rxUzs_g#O$pcf6bxS1x?YlI8)7QhQH@y~+}1M>uK-NOE*BrBzJgGAZ@jN#%5I#QoWO>S#=MNKWC zvoRHj3h0@0yDhR!TY9whCF8c?pM|>h`r?LlnayJOx6k$W^4UcIv6!Z3O*3n-z-4II*|V{;nnw70JaJ?6O|hLdE4U{KdtcHpD`hSYBMFzwAgz{?L6|33x3g+UBZNpL+Aw_JhP z{WFB>_@zU|pp!1&D}EJm+C-Ff7+BR2of4Ne010_a+GjQ;=3!GE=eR~h(qzR#H8|M#!|_wN4+>)-4D zN$p=z{P*I2+VWp%{CoXBZTVLe|GoI1w)|Hb|6c!3TmBWre=q*0E&r9qzt{iMmVZU@ p-;4ig%YUWu@Adz$wtW3{r+%C Date: Fri, 19 Jul 2024 14:23:19 -0700 Subject: [PATCH 15/26] docs: fix broken link --- docs/docs-content/vm-management/create-vmo-profile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs-content/vm-management/create-vmo-profile.md b/docs/docs-content/vm-management/create-vmo-profile.md index 2262a4b454..27b614dcd0 100644 --- a/docs/docs-content/vm-management/create-vmo-profile.md +++ b/docs/docs-content/vm-management/create-vmo-profile.md @@ -160,7 +160,7 @@ components, refer to [Palette VMO](./vm-management.md). 12. Review the profile and click **Finish Configuration**. 13. Add the add-on profile when you create a cluster. For more information, refer to - [Create Cluster Definition](../../clusters/edge/site-deployment/cluster-deployment.md). + [Create Cluster Definition](../clusters/edge/site-deployment/cluster-deployment.md). From 811a487ec77e8fdc5f0f9871a87009fb26946a8e Mon Sep 17 00:00:00 2001 From: "vault-token-factory-spectrocloud[bot]" <133815545+vault-token-factory-spectrocloud[bot]@users.noreply.github.com> Date: Fri, 19 Jul 2024 21:28:26 +0000 Subject: [PATCH 16/26] Optimised images with calibre/image-actions --- ...agement_architecture_vmo-architecture.webp | Bin 54206 -> 52892 bytes .../docs/images/vm-mangement_vmo-diagram.webp | Bin 27744 -> 27064 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/static/assets/docs/images/vm-management_architecture_vmo-architecture.webp b/static/assets/docs/images/vm-management_architecture_vmo-architecture.webp index 15392e2e18f97aa7dec315a744aecde6a31eb591..8cde2b42c3c7f2d2bcdfe5b1cc89c4761d4e0225 100644 GIT binary patch literal 52892 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 literal 54206 zcmc$^V|1n48YUXswr#WG3M#g3RBRg+RE&zvif!ArDz=@K)wTE8`}96%bl<-H=iasc ztZ$6h0ae}Y$qE8;DnC9v9W+qc(u6X5@1K(A*5 z1b^=?7aHwa_hWurei3>U+7j~Yy7s61NPQ=M>3$+U@Wp<=dNz19a3Ch>j`ybpf&-@C zCEus7vTK1yz~alpO`&c7gO8_k_;cv_?nR&%kQf;L?tY~(5A6H>MSg3&48QW<>D~gm z1F3=3?*>5N$9AsJB(U7S@Z;uf_5&RV1S<4({{qgv1Me;0q2F@efLGmAf<69OKx<(A zhYY~~GIc)o5%>aJ0@eV!9|vFkUxfg~CxT!?8U7Z)k`HbGHc;WA`}b)1p8vjB^0mT~ z1`zn(9ZI~84BWo=zl)D_Ogx(^s(v_9UVgnRvjKQ6G=6lPY6JCM8U3sIQo5J3WDNfQ z_yZMX&^xwi`H#|IUzs9PB!v;p6mhU`8O7(u2a-VDz92}XM z2xqmW%uS6A1@gNx7G)*JfVrKLPYI5@R?za!qdgvse)D$PALwj#GS=T{?$obIeS!V` z(hJL}vFHh+pLgAhA3E#=s_?oO;E?cvp>d6CVYJp-?p@x?o&{l$TF>sd+oF-^xN$bI!~|NG$2D| zm)QM!*uCn7(kV>&n`J9UrD^(q4Y5!`p_I8}q8>JY-$(ANZyAcvPAwF{t~N#^f7M4} zI6^2*cH>KQ#X71e)qEJU+{s;%QZs8_yuou}CmT&FJEPyrnaS1abVkPo$e2$%6LV26 zB$=cUvJ_pM&wNDb6t2Y;dBH>J$fFeO+u=UbSq)m+DYEEkEz`ZNvLKAHbzKS$1$dXe zK2GGjZbfQz$XrCU`sB(`*30s_!{K*?OV`@F1*>JNS@&AUaXY=D)A%@8jg4^}iujC6 z2vB0UxJ%MgDKPqx_fZtp$_Cw7AxV>@zXrRNmDx@=Ew!1>sBBqzwqRdfLKR}9leZb7 zt`9O$3<71=*dPrBtHq{Y7^E9DT!mqjP$hX|fLWWwBN>L^PQv6`HXCa|l?dz^GoHd0 zhY{=1y)cP3y22bt0e?L0St2Sf;cYsWkh{pS(#1LRNJd2kwUd!23n3hfh1{*UyMzaKg>d0!z$q;B9OS(zD}HtsAcoD>YVnO{a# z;SUoV`M%SnaVrAT`V>jla!@gF=D6uexx&x9Q%@J5i!sG#dyvp{0X(|V$13lh0VW|}3CfjsEYiyLV5c-gITQ+qgX`0}QUd#7*h z;Td>qqs_kA6DOYQ?IvaqV&+D%?~}KD?I*>i>>Z{9BG(%-yf+0Vi4C{@)uK{OqD-a8 zRC#Ad-yvbIYDvNfKHZaSdtKpB!)0R#L@{1CQHR{i`{_KAx!ZqknhEZ^I`^<23a9yp zz@+>*gxN`}E3*|J5tOMaHVr|d^rI2syny2j^&Tw#g| z5Z-mXtamSlXkw>9TA+yjM5krIf5OG93ZxbSMiYB5!p^QXC@W%5d%y&`SwqkIfq4m= z*C1$5zV4}6@m_MB(5Rwvv76*|G(SpMc13D=p=~PTL7ILk z)xeb=ek|ASjM7ZnWQlx)X~~#&aFaJWW?J~FcGlu+w&U@_YsWf#z({yo(i_p@XZUk@ z^7;H?t0=pTAc>;S{RfNx33~di%7Kw4^Ww!X*$y#r4eHBl>;jXUIM@-^J zT^j-bkA^O8U0AZOIJXVb3lEfSHpN@p44}qY#hn#1JhW6r4fb`lIaezmOKA1oi@x-j zi`0D9gTWN#81K=^VIUy1iNSa=R({?I@x(2nuJzKNER^PgK>q`DZS9fh@gOc1no`{U zdXO~+OY~+gf%)0m@-kb7^Pj(ul-rscG-s&!zW%vBvf6WjO8~NGV0zS6d_MPqo zYCoU&la|^X;^_YpUgPYfN$&=e^+-07#EzoqTEv)N8^166C_ufS< zUnkGQrtz@8iOG9vJ$beEo(?X{#eM=e^yt&WjX%++{JY2Ke==N(hV8#zB;v$-sZRa! z@pNYDC)demLmvOkAM1Mfu$)PrB2&_P>c8HKB)Sx`vuwd|sW^_DxMgQz*ir2IJfUdQ zp3!Kcg)L85a`h1Oq>F}`x-4pYJz`1+Wg zRctg`QeE5IQ?tH7-?2C{p!>C}-EsfbJV~7X?_*#& zTaK2${ElS9>tER=5@qcO^$|&z#k?jm^u)&DQPgU-)ex}`Lki5cEU7aV+T7jICo*Px zf4sIaDXhLcM2GP-{@ly^Kt0i$`OpTF+RP;TyD<@SX9!OO|3kQCn)ggyo0Ee4@5CKT zEsFWF0TYsrc$*ML0aL%9vc(j+4KP>$YyjS3{H}8_^{*bPY03PDRE0bBl|3uCIL+SrfhW@3`KiGuA z`5bdh64B1xg%``o#_9DO-|4R2C~7tU%8J|$HcNA^9=tEZpjFP2#GrX^HU-&SiYMW9 z4uxRSg;)aA(Y@CDX{N7tC5I?q{vYJ@kkD6U*x#K}6c1e!QK5YOeNtL@ohP;6@g%in zwIDhy3NiA+L1KAsh2SGHW9J86Dhnly{q;1fA6%$}h4jnh?VNX*A!`uTZ~5-z(^mDb zNuIXeGP6%?|BNFn*>E>P?tG zL4cF=-b~SH$#_p01L><&l?>#-LDcUQfCvF2l(+Hb)6 zT@g0-cArHvdNiZ-nR>||E+ZRlwh|Rm_3JufBae?gT|aI_g+4;cD+G;93LRcBv)+am z*IHZqx-JE_V(-dSa8jEYAH@dma8+&pc0|$pFurbJ!V?(_ZqUO6{GU^LV^jAey!O@4{&uTd%#lISbDMOqgQple{49j;?bQ#@P-FNbi z+(b<3%86If18Ct-2n~9`AvGZCc5P~-x*?JI>rio4a!Y*^&!8eIgyQ7}tpj9W4q=su z<06IzA;r#fG&#hz-XrbkRlzhRS)?Q0LnJEERonxge(L}<5BE`~+sn4r%~3rYqU$CN zm*(!5BBYp8ugC~F00iSO1Vf7 z)sKXtTIFrOOCU)&x+KIE3H> zyy4sE-;NXQ_bBCjF8#uM(neSPlXtNxfBx+Kg%6;OeBbMyrDOfYUv5^-*J!G;R!#x* zay0xm6-n_P6^Py%RB$8Uvc6Odz+#ye0eo#CI?E&>mhs6JK$uj#5RE6Rz{pnDoO5mL z#8JYaPX3g9I!(#x9SP#@o!no1V)teDmiq7SF`2pE^|ctG(sN_?uYh#7?O0b2CcU3o9=BW`}VV=6uq3kF1M zH|BEZNt2=+vZ;?dN>xQ!m6=toCvaBDes8iQ|D!bl23#gFrjqb-CM1O!$%HvxP1awy zeRAwM;S}|*6y6z4KV5sS4A>g#z+YM-)emi4_o3wKNY6N-_uMbuw^<&wr`UWgVuiK< zbdt^m@n&F8$apkMmADZ}cCh37h{wbut05AW#81@wq%K1-d>Jw?#(n#G>eHBA(=+^0VF%HB_n-BqU@h!~qH3FDWo zI{!{PV%1AY9-M%XJcXOWq#z@Arr{2W$A;fAYr)EjN}T`BK5jVeof+@r5W=S^{w<^ZZIQ<5{)6#2 z*}t)agse%*<07j4TYUW`gs`{MhQAOPO%1y@jeiUaQ;s(CwUDwiR^V%)ZFW7(cL1(( z`+neS3DJdLUaAN<j~pDEhj+XiDdsquCbK?o z;l-SdY}3C|65vj)aP$$NJ6|+d?`mwtoHB_NBK@Ig{%JM-%5B!(xNPU7@{*}e6n;TK z6P7+do&9L5*1tnp^yssR=6{k3gO9N63`@)*8rF$g`Poz{<(n~o0PNiQtsaTvFLg&v z1;~`*@z{QRDh_|MPI>r|G&U3u%DcgjB2JTIO~&eD;TB8#)9=>jNI${<{3>x=S>-I> z3_LO^0kJ)$l^onSt#tAWo?966X;OTNrSV7E|K`91O{`|x#=!B8i|67 zzzy6CcH42vM8!R6 zX=EMlt)~YC!r*G@YN*2pyZ$3mjI;Yv);YOZ2n*Y0(@yp+uq#PW@12;IREi9Kdy$r0 zer6D$oWOB`VDQ(0*h0rWH-I@F^tZl#q{}LA+OV~OB&UCG+!7yzTm)fm?BAF0yb!wP2` zk`Z5)HCBQ`U&cnZ@6H{qsXb!7r-727h?}bf$swUx>H#kgipCzJlN%&&;gb^ZA==`K z12S$+QI2w1b~3FO^V=|NR=j$f3Xf) z-`fZmXq)!X>Yz7L33W3#QYJ|xz0tyLL#8o+%7^Ic+NEwyhNVbQQjJT-YA6!vs5@pV zb(8c7TI_YIDLoK})Ic!r!lIxc2&tuc`VdELSte7?1(m(d2LEQ#E@kfouIs&vl4e9o z^zFyAyKObt26g;M^CuK!UVx4-?`2_r{BQN zX6Ps47wqcNJn<|s9%in7$01xPurXPdXE43v1J-d>vjn)S+9JzmAK*gp#N zm>HlE&m+{WHho9`N<_&uJ9eb^r}p`I13p??a13d0O+q#o*Uhmn^2eIO&l>j1jVg}| zNjvpb;)4Hn?7D^w-cI#JbZ1U%J@(siwzG@oT+*kR=R;6Yjh;vTF`>$(G1%yk#N5m5 zdhZWp0@CaT*oNiE+(;;+S4u3TX-FM3tK|q3%={)~2kg9b*yC(&Yw)6JWhvhyBy7oP zQNI3+0P(Ky`NgXPA00vQl1w)dz;OcEkIdNEry0acMEsRil-+9P7le4NA~qatvBwt( zus^!s-?`foe$9yjF++Cz&UIqk+zYi#y!8(xW$kH)Jok8oukL1K2T;F${{H zi&xnC-lGwy_UUqSGJp)PTw0IzgFk-8{>C*e_{TEA#yNPOZB#eqGOSf{nBq5u28UfZ z=k;mpHjq~qjl0UmcNgt-dbiHVYtJWp@H%u-5MGNq&_KfDD|Pn7v`Kp()a-0FTTGW9 z;gxk*TSFh6gKS8h7FXj$QaHTL1b4P%0w4dQ*dYJ0OKrkNZ!CJW*dHb72Q!W&J zzo3qVe{(|#Fu}0OLJRH@;tHBNmi+Wv`2Ta^i_5AIpn%745w@&9r{lWNw?)YOX&@0h zI+kC^H%H5L>=muWe-Vgb(+hV*G7`yJw*$>4d|$}LFi*Q7M%RzdE$CYAofm_)Yew3Y z+aF+%LuH1aWakaNYm=aI-`Dwybyi1l2=AXhyGHlmpG9YePs_ZzH0lW19=L7m=SCaD z)klb#c2Ndb$3<06z#wR050~MnM=Z10!ZOsR3IR(8(?vsP2t_G@5F0+}Aoyd$T`@3w zEoCZPB&0Dt9Z?eWY_5JGH9xnlIUa&0X@xvBnCwk6t5&(iXs+rxi^$&p@U$K~0aOW9fmR2qgCj+r;nvhB0_&vUe&2(MJ2odb66|4` zW%h|)_j;gVH~)u#mgdIWss1QFs7mG>)~?dj?tYnDCRvNwt6!c8z%p4w%7ZxroWq=2+z864#0)h0ASYXhCS%Fh+$^uWMb_z99GuVM|-F6wxp2l$Pu z67%5IVmfG|2bo$&ewhs#6h+4fbrT&&K6c+yFmx@Ue}bK z#IbNH3v#D8_6JK|HS1R$Z;gGdfB@V|x;bBaG>+b#{Wpf|7{NN!WVLd#NHln3wA9J^ zZ!|Y~-iSBZ#z0B55A!d@Aj%1=MdLvqF`TBg#j9-6O~r-(oaQ`JXrJU3VtDRr|P0U@^Ca4hljP3;{un<1Zw0aXAp)|!BL$Z82OuM9tx?>7U%``_g)6=RfEzH|? z90k0AGHM7jVzXy{9cGKuoh0-gp+NfVkKgIBeCQ$-=*V)1g5Zl~f++s{?IEi!@L+Mb zsXI-Exv}uP5fs;1daVe0QEh|)C;Sp@_(`|ou$~tL1g~n_sGY9rttNm%1mp;Oy2FRWSk1(OI3s@HG8!@Lmml*_{rO zLhLo>jY^&C&d5_|=`~s2uRN>w{3BK3CK3syC5K3pJN zhj+$p_vm8dLHUMD;MRI7mAno^!^c<9*E=x~t^?76G~j( zao2j)MX^Xvjjd;BUKX=?NVYFo|TOnYspD`=GiH*U%(G7 z&e(EbujBxybVh}F>fAq3dvzZNf{A#nG;%<_yh46CjBpLx&~#-XL`9M}X0frpw48K( z2+q{0y$1^tA&Yz8=bF&rj@c9iVMrh&$2HRI)!J66*&#cc27)2aQ_z(1eQS@`;o07B zE0oF@tU`<2IP2a!gecl+TL1AE8}k8F-8hfY4>gH)c$e4ycHyfKzP&E5Dcc93N~Sg^x|iH7ty%Wan4ppi1^uZvE7f^qt3f z*~reS1Qk|7ASJ$~DPvARDvE+ys}?7bUQ(b^GEuQLS9Xa40rQEPG~o89--m(A1x<}j z$RexYL=@0r{u8wcJw5$UgBtkIuTxzg2_S}YcD?-~l(Rj%eVn<6=S(XE!jz|UAd4g_ z=lD!5hMsG(AyXQ@7NXZtJjJB8Nc+Ca_2a~omrMssuru20y*-Y>tVYL9bZ`V(!ZYP_ z^#-Qx;4Y+8C9C;V;9#)r*Rw5wK6KlQ}z9?24BbGv2`8OuG2QVf>%vclm3@i5d*)A8L`rO+1 zGh@k}>Y3VR5}CAeIz(%k82G)Bh>JYRdyP6cS-CAV8S#udKvjXz;(|Tp+IapU)HTBJ>^Iz0BI;?1nPMnqSF--F~6A z-FZPc_5MOQsIwPrs(`@`!VSIVv8MpQ6HL-u3EU@B;Ri=u874$A zBF#aZ>=0FOU(UE~qsIxeM7Zi?IH;l&a(Qn*(tvK^>r0_z)$Ut|r2*`eYbHjXNnAfq zlZzt_z}g5Ftt#%-S;ZK)bSwZC16|z2dm*tWs)^MslIwR4_+O)gMhtwHNL{usmepM> zWh9r)P!5|>v%rx>=@HlTDkkZru-?<`&IcD%8;H3JCb!jn8eA#DifGO!Y$-( zdm@v|kgK9p*fJd7dIgBZ-sUk(FHN5%5 zQOi~bu`R=k1}tGt9{t45r_8wB_#rujjjc3MPJ@=OA;lgq93HCrc@R`dsWot<^RrA)<93?d z&9i&sORBSk^2kZPJ8`k)OlN$o6s#!C_%mNgu(?)YhqyykBT45RMe6|txVE8LzNg@0 zzGja#nJmqe-1>JlH}THAcIf_UVAKhWxF%X?`hZ`8(tSK9?Uvdi&!olMZ-ceBQ@&fPnLPNbq{w}ybyBFv>22^u+G zwUV*c%p(wnL<87kYEN3zj)PwbK9~_@n5FPzqb&LuhRHf0U+U@s3jv^oR=!Kd#(SMU z>(B7=HmH?RnQSmI)Vj6iZVyMj@P`=KjQFCcVcKrymz4JKle9>%pZLfKOKf#B+{v_t zmcPh!h^sbQMhv!689R6@toIGDxV&&pec`@dfX<2eium-6x^!xjyq($V3Y}cab|ek* z^WJ@Ej7d4-T`7f&=gd3o7<+3OS;O-;R;j_4mz8&UL08R9Ey$V{&%U73o^O`freU>2 z%w40lQ~pJlco&Osh1(+6;JP!9=*yaSy}}0GjDqDODe6>Ic1{QfIu(c*lhQxQmQi5L zJsW1$)V5?VA#1-)H1oZl7RtVVc9s@xN)mR3z4(GIBG+m;2ZJ^GiC8#yCi!DB@5{g^ zi62B}`jZn^4cv4$6seDj%Dtf%B)}6J>2ePB;H9w)sUj)P_uMS_m!Fnl{?m=bOx!Da zS(WZ8Jf}m+abLyPf=-7fa;a;Ox@ES$_~74&l{;3y;`5mhD>=+DgiyZ=w-Voo@#54g zAb-rI>1z;?3SPR08i?I2lxL(QoN9M5z@ZDb_$M|8o(z`!-YOO;zCZs0zdP4$P3wPh zN+a#`;Y>W$uzQt-TXM4RFFq*t63oPmk%T3f=&4Y6KDv6HRh{3Y>w^`F?9UZm=dvSr z_ds&kMFcONi!Ey}I-VK!>rSz~=YxV+C6w$23Y!EJ>q5N|8omok!CFGVY5qLjo@9zEsu z=%5;QD%gxe$M0Q9@eVGYP#@=VV&1EhHa60f;KaEoF88NDLXjZ%7xN4VlUZbz)veFq zW1=MXx|7CiDMSzTk0F|fb@BY$_o>l9@=no61811%R_e?uj*?y|8U;k*4gZ?8dr2dD zSk>O89-WSNb%Vu&=Rqycm>4RIac>4YBn{;iiPjzV7QiOu%m^mc(0mhv%QYS9%g{l^ zw)Zf#>qRZU09hjwdS|(DpMliqV7(3Q0#`V1O=n!&uLgY492eXL+g&wfc;w%B``5mCGKG zHA#VR1`pdD>?P-Bi1B%eshurxR?r59#Qs)WX|$SX&W5Mwl^-si&%LZE!J(F-3prJ- znAOON@%j9oj!$auJy%oDM7okq0-@dK6WS}i4P`UK$xly{yaZUkO5t6TfY|ym%h@;F zR}M*`*1|ZwL<`jQ6M}&>;Y2Zg z)nvc&=`f{9yF658Xuo|6J|w1rwNfU4N8>KZLX)K|AWUA|Rlm}N4sO6^`ToQ_6G(Qk zAkaIq+jak3=D3V4WB|`-j1mD+MpdzRjNVa-Wk=SPPeaOcx}=z&x3*CGrVZvcPk))` zh^mz9hfyEK8&c^Dy*aT?MapMs6bHIg-6(;Xx3#TYF&>d0W}7$EvOo9brb@O=XBz%_ zz@w63-h>m8H>cFpgA*q?hPp{AUy8(3Wsl)Vqk;faiRtuQ>~S;dHdJunJLI}2s}8RY zRc$wgzns}eBd-lDq>~SVgxW7eAwyF{R!hOo+{x}{m3!3g-1J4OSEAqoP&rPD`(pJA zmfNC@3v!#;@7io6jA*_Xt*r2N;xjMdQP(LV?qm+<5pc3}Fgf3XR|%^~G>wrPb2BF$ z_e2l#wo+`IgiWMJ$m_19Jf@~pXdKC<8wUKdCOmpWrQb?=Jr^FkRqkhql3|&t5b)@v zp`@zkHcDv*@3jKRIB+HDJ>Qa;6{@r84Zs;qg%5BVv*X(KsKy6OfGaR`7V~eF;l%=! zcQtt5q`5Cg^tuEPUMTME={rDr0v-s0+Whqb{7grpm`G85H8w%^Nebj^i_IPvWbm4( zhF$RGisxw-YRD>Zgg(D@?b_|~4J$fNsAZHi7;Kq$rG6wJ=~b=Ix^_Z$GjeO$Y(5eD zY+v1VYn{i4*QI(h;O@3AD8l-vSa&)C6A3bZ9*_8XaAi75a^37|jvD2g?q!kzCm zPM3wacE~XzUFkh{$d_s5)?N!ET!^v!Y}2gF-)4IaJsdx2FFBB5 zls`22u}|VoI{K&_fnU>D>jQ>Sj#5n}oKtSQ@e&hZAPXue5OE`Z z|E{vB`MGqnw3<4Y)q$Ogu$*QR+X z;&r_sASRNlkAAM5VwDr$Dk#dH8r+qL@7hg;3g0(!xYeye79T56RY9ImwOI)N(Dtyz zbf(H18`$E^VV*LMbLjB8Z)PmBbw%G_#nwr+v4OQav6lNSZE)9_nc_LZ9_%1SXvS7V zp)2tXj06G13+OfoCE{S*jWEDkGt`s=&hE%`CIoW2@L7d+d5BR?pXSMFveAALSptW0 zSV;ZzhJ?j4p(8-^*7Ws-#_hFA&U<64m!cN~`NzSzxxP_GL`*-60iw&xv~$n{I1-u< zzO0_pA|{EFVu)zU7$nK2cZU(tEBADarjB5JlvOV)Hfc2lK+c)Y>0AE-%wUj{2QQvM zg7Eqm$0`*=O0-H4i1%{Dv*}+&x_mFdBYJ!b%Z`|!>aXa#2%=k_Aoc6Vg)9#;^Zk!n zu`Q7@Om?D~)~}YkZD38-C^%iYKx5gZQw)xNHHj{@>1{)@!Ibu>>RyVWPpRH2d|v=y z+FfkH48vI&PxuO^WQ~MRH3EaVf>~WjlZl}#8-nz81)`Q8m|&n4SPlMr#2H=dn=dZ+ zMMdWmXNltwr5Q$zi1KJ@=OEiRotqL%7m$}ps?qoc7r1SHfWdlD2?zd$GMH&yM8KrM0(p=ads z-k@m>PSIi9qXzFMT~>bTKnJh=>I`w}gJ}jMHfb#LMKNq3byHjw_h-B?tu5VD{=vnK zF$H%>`pZ<-16_u@QdBL)t;SiTTC!}wN|aDU+T#0g9u2i}pc^5vuA{~zH)x-n11G*< zMII?uxuQB)7zS&)-W_u~fkdWiKq^g*kiW<^s3RV4WSAhRa4mhzsE%s5b}V4Q!{z78 zHLl)hil9g0^NPYf+`2*z8`L3a{-xnp4XAmfFFl1-T}rJO8*C~XU!x4Fnn!kn!%89GBxWKsiMkR&cygQvfA14Fp*2lm>i^|R;F`{+ z@EQ-OIg=Fo`4~O5N|dXh#I0r@od3eOpv^v>_iMUGWXk7hx)jl*#bjTjp>ov4RAq#8 zf~VKk8I8eHPooYr0*t2#hv!KEAv;f|nnWz8Fep^AE0Y&y`QDtpd9k}&Xv;zsT%X9q zZ&Qxw!S4(HzE~nZAw$1uX5dB{k_TL?vdODqmQ8DEl6;!Ow-wipz1Jtni#Q3er5;aI=@l=4liak6fIO46g0!&jlNn1M8fSpCo1<;SKzN#6eD68%ez_wuhJJ3Zk>`+kvu|(CmT-@nk1I^*O)4j3M?7Q!lt!CsCCTz+Iwzr`OOZj@pSWA7-)Yy zJZ<^xj85*iKOId#a^Bi{7V{i8yWpm8dSyw{t}WELOJ>h`!xfbb62n`ASEj`@erVz2 z(74~8W_`^5!W%Ecf)DW}$={95TmfT_#1sLnaM;+^IT<3FfdIXkwAF1>-WIN)Y4H-Sg!=sF(dllOZqz(JWC0bh~y(Mh0CEZ4H3)W7L zz*cm*fFknyN!!`rUViUT)7zibEAt9r(YyuT%22@28(|53T^rk{AJbKKJ+TZv2_M6S z8zmWdAmU4K5URx$EXzyWH%&iy=88%Wg{h%%$0<{K!Cstz;D(AMp~Q}ZTP=_wig6LD z8W*_;JKRoq97AU;YDHsL{5Zl70zWewmTr%kLq@-y2;-IWG9AcM{!X2^u zgKfFq0%`t?`2D9U|4YrxZ928py9+@RwV6hP$Kp#PGRzfJ!68}dcf9QEyqKgA5Wk`= zg^_0h0^i8zvjGi5^re_m0uI_>w49MW;o!8lKT7yTNsemSaD(FJ#!T1pOd zkttU^ipj-|9{w$$_UCIE-|uY~`BubzbZFbYNNQX{RY4-CikuI3pjPXnSDk5mg=NPevi(YR-%r}1P4r9- zyD^aY25_3W!@|w3*c*{v?Or3%3qqX}<;MI(G_?1r(t;17^Z1NHAF8L7fyh}%sR8{B z&iPu&3P2)8(<6j*Dq*qNr) zOgZCr{ZW^wXN=6BldEFs;J4tjYrJ65EgVmwpLI7X9|V&Y5s@_-^DRPg;d}1^KWvfs z)Jq{;EsTDgiI73`3Jvyw8jiO&1C_+r^0v$-OaRP&C!xy-)gw8~KXnp#*m&4?SzT=f$N6Ra zRt$(0|1KMj+|DuU>lo|(X6*VyVCgN`$;)82T*j_^d>>}1JZ&c>0SH&xGAa(SftOZ{jdcMB)9x!oJ9i?Z`NI5VYT_m$d17>L;ukgM4jR5- zhVavct!aGDvU8K#WkK8}jU3R+jhcGJ3`tCx)P)cYQ_Krok3_n~NXL~G;AbZ1K$)8+lXOnJJftkJ!_-sthgZE3Ffs&tS{*Z8k$CQh zLPTiYp4x0c3_9M)JNt*}`QXd9y7>DK+RqFxIvJQH>YLd&Z%`hyX>Z~fh-_~>(cYCh zYZE#Pw3a=-+JtO#+a5{{-T@ImlwgW=Sa=Y|m7r)6??FIgUsB=@G>_>;0$t1jcmSp? zVAH4*=J&xhAyK&{?q;Km=V72d4o5bYs>f1XH`cr~Sr3_&+SoI4#o3#l9wlxK)Kd97U>N1uYIBQo!1a|%ktP{g(mXkwDs znv2^j+p~1gpWad)rcG9(z+-I8=@C^w`OP|GwISH6gQ$A|rT0#**L~!iX*3=9~j6JN* zMD~~+G4*kv5eKiWTVkg2z#B&%cJ>mPAewTt1RZx~cfRZVJUSa{%O@$+ba zMNfwclu9siL5-#=uF0m3#IqV^s=O&O^(2#PwmcCdQRHEVS3!;mscv)+P8;yAS>u2B z?_$B^e{t1+FqIUt&6*6{E%+AHOz+LMHN>({-jcDWIaLK&p_3L)pBA7uc{F!=mKKd| zN!oa~n#8}Bd!`2Jkyf(lmQ5afVfKrfw_wW%R$`c-x=^|Vy_$K&=P@DdqBT(TGm}D0ZtbWTEtdQvAe$hU%+omw}fKD*`lg`*1ap0xc{E$@MKlzG&ZdA=-FT zl4oB_2P=m>8vCJy@e^^z!$LNTz!fn;zom|NFJ=_@mJw|$7IVFM9<982^hrVmyuPJ8 zKlRKs^oVlvw^d6Z4U&l3qFV%>UicW;HF;i@7e;MbO31dRZ9FeuP89Qg&25qE z>JMOvHY-G0Pr(>Gf3Xiu4N^ZbtctQ&MZV^Ik&E|teL+_&#S;hddJqJ=IhDcv%m=Q@ zD_pdoJbVqLuf(7Kn0R9@&-|UXx(~x~|eXcBdoe-$`q$=;bo0Nooq#j{QFg z1>|%mlAq53wt%X9yF9LG!;AT=lCgE#2TXS_U<@7VMsuCY^^&*E(x+2JCZC1IB92gu;r{$0MNL*qnkF;^yWk1V zST<4+#^n#yK2_KRqA@|tBTXM!UKCB_K7mvxzN~mn^8G~ORr3cH!2@QQwNiurXi(n% z49=wkTZ$OZ4(=Zdih5Pa(cz#pNKu%2x+lk(q`I*MSD~TH<)4DzzefDPK!v;kw>09n zklu>?CRk@87otz2g1p(hN_`>2Bo?YCMx}sfUNW?20{PcdBkSDb%#l|97V{CA4$|T-Q`)Cz;A6V(DDM{#yiaJ*iA4au z2I1B2JfW||Y7o6oaj}p3MkXiphCf3sq~Sn?dmQx|ivj^u$!A@Q6la9(B@?5(48SN& zP$C4?)c!YH-GpKoAyH^B8PV(LtMl#fAk9GW&LY$^gXw)r5}%JMNZqsX4uOR^yZv5612Pf}U9z<)3u|{Y5%?Wq|2srG>Ndc_G9u~j4Fq(%G%4eXU z6Lcd__;2Vgr`~I3zHj%(4)JV8DMMofb8R1VCowdv70UV^RFK9KYTA-F&Rr0%zxWs|ijb*X$-+LXDY4rZGqqL@@Ay4>R%uq90U(C#&+fs zT0`G=oI{#4LpaHMFj0DVAxb6AjbBG^0$C{xyAQY>@JqfWT1P&T@4M_{b z(vaG=M;~ZhEjq;sX(wvl2<#s`-4^rgY++5+DYsgayuq#d-zXt{dt~*9ob2oozUDwz zBKxo~CvcPAe{}ftryG5N>_+B4U4s6&gw8xlXfxtX=Xr=ik)M(}qWjrGU#HfHw5U5s zpugqQmWJnG9P(rN`|5J5Gq%5P@tU(kr-BV#$qIUM&Q|`tz85gZWZBTblG>NM;8zn= zOgZeCregmOsNVHuNP&Y!nBlxQFxuR%K+RIIgMcdsBS@xt?c^6bfA&;rsQw8yxa3E= z3SDrxqcuH}cK$0ngG#=7t)2{Z3mxrP{d4g#w*rr?{posd&rhXRr9C<9ou_@RrnsXg zHz1hPwye3vIC15TOK1sVVLGy=f;%D#xSGYwVzR?IL*J&l7AK?cHP?K}HaGj$Lljw1 zapA-sLRL`oFVERZOKYk(^~I99IP@WZSjFfevXN2XOy=<18mz`iXIFD5IT#)lQI~$M zpl2DW7RDtJ^2=>s7Xig=M7WG_Af6Xdu(kgRiKV$=pY^n^B2`@vKGt-H!|~Hf{JJPQ zmu!8~jcx|szZN5+iy*xacrO3mZJ2d~&d=iHD00}f)Xhof$(jYY$F43hmqnEXyDYVp z7Dbc(F6XPVL#{!n0VU$p*y-XReVsBmZN|o!6{JcqyQBKPr&Kj{?;qgBJPC&80 z(<0LxGds34r=QH_{5=!d7@0Q>VC4n4I6}e10xojbZ2+xOV25Spvebdyx2uh7pC0OJ zB{Bu8zf_<1m8?bh-&SO0WknPdyE&J!>S&&dUTDugq>wG09LYxl;!;K#l|x%hFux?N{i#s)^(2RE%Pe)skcszVqV* z;Hip{!hKQ67lIh+6rTx7B)sApxV$d?1IJNN3gEu;c0<`2e=X#fd+vbWp%4<_^IUHg znD}hs9&6KJS`f9EAF+jFpz~bi%!fvX3kv1T94@|@*^?~Y${D)}jOOlyj7z_~E@R!a ziRgf<%Z~uI?WOyGC(j%`xLHi01$=_eYVd;^k@i_P_a6yeC%jRqlHE>q{5`SzM)422 zl_ah#8mtZHs zvzN304U)uoJdiYdY$?2u5-?(6@ zX-p08Gv}sdAFvU;iY|Gi72(|@u>a-q$`L*X#)j^L=PgE5`2*aocf%_7?0qxn$$tBG zlMDj}{7nB!D^gb>K20#LJK#=p<0yn*yC={902euFv}jbLLl;Cge@jFB0)=<%)M?0I z?OG)_iQf?5-~~9(WbrjwBdhD|sj_xoU<-cxPMqVtN~P^yXpR(TDO>jNc!s3G!z0jriujj|(W zPv}K)8$#3EBh(Hc@6{9Lifdi74*3?h8}e^aZih=B;8V8&7$*C?>J5Xg(xVFNIDA>F zE6{g2{wAbCAry4(YO06Jbi5<6-Rd*|=tahLK#$z9Pg0+XjBLb`WJpn0xLfh-1s$kS z2fMQo_Qrc}=aZexzf^N138Jsev<>aruuVe5T@2>@z@I#DjN{9VJQ_ID5o=X5%gI>8 z3R_HKWl7W}`R&iBt#ysW+fR2V_tk?JzvzjJYuoC}0sr0Z+_s;oAFQ}+=~I?}^_0JI zuZH{keP+p9Cf0ZaEc{BShToYn0}BGxq4m=guj?2GFk`XbzlbgO{u<=pWs3j#`{*E% zBf)TcDf+CsT?4p>=3GNYqV2sfgN6>M5(#&NOg~6rrkIe5Nq5wJ8e5)WFIBCDcRBq7 z3j8TMI0qkGENDb=?*A1>EuKaM?VS-dOcUMU#Yv70y5p_6c=$PN>a^_u%{AMG3u!^X z%t-Keq$Pz08QUe>ElKy#F;co$>G+Z*FRNECv;6H_G~Aec)0s(OD^LZbGr-?6k9XaM zzzF+_>7sxeZEntc&scg%dNpV3utQ1%`&7_iKA+b{1)B0<%^DtQo{qW`m77On*zybB ziS^^0U63K##A^EkUdol;konZ+RP6O+DFgDkaSdrWVgQ>g||Ug9>nEXtAGByR^t zyrY{o2IwUx>%ae4g)=HyX8D}{!b3Lt36DA>FhD)rY(!H?C=)9`dSKHmW}5Cs;+6Ix zkfHOX-aS$JEd_{7GKYP7cxro)iNoMTlYvAdnqP7Q<2gvl)rlUj?t2uPg^3?|gX^&z zzSkOW5&Kj5)PL=D`J!UeR{ob7Uk&5^r^mvu8s67zOq4@pYo0D4(LY=l7r95?e?c(D z+7m0rqf2-@5S1@qTFodq>Yq@!{<4aF?dTcS&dF{fZWfF21>bzyJw))p9|mJYSUDHM zp{J1NUKMLQMncNJnqxJx?@@dO4cPsG4waP6&EMSx!@o+>5dwCD>j@&AQ_^CPVUkT? z$?UCgNB1=LY7{}H@rqK90~f~VO0sGRsUiRy8AZKOZWOpEHG(3bi*ZKkobhk_?l8&# z9N-qNH$yE$E$epqQT7q*-(flh2WY`D9B=CSpU9uiFRNQ{t9T0Awa$Ow%c>kr(U9*I z$EsW$uc}b6;0ZGwdAXwZ)X-Bkn9l2z|LS1`v5V2OoES~cr+vp%0t`jAupHw6wdggn0;ZzX zyoGU-?V6J#R1Tl1LIY@B}|*Es)ZZZ$?X>0Ekvx2#5Xd6%)kn~c5j%N=da zweW<4zbbA}2+>C@<2GNr(gaALrEY!r-ovi&z<(Ybssd4KVpc5p*UOoX?MWK_m>KR% zAj&Ki#I#-;c|Qqx1K4ZUxrz^kP4zn%(L(Xw&IR~!xzMh6r2K)nav%L-X& z)?6^-$tOcr7C9QT`uL{8h-wZFrR~z#n0{?EC#_90pX!ao$rSZ_?-fFn-Qv>{F?mG+ zuDfopmW#dfWb-5fS+$7OXf`q+V`azoxLNwKIXLi@T$0bR5zyT60Kt~G^cn&txyx2Q z9fZLElCXdP@7d@@?Bg~8^ZgP{{0SJvAoiUpxQU;y3D^Jt0001r+qioSR4Bm(Bm+LD zFJD+)M~adJ-yNfj_7h7K1n{r(-ubibsCH{7Fon*B)rtL^`iy$?7WwU!51Kw2rn?B* zsvUtjHHElh!kI=HH7(R~1c-Wh8JU;(iua1$M0zrAfO;~Hbr6vO8s+Ei4sav+kF&NY z2Rvn-zbrL<$@u3j`liDyLY`hG8fH02aLed^Gm-Ts}Jhm?2ajAR|4OAph6uq;> z@5r+*u-lMy{#n2#jbWEIZa>8YE?gDffHH0Cm&Y||KKPr5EeaUgG)~9@?M*#*GWBPy z1CITwc!VdmG(1ax&2$000000UbzVeqiHR;jQ+0nZumJxvLu9P%s!Q7OgqEdj*n6 zKt1&71NRKP!xNwjk1tdbm--17x*Gk7^CMQL=C9U%9-^EW79Vl=000ZHajY&)S+D4a zE9-)>z!H#!oj4CbY16+s2#sI90eCkALAdJ%oJjo_qV%QJw*VMe^A<6T_EQIQVZ z)3-#`UW`r<1km7S%yJw@fuV2|CQ0e=eIn|+W$*!^VzUrpBLY)750zT|hrK0%tgwkz z!mmh07v&LcH*NF~1?3mD#`FzaLU{LffCV_dBYxEl8@vX(t%SpwLU9=$Zlwt&d}J(Q zxg;~?Gi}rMAzndc1K5Wl5jb3^n3SOD)TKbyb+9e!N~$P^t5>oSoqtydWYgQwrM@sutma&!6~-Gz+_v zXii(Th}Djpt1$-)p;lbR3P)b&lK5M2xwUMIBET~EvraM_i-==%Py8M_#H%Ejrg2x$ zXBM4ypK`WjZu>2a_ad}`sC7Cto&T>hUzi0W5c)jV&UZ!A;2~0pIPDpzYf`ZV&PJ}` ze^q{Tj+}{7|DHwt+8^S10vO$8VofngUEj5e6 zaSYONhTa~=ECc9MAEac_L;w+`>8q0PIKOS%J3gVn>EJ45g&Z`02%mv5uuSdSf<=us zP^KE#%O*v%%a`kRzT#{fhSCmf-Bfu)!M=0^`b)`4 z*tKrsjiOjn6SYZ@4qlv~Rvi5lyGnD5fPss)BL}efEjceq1l-=f><8JQ4#{Nis+q*# zmV79B0in#KB$4~+flgDVnS|9&=E$vEh$nGv4930z79&}bNaA= zE-7Sq$u^lG$eaw!vsbFxrUdZARMSQ5bJh)^^0KFTkl|`{an$A4;Q<;FoTTzvKpgqDik39)*l1Vulr-NVZd_??B2gNF$4? zQ+xX8X-L0VtM~ne>TlmB3O`8Qq`U_900~(W&4-h5tS;3V#Q>Nk@FO6Ow$6Rx>_DVzw`$MwG-ElC|=1>Zo8u+Ayuy#M5Wz@g^u1e3u{O!kH zf(7ntxCLzPl>m&WVV%V4L@{O`bCYC^VNiXb?i_1+LU4=PQ3o zhlgnrw=45y!T=mF@um9A<-igZSja+e{H_rMD*J@;mH!1i3k(y%(tpQpY!!6*`m_*s6WgA^3kiygWtrn{@tL|5*LOPt z$#y|5qkF500Rw1}Fue;d#J5L=Mv$TcvEDIO=&YPZo8QoB*&mE~0&!L(N`|xDlDg}V zFItLcF=t#g0J5`gHUx41{F)&;s6oS5Rv`3>Zs?Z-0fDX7(;ns0E?^RYQQjZ000Fya zgtNlg>R2sv#M)=mJ|y2M98oL+vXd8h`$J)inXzu&zcct7w<^3NIenMO*IdE0z{yNB zKn}!UQFMKm6rPwR<$Jh`v>kbKe7h?+3~fSA6G5Xzf{W%F?b~@Z9Rb2+PlK5?a4QTo z5zT1%2>;86Z!*prOE7*8kwR-bQ>kQQ70`*5NN8ZYyMM> zUW1HpE7rYJ45WO^(%1J+EOv!^;rc0AT#^Oa_#1&I>i_@%Sr9NjhB$5HV#u-A3iw?n zz^;^bQ5$FbMAo*o0}}2W+r?xSi{3rA-{EJIjZzui_6;y^pjPS~$>aFo$L=fV1ZChg) z;-=IQ9WR^&T1+S`$FG~v#I?qqk7G*YLIxM#lA#vzX?~yOqgQ|lfrwlV_9$LLMlnP0 zzc1%p+WpnoKBhE6KW&!d2ABpT1E#+i6VUP;~jD3UkZy1{#he$ zXvr?(wVLk&OK_MaYWqq_PPcnuKnYWp?10KW;!OUOwafm z0O^A5v2)IleHEx`!g*?i!AFkZ9d*cF|K&gS$atS{&CZq-glhQ0mmnLbR zni_3sn^!VR6KElMjrw_so*T~Z=Ho)Wcn6W(Y?g`89iw}?J9@|2-uP*R6j0q#V`tE696|bV zuQ-yj!siPLxOWoZlhw=OVIklc{f`1|%7}P|oKE4Q=AxtTtT2=NSg{fQtcu$20+L88 zywWb4-h*r5`rdw&de@^4gTr2h%~z}q{%|{7EE7JFU=$-m0N9SI)NZI!>)QU=0Z<*v z=+GJraAkRJFFbfMl>kkx{ZH|@&5>}Jf_Ua#9@bK+PI{t z@6GW}RtxfIUbY0AJK73;AK1)2tDS#WSA%aeN2oj#mw=<88T(lvJel6G8YIZ;OC61I zu=1eYu4ALi=~bUv&OMVBWAnNEKMuRef*Iv(Z&`BH#sDULu96||jNG>=u9(QMftfdR zW>`l6HC6i2p6OtnqhP}mlYQ#ckef5!6y;Qc=kC~nv0yM-FV#5=JG*(&2^he_cOj*LO- zeq}*xn4xLeorc6@*`$%B5waf6h+9311}`ER^YvaYg+!^Pprb;ZSn4%(*yv^152JSy zC+BOwM~=FfAEgpKzaT>pq%s;#n=xW7Fq$uJEW1hF&N4U?!1IBxkySB6zn2Q`igNS zx2xxIr2#n}g#L#O>0Xg#e6>p&&o4jCSX)pB7{8=+!+kIEqrkJ0n&I?|5H{FF)8WXj z6wP^X(-!BJ!6d{JzDb8)u+Dq$CtF33|5%I?%(wsu`(9;lF>^8TIza%EIfNd*Y1BmTpTpg#a_hP3djz#^_| zyY5tInx3MQrL8be^SmaL@3BW?q%LD<(AILl*l*dfR3aP8R4?~ z;Yj{b?W<~2e)dS;B|9$q)O_)I_*j14bL}XRRx$!NKHwT5^#2noboUOpaNA~ zlPiQO_jjuGJa!MmIY+RhR$WmX8}A=9ZXcQC>!Uf5!q^XVJGFQQI2e4`5v3zk37VB0VY-UjP1x(E7SIxbbjs^YNa+9w!D~ z(KQ&+{9k_(%m{cC&MElu9FsHjC%dyMC^U}ZE=A!XIR%=`!W8%^!ZPZX@CW;Ab`QWk z_MAfezSX!W&i%Yi>hXmFX1?^h(o+HK5~yPvxmw~_M~XRPN>C9iHt3f0nZ-fFc`K=H zq2UjO>QhPkwfl}ddOWxpJ9&J>g5Tdg{jKo%p3$PUl=fOcztgI&NpSHfLq+T|It(oR z^Pn-=q8?j`l(>?Efw6{`h>PB9ko;aMZ?@%SiQ@1Oi6t)Hu?S?(@j9`&nlT$rF(6N^igKFosT?X*m7ad3j)@vsquq!fu)*(qOg7joFNX7iBs@`&)L6PG%EfmT zysQZJFr1?4;k zO+#po0<>u)h6WjAYrlC6+trW*qb5i zS4hNZH);pdPuYx14~rkC=gX!9S%2x8E_BPj`uFZX?I#bBa$QET5_YPw?O6Ydt_WjX zKMaj++4(rB6-o72_+BNS536UT)+VtT$B@g55e@(rcvDNE6uW|x8>JRIV3xNJ;;Fzl z?%$}0L`NZ!0Izq1&FDfm^dqMp-bCUk$|Sq1?>7g9cXiwyx$ zumcrY4!~EnXMf{iIa2sd<#p$zq!zx*1tVUAQ|7ci$&l3Du4a4q0&8q6IH|)qc`|v5 zwEzcO{a!e&CZZ;$R z^cc0428v@F_mL~uK54IGa3MUv%CrW`zqgo(r35Gdm0;6$Vf38t6384g#(*_1=7Jn# zcl7Azdj+Mko3IJ92CnX1KMv^;aC*(9s}Ik8Jk5s&WNcvB-z$I(TXUBLqXOIQJ+jGB zYvs>H0Jt~#9oq%W)a_%9NAywQl#rWuLE}QwI_cE zPVf!sA)`~*J|%QxC#<7mHcQX92uB!v4DI9uB;vS zPnqs@oFMU~=mt#1)vr+K*_II~`qZkvkqu&6x>KCGMtdbz_e8d<68``P3PdeXF8_-S z$x^)&&yVAwA&NDE>q~s=IP^407>L5Y?e~Opsy_RuNs+9|+||;{X3i|}3>?@);9^gu z(A)7p?G5h+fAYa);O@XO$Om$_g9U$moJL~oBY;u*$kYmRkiT3yB}fhOy*o7C&wsGe z!K!{b&ZxsWF{kk*-rEu4NNp=raU#pQ9fe9b=Lz_huP_wnZ+>(gQO#}5F z`sszR7=R=GTQVd5!5xA45(MPipNwhpllU#~mpv~~2svb;?@f2a?{!XG$ zN>@RQe7FbGRBI<18Wit4YBH7nb1qR(Bskf7P6})NP%U`op-sooD-Lgxs-45yZUe$3 zaKZnxJZrpJx>!by*8`&`V*YdR=@ce2m{jlxv59QLQm3G0s`>2_OArTB@0&HeKp*>j z9Aus45m?EOY{o$gHA1{h6rGkA8t&PMh>ZwO4c*lm^PkC1g@F4YM@C?U9SPP1dFETE zF$U@hzdFLSkAICH3)AAePj$?o|6{KeLufF3;XDkneuccSRPfunb}bMvkVoAdKT~+? zw2wYL2Bzd45@RGR2)L!^H!~*%p{j%alfXdOBz1)bX*=fRAs#e5(EAb3R7Z94=^Gy< zOPVn=cC7W&E)IOMY>%%5Y!TCEYOWOMU*6r;L9A zgB5F_s?)U-{OYaOf#N~(8HTE|)rqL#I)!p5!>T)MzzKiV-G$7l6{*LxoT?bjE^GB< zD!CN|xc<>}ZLsY@&nBHwx^+9)u8|~&JODhwJ5gCW%uu?@IXHi@$cuIC|2$cOw6$-; z`wUTpD$7vwN7zL~#heV`k8H8`ldR#0zPEuy!~p80&uThlWle4Ei0gM78~;zb4+M% z|DXaBvNB1!@!ggL!rt5CEY8jZUx; za?Zjn;gi6RC*pCUk@2x&O=atAw?U0Go+dcu#A z@W54r?HS0Ci|tvncD&za%2(@O*nWx?^lX;&+P4o_yk5E7?QxA|9x`5cS*O7rNpRc6 zKaRi>e`*aILQB!?u){Q}@~)ewz&*Mw@IDs}f^<|*W!z20wO7yw zJ{#vM`f5_8x87U8!5LQy|51j=L}>iDr2KGEDa}a0jzU265hrFZUS5)b00000Jw8oo zmYg9CEi;Bbz|2Rc!DAmG9(dW)WZzKq3hqyS@aV{unCD7BF=YoCt%PgBczRO=*2$@H z<&&c|O=J0~uWD6zxvZyWQI7K>y9lm-ExX)ohz)lGee!aX_26U-A2TQuaYTZ<=RaQb zWn7U0@3QMh7(tgMyn4Bf6#GC}QVifKZ-tK{vK5rWjL#kebsC zFo?eoDQHfWM&nE>iG7g5T)Pf6b)KuPL|=Ua<<<#zcl+Kh9|0av&6qu&=6!+et7k}* zf!+0lvE`_m!EetuT^-*V{r!^W5hIXY7hs{NRyPg{NCc)gDl&G?N00>Gf^wylLJ^ZY zWiGAaqLQfXe7AB;Wo8;9U!QT=yaf9!Jn5b?B{Xv@O*hbs;)o~!Wmp7X4q}7YuQlHn zd$d!Ik)Ds1$!+}sVlU5Co!sEK#C=8N+kR1-vWd=vk#p`DxurI}QvA!o9Q^TGJo`nP zMv@pSzIMyteuy;s(TD^-Y{hjYTzYnhh|3%(z-TzBferU;0>3J{t($P4_8(~BB2UIS zzczOM5@jt8%F%l!wZGcvfU14-r+~KOXP3)auCtVl7DyzsvR}ZoXgo1-A>-T&u*8D& z&$-84;q}dMGyx$z}PGVm^{H&6UsiTPY(k(V|~`LtdPOQ9FjX@ zk5vTl`kKVAOgOufbutiya6Y4j89=9L6)&9&{wCG`bsr+uZO}hV^I3$GV0`gO1l2-P zqGJ{HwEI9*_PdJu`Aa5$*NP>3suR}tj<=bPyL2dcgX$GqiQZ}u9GaGGOnJPA^Vvon z#lnnx+{&IC1>FF$ciZ;#5bmM-Oau6%hjqO7p98d%OBjO?no>(nzquf$pa;xR@o}e3 zkw$*8OWcz%H8g`OqHd1F(%>a6UcQzw;JTL7#{g|~Qb~+`D;NaIGG{5Hf!9h>Gj2**30TZDJT-MAJfa5FY)U@^J!@U_s%#KW~gmcvW?L zr)n#7M<=KZzt3khTU#28C=I#!(x#`nhG2;vl4%qF@VHxR2=l;(BZt>Vh{Bn`Ih-Y z3l>Vi000000000000000005N%GNFrwS8$bvZi;a)B~O5d|D~#trh%TbqZ!ISoCqfW zE?}ZK7c!24h1&MZ9)82L1IxQWC^t+YUd3pZn~P`o{fA*75v2baelRouW8e)ok@<%wm;jR`+vo~4kP zE-7!nR~svY>c*GCt3FRi@7uLdn+6G8iXSqW)^&j=lJCz$d{#{a| zZ2qLZBTQ*w7|6~Jr3>A_MBr8KTM34saF2UAxIgO z(H~^3QK+qMZnNbB#rdxXa%lvD2bJ=*``VH=1M=!1Nx999;I$Cq_3M z`P=naZNKNrV~%-t&lUY{%ED@#6Jg5Kg2t^S`3>xDQ)ae`hfg|8tn6o)Rg+W;N8SdA zSGrNp2yG&8Y**qh8ucza5CcfDrzYKNsD2es$%pS!a;J{{!|tdBIc$gLve`>UopY^5 zCSuhv49>88#>SwOzaAP`tG+61G7T)8a&qQD`y^u`aX%se0B02T8s7OheRcDI8_{>k z9cDPQdrJt&%@VM|=EnW(VIIL=#ErA2ASjt0cGRerEGt#7PB`8L;J~W#ar1VbrT?B7~k0 zrJjDVn*Gzq{L)Z6lgEN|ce@>ftm46sLjeFOt9q0dw z*+>vKswqLpurofT8k3~ z9&1Q-4sssBUyjvNh3)L@f?--SNL8bvZV^bpCZ)Bc`Sw=dR}Qvjtr*zECT^;tl+!9> zr}}81*R5e}1&6CWbtI^M`6w*mGdh1NKztN)&p(JZXyl(!ItKs~zy3`9IAzv;m;LK$ z`9T#GK<96ON5T9bNe42iwiWqJ>VJJ`#1aUN*X%|uwfGVYJ1O&&0K(gMjfHoIpRxK1 z#%ep9&jm9|2=GZE)Bl3ATXg}H5I5+_^MK4h&RQ&ox?EoPbI+j!&tXGh!1&fV*NVau z2uc?~c_l1U%|0V_SGWi8!oz1DW*I%;6K0!Ip*)z|eDHxJ@cceb;=0U zkk z5-U@^@$^s{gc=2H)sQLw0ZD`S({Ak8de@RiFy93yn8HX3!NnPo*<%WPa}f1Jnd3z_ zeF&TA&5yRz?&hy=QES3h$=<;2qO;OfzO^{c8X);+sgJDVqFl);c9BGfzFXQXo^|ci zv*gB5E&ssqt(yhH35P&p)Gqqmz!_Q4M-M%dC;@yn+W4&6<+M%XsU2_=bV`Rl$ao~M zp%Pqt&@k8cvB2{E`>Ho}a%5d7#{Vzz_pbvmwEzJEX~2{D0+HGM_o&#>wG`mzgq2l$ zH>9$?LezO9h9Amze6uY-E*8YSeK;}%W^Y~Ln^5#})`q3V*4?QncMZi0Q`jK4q6%1# zZ~_6e-igSpveOlE?Iw?6#Dwm7w!DBS8bU{F4Dr(fRrl?hgny>j?z+!-`BaD-q^}vw zZU!C?C8#J-2pMy|Vt|<^&F5vK0iIMqtQ>5pz5-<1Z>wN`Wb)PZc1|GZ0UDXfnNnm` z{^zfAox<#!N6^pV+5~ZfZq@+D9*;BYLjsEDd;GcIuUVLku)pS=DAkk?+t5oW!AU`Hd{95A3s1X(nP>}p@+14eF>w5Y2{UbPO^iU^3KltN0LyDauDvhFEoR6= zXB6#|6sr=wa9%#CSB9w74LZm4M=(1G3fR0hjs2|D5=VTy2oL%Lm+DC1KCEl2mwK36 zweNxQqFI~i*Pl#nbmIDWdo17p0erPQzXixGAKCDz;!n-O$Y+@e!U4mY2}`zrdC1u; z<7crc2ChNMfdOpZSd6(!Q^P-@r()bks@ZmMl-%^Qw7vXf#4yJ0x6T@UH~yLzw0Fq* zU)`lyEhXvE>e`h3$M#(xTQVkG!xN`BcQliULIp9r#qY}Q?k!JlL-8v+eVUnzX771# z1hXwlaq7{UgKIr(M$`|=jtzfe*3Id>+}>w?rY&?rX9Mifk-vgCB5$X1@}ET8G$!ub`>umz!TU zs5^()%Z3%8ngbc*2mpgWM_?1L!|N#9t~{F6oK1*X@<-*NFmh2l^?;+Vo?6_HyR2mN zs`GCHCx=*(qB>>GR4YN~oh+lOc@F>0@R#kq;r4R$h?-_F&aR>4AAU-yYNrvcFyyo5 zIcl8+K<@ATrwsUh$Nz|4`}g*t^jaNR#~LgMk6S2XI}N?yo5!C@Wc>N>xi!KE8!B4 z*A|&~Zzala!BM%9@dlgVnqK z@o*poW(u$eN%7M{%Pdvf<@+#6F$#Y24S+S^F&%_OCtc;TG1f>royut1hoNjWmOj?dZ$wsykdzdKvop+)TJjx|8Akmd&1?!)PlHcaO%; z_;UWp*OITsBH1hRT|4*-j}Q8NF}*RkM#6;G)q%>fg6lX3E1cm0ia{}y*(k(MK;_Mrj0 zj5imVu!bk_9p2aj{)=C}Mapy7Q&33TSPP0IHa3CqjAKl09i&4iU;a8VrIjK97dfqo zo2nF`Yo#_Za|6@-ATNVG1G%sz<~-u{4;nvZ9UBulf2(*rpJ|89H|H$#P$>hoD?|`w zTDBf%tAdnust6{6dNcCr-`ZtZs-x?*rgR1^QAY1tF_kZ~sx+XaV0u5A5+#ZlPnKv| z#78yiGB0fiwF<%^y_gikST1x8 z&dHiVU7qE0+Y$3!`EPs5E`)AL8%9<7Ximwd}X_YnWrzZVIFIUd!;1p56p-DgtP9j{#;NhA@LTfj4lf#xTlYc3do43j350$siFFW z!|{n@Kh))$cTV26|7@?B78;n`?pS@#I9hnsF7;dFw9MK@6?D&+2Hf0SDa8S)UKG-Q zDORR%R&|1t`VljqS}yi0KMMW8Cq1%MM|3X5wvO^75;N){$2>nl#Gpekb*JqcI~Wv- zbH5=McWv~l4pT{B5Eyt0*B>=8NAJ^)qdJ_t4+-qoOZg+FHo$f)MkITH)^jhYgJhPi zEzh39+H6XJ;t!0bA@!plc4gJ-UJ~NvzOL4lf`0!9qc6W??l~G4eOWIMM>WWX%S_e4 zMwXRFosf%L(y@$qw#1OPDrpfODidYEF?y5QH)65h6I?B2b~C9U^@H=QZ>FahcRDiF z-ty|(A;^^Q@ZSpA;AP5mCi2uGSVM4YRq+AX3vTvq0(SaX@`S>14woMHbCs$-`zt?! zZ(JUEIY$@e1bG=C?yKqqKlafJkbC{4FQ!7YdS`Kk8~7ZK=Y)<8bz_IqM z_F9pO>9B%;Wn{$<#JJEa?;BRvnc4;&MEp1tTEHO2f_6ikDXW(h3ooMm|1xrW3iK%H%b53Px>vRuLqFv6QG_#6F}wJ1OUCfcW^;;~VK zd;(8~ce1;B?HL$nb?v-{`B2p{ieFTObV-wqQ>fud#gRLhEVLZTg%8iI#t)z5 zaLa3K5j&!RuWfc+psNCjLq90d&KEr@(u6hki047O6v2VEU=4jm>ohe#BbSnOKB1=j z2g0_cy8d1azsTj}CNwHxRqT1Ljr3@!yIUjmdXPoO0&+{UoJBSWvc~rMK|xi`dCtna z27fVRZ6JUluJ~UMz`+YZOBdM}9RTR+KmUU5HH2Ze%?3^-Vsn`9*Rq44g(^07)m50L zSEW}zad;A$A-iv$WJmxA-IC$Ja1a4Eiv=GM1zzjIyT-MOxLE(iM*(U1q0*PLUp*6% z`M^Ey5vLlmkLG(O;wKA(mrqe2O`++Zl^j5Aavd{e+2Fg1JRJ5_9M(SJ^O-hG37i{7 zB3j|AlIsk^ccRgKu8N^1TYRXlTYFaNUKwek1ZV(DK(xP9x{|hr6K^H?8Mel_M$4BG zC)^_dHT`}7L@~j6VzSU4!43J^r&vRt;a{)lNU3$Q%}w zB9z{J*yM+wF?M#Z69Fa%yTS7Fq4)s4`6Ui9R?{ic21JSf3+tUvX+N*YVx)@()9sIx z$MTq#e>JR;BGexl$pcRi@5&B`rQ$%W#e%QXK(98C^}ce!S#R)WzKz|}d7bk^46Wna1ksbqBXrD6SsCU!pv8|Xd9ThElJma^9{6S7$ys?`Howo5fR zvny`UR92)*jQeTaQ%ccsGsTD5@_53ZiKSMIa3w6F#6K*mR}|Dql@_3_HD*`f_PN;K z#6jpI*>f`OKRa3_a@{myKX5t%>Q)2^2S^G0S`1EbS%qht@34jtVh!KRRYd^M@g<(5 zksayLfyNR71fyjeUlrOv=e9dJt02Gt0y&FQCDSabc0fCs-&RVuw}+}J!|#+i2@><^ zPj505ww!sA~PmvD|kk-Hvw_!YtQqw!i1@{7C8a$$=7= z48Z8~S7&vdP%Lt>%8PB~Uv>97_?M*lvAwuGhFwOdXcbEC)U8~p{!An{lF}3zXG>Ppo?BR0 zq-+$>u#h?6#Y4B|QZ+deF$Sn>$rBt2d!W)J?HGfB0}QIL1;%0raO) z7ZqYw^&``uzWjUyek?d3;->R$_h+JMj|J7vA-U7%NG9%;G-h!-#>?Iks}bzU6(9g8 zsS|_5oM?JFQoTf|MIy%5(Z%4jnce}!eOu?ljsARecNxJ&u|}y~RhL{t$ix^1 zwQxDpKSQrwySr7Dlt$X&&&w@+}hcW_kY3I>F< zU#l2}(r^IwYaIJC4XJ8B7c5#S(GRLA%|YuQ$AFc^qT_#FHRJ7eHNBK9cMzP2EIwHr9e`@% zycQ4DNVTOn{x#qLt%WDU;M7hYu_*d1N6cfND?IvOd}|KB$%bDITJP_p?K}SlISRM3 z7=?a;b*PliA+*)G$T<CjUyC# z3GFkt9iNF$-R0X$fVpy&e`9Vy7cOf|qrR8TtZ5t`h$hIz@;Cr%cJOIVPNca!@48R{ zi%Nhq0`PO*QNRXiCVaR&$@~uBJJR4;)h@TTrh=+8-bQYV@h;cxH386sSAtL?&*Y%g zxnlaY>h6UkVSqVP-3p9+a`@8gCm;g+f_On=%B)A7uxcq^n?LcgqKJ~@0^ttLD^}mPOmYx#)jK|)Ps4(`fUOn z4>+Q%Wl!U68V!=?)tyV}H0fY~1WWOVf0&o-Trpq%zixhsTE7v5WHDssuZfULX+C)ajeJW<=dE%honoLO{QRdN-Ch=DjKB8 z2Qfk=>}|(~o{JZzK@K(FioUhbp6YQ5+j({NJ1xk;cd+Y1G@>2`7qtkE#eLp1{<}BM zdnokKWz3s%L)raTjQ42$Y56$@G}<)?)h$8e3zoNLf1RD^0<-QJO$_Du=nv{gKK2>zgWvN zPiWP8A2SKmmzfO<6`Jip9i7&*K8ZuzsF1C@VTUoX-5lWLpT2_gq=XgZIS59r*5^2y zHu?Yyy_cM|@t*az$A#*uB7`RXIPJ{hkC&)%bcZ9x#GKBZPysn0!TfVhih##_O7XV= z?7*^^LZGHNXp*LvU8}#HAh3~qd6Rf%w^r{uthClCi5c*lm=(%$t4Sfus`(-Z->@&^Py5WcFL%wcMJ{fpIGkiEE>K=Yi3t~!>_dB_s z7k;z!Hyr58^5#n}#6-4gfH(SVw{?3ffB08WviBm(F|-!R>)Zntvs-Gnn$^OdcxPVI zx7N(fYqr*=L#Pr!Ps2Y`lu+IIjM$LMTZVSJj~yOY)B-$eb7Y0%cmMzZ00exXX%}bU zjlwy_Z#v#C{f;U{g8*3ScM|BTe~-c`9ax-@!@8e)Y#$CiH%Q+z?)v5rsHC~9iplHU zH|m9he|j!7a^tDQK((>F;ZKl|T0=>T!Y;kzFbtlYW8m#W87X2%E`Hi#bQ0Oa(90gV;=#YAUf3i9GB}4`7M?%bnDF{C zGv_x;|8lP@{j~&1R24uk_NRZLz9>$*E0{lX%Y(f2Ck0Zw16xr#u$o_FkcXjik=I zQ1?k7GJ8p~v`4pBS1FHH_$hodT0nl6Hctr^V{b zViyyN-{RSF{7jechA-%lBA3MCI;GPjk}n&@(IZb<`TQc0h*>k96WHWA(rhGMf>|{P zaW)~}Bb<3bLX)#J(K)27KBn0)!B;k zL}DrKk`8^x)P3#!JO3N%qzU#>H9}7ju_S3ubj{23qz&=4H@jJsi%E8!VH%^5{wop4 zm9>g9Ut}lT%CMFxyXq{gFv>^ssXTr6@21%!@H?%{aP@_h?iba*+rQSvo^k04`hDug z%8aX;FgJ_I__Kcp#!sa&*8@k3=B&VkA6=AnGe#(RGJBYTK^@6L-q;g}O6&9R8q+Ht|+1ap;n+i?+R zmQrVJu6EKmRSY8l!+f7Yuk7DNcxP5lrO+Lxd98b z@_SRIU&N%?vS1h=c}FC7SZ4SoSG=p7GDzU`oSPTacVYJx8pi9;MfXOw_P*##48D@lb)PF0v)jU;LXb810@^Hb^F(?H2!{+6<(R77iokX~f4Tk?h2~JdRJlbN~Z&zgL>0 zGH5?YmnrHR);L535CiUxhKs*n6_C4Ha>fBn9?{#EnIfRdQyDv2#8 za_bOOzlj*qq-tC{(=11?4aJkhr)T2sh;n8Gor{-oHmn zkl8bw_2|SO9XqI$bmvLRD{{OlDO#KTY4maPPOatoNy8C)uh?3*tvri}+jY7&TZWr- zSYk~U!>_;uknphH?sdWe8EiYBk%QSK3l9U9Y}nPqNziy5-;Qu^cJGy8zwj&glkM>C z;xMmhI~H3K-<+sr}#2UF|@l) zl#Zg&gf1Z|BwSWr7z!EpObAx`>8L}kGJQ~ZlkyK&R=wxZnW>*&)L2A98`>$22B}um z9~%9e;D$m^&Y?A-iDO7#{Gn9X&Hr1}!3l8^jQZe$W0xhQP z5-fbw|AUE^T&pjlS`3nol@D}~_HsmJZD}+_XU;`S0e7G_nXUswa!Hy~6h_^4VqI3U zmCisOVWuuSQ;ppDi$`->(-tZN5qaqC}LfT)P8U?WizqV3D&Yv_>fae3Ve%Zk%_8%2Zr2ff!+bZ zYf!P}D3OK*YD1^vMmm_tQRMgqA0#;6KM`Y4JCQ|iLl{+j3*hYZ(g(jtYI3R1fR^&F}w8|wpFab8IQ8-~2MA-vI18Y@C%fn)`2&qFf;BR&;CkZPPXz0gn z>xo%8fGXl)HS%>R=F}C|+&lqgxi;-+c21>3F-y4TYLMKn3BPoD8$RucRTZ!1>0U3p z*fjl+u6-Bx+@#OYv(UMh;q0jgyRyyA#UXVk+z0$%Za2Z4&)dP7a zECzyV?wY-tiM8G2o`ZpNjnr+&JbZ3|e`IdHSlJ1v^cGVSk*z=$Y-%EIQ97g| z4j`$4DAhi1Sy_lp_`3{B_LBNcelOhFmGWvT{jK7xsDYb?hKyPK52&}AD@d+ zLi>qnd5FrUu5x!0kl6OupkwXsn5zZuMU3tnxP6>wo%(Btxz01|$!+Vci3a~pyVtIA zRw)u?BQH^8?WxE<7Hz>jDU9s&?Z}*rLx7((k1g%M$$OO**a6vX-ij1cP!|3g>#$oH zkOCuE8}aXiZK?7844G+i5jxas>v;4-LC%zmGdYu#c}dtRsSwf4svewXyP=jS#X0VK zZY=ly{xQUzZa|4OrK+b|ct|aw)l;oJA+Hqdp9d6R?{r-KFsY*gg!z#=suVqf(g11f z6v&WeiQf~^7~f#sOTBk|(embg5K7P!J+V$lz(LhN(rn)gbA(QF9w=U9auC856zHHV z8N?_jpqs%r;&re*(4He7_npU3p`IUT&B2L|U%N`bODJ|2C_dPfJ7En zXmmSTvL%&2S{+=&Vz*&2&LPJXtnrjl+_CFin~>b5R-l@;c;w+#LmJ5n2wYZ_-N4gL zpq~wbV6VV_)oy;_lO#sAoU^}=H9oOVI;-Q)6Aw>TPmb!CZxui06^(Wr=lv$E-7dxg zwk6&Q&tj_6-gh)kpDSi1<*ABtne@dz?(F~~^(=hjQy)MYKY=k!q|d6Gelpqqx#q!* zm?(j%Vx6Wp{^44mMwq{`xCvjyD%4hk|6dBX#tTc`K)W~5c`lD(;d4_t-A7c^Z@!Kd zM6r<}uRP?ExFs7H^7_@B8a)B+?C#o8{#PgUS&MdMVA0xLQuyQlfJ!wDkkHo7ott86$AwN48 z=!ZHG`ai-&`;~ZYSQOWyu0QpQ3*5SwFq?=FUYCGl#%{^+7|P&;;u_E*cAd{2 z-WHVNV{>c)=(3Ke(DMk`FfKl@8MJMRd$Pvav%t z`VQk#_v89Ewb%H^Dt^*Lj6lLtWBs>H>*Vm6Bmzap2wy%!SQdL<=6!V)k+or0uRqnx!^dP&ZcR9w6O89g42qU}%0EX`=URty!H3(2X*D2VWDkEl8;G|L zAm)j3WWdO&!|p{d7YxMas{??!S}?qrVubM?&+p+SRTgHAEL@$l51vVl448+ZjwlxA z`a!`J>j&T7aAftN`7C2fr{BH)l|r@J;t;Yq1>1pKoWJ zqXs2hEr9Jv4a&yzesra|-rutJH#}`~^Z)(}zuaS^3-v#noBz~Q_BXp`gj<^G$1*2u zYzsv2afhVMKi_Z-h!1nOMGCfFpYLdxV!2d+g*KIl3c-%XPEU_;U+WFmGVqi7rc=-w zRn1wtlyiG%3=al*bZD28Ubg42397S5c(c~KlC{`@7{%}n+tJPUcN?NcMwYJdiZS`> zG9b1arIGi%iEJ$jlMab2Y6~^TsXK>C&{N!2cs{c;7>+E=LT`iDM)HHx`V(H0?$$)} zdUV$B;^JtW0q!YM@5mUfKWv286%>004e#004?R4>KwhsN*~c?qTUjUnklhVmrN8L7<8EWXt(U$fPmke^46u~8p1o% z1sVK#d-qL|levyQ;mp#Fe>xB-y|~wa%%`eV!oPT74mP$3xPk^`wlC>W>8V7gYAq_Z{&VDlf7Wh4Fh>K~1^ zb4N{TxHlYvV$S?3FDkryWFf7JZYlKJ3ro}xVSgh$AK&>_!HUW%Ps?!u>wJC(qDVt2yWXHgSomd3GN;66zOh1^O+=GBg*=sJtru(&xG()v-~1g z4ZixsfwdEcR%Kpo&W-N)GnUUYS0}??#?(p_Juk1#%c%-qDoPxCXNIz7yKzQ4$C zhvovYB(hCF;j`oWfbt`HIY!8^f9zM#jUmS{I6rx3l)YL@-B^um>X)A$)Xf5s8z#=3 zWQgEpI%|^q)}!aV_K2bnL=h|W+u|yl9hyI1iQ_}&;SobnX-|%WaG01^7*1XQ?N{Ah z*#Vuvmu+D=5ZY@-A9|(wEQMeIop8KI&lIm+sB(Duf-Ly}x+zI(muz3rPpfrONc>Xa zn@XL$gP3tJBgKf@qSqQ(XA@BKpH#j@5hb)?@qYhzxXddOpoJ&f)-5*M&WVwwgYVQ_ zLZWj276n`GBGQ0aJZGvmM{F%q-#txD&av5VhrdB<<&0FpDDn*=AaH?0fgmZpT_uP%hCGr!3Hy34lAy6aK_Q z2(DmP-XDoXWi{mCt|w5;aohj~0)z7IpnSTH@)%Sh*9j*T8jY7CO4@BKUrhZ%sb5E8 z_UrcVu;uInBgq~UU)#BTZBmd!+Je^{i4dycySB?Q6b1ViSA&zFYK} zZr?Dc&>3PBCt?p#1No+Am}k2jxchlDayHOxUujO>oyo+MukkhK8!cd1vLvCrXXBwGz(NqjJ`12atyXuxHq2oVID8o9f<^A1`2*ir{& zZxeAS5)Hs5qwb>nzy2T5W{#4`U1z3{DS&96^Y*uxpmjWBKc$Y(e~B314xO4vJe#!} zvv+Eoz)ozITM7Hl0`m=#^^)E8N1Fz4?;|2ypV(2%*qryIs;RYh=BHZ2kFlz82*eVWxV6fCK%p(G?GRnSvG+ zd9R^s;u?~alTM|w8H#!wrn-eoJ*6XmL0fnC+KFIO|90!|0a*ImU1<|+Qgr==o{zZ3Uc3T zw;qG)TF2M`=XgmGBSw$$KLPAX>YF1MAc2UhD#C06` z`w|MAfb|CXqGwl$g~hGLqb><2z7cg^^Wela4nD9ptvd?SZSx5Ud+}ZGB6@=@N33&+ zIqXTcnvG;%YfE}_D#l7A&NLOYG1>rCU`CE-=4oj(8=xdf!K^0?CqI0oC~2#}F~84- zu?WuoI;k%66~Q%kIz)^I3m>x;M6Q?o)bYU ze&qzoCzRmRT;%zHe&v?zUL#rVSm^vp7Ibmi)*#CGOR=?P-NlU2{*iJ!i;aDZibBGr zc9jGqPLDfZ7mof-ugZ8~;<(0)T9}v;CG&$#^*{i#F3!+*HN#u!gg*Y`;)zraRHJB+ z`es#n=~dKaS`3Avgl&)6E?zWFUQZFTjIM^jSSExTMmX9My;zOrfRv zJ^m}lLoHh3k@YwZ@ZboSW#|kL=H!Ui>-Ho zk}Up3)jwAsRZWK2gEsB14AJtfKFv=RSE0p;lBJoWfA{I4Pq1=(pvr0kmde6 zzN$_eCkb$aU9jcLwKWkrCnmvi>;gdy<)h~Qe+dGM+l~Q@6~Hp5r*)K(ypUz^Hu8oV z909-$v?1lZvXr{8-t*2k-C19Xki(7S4zk<*dg$z59)s#y$47mpFHc*^%S9+J^Cf<6 z&EN`{ty)HVc##4_Of6X0c37L^gQeaE*=d@EwJxnyUwR6OTfo&J(%!bQ4)f7}-+W7L z*08vW-Aw(&3P)_FsHURZW&~SpQl4GBwGD_p1*8C2Ixr>4$Ub`)s@5Qb#H(_OM5fYe zXEX5Z&e!jW0<+o=fD^VhBsAfBRcdRhc18cR9<;bZihpobs0_tLZ|HlH_p)foODV2* z3$Nsb7gRh%KsQB)PA6`*UfpyV=(_n{q64BYogp0nE*(4tfrvl5B$|g|!=?*@e=&G( zK-kzwip=6NdHY|`)okOoiw-uUY9IbA%a)j%vUbiE-_&vy8(rT~vnal#=7aCy$8h2Iuu(Nh+FQhp03H{Eo10e^vC7 zzNlc=K@CDl;|A{gfp*o)wc2z>OaPW@mm`Qrw0t-t~b#0L;s)$@Ld0_ zkW38fc&WQKJ`7~n=^g|Xm~{s-9u*CVzzv6cAz{w>{@R~cbt}5pp+G%BJ;O3qD5h?@ zc(k6~62Gg*DnbwL+4q%=UruD1^(a`}l?K&_L|{&?vYUcJggx;SyXC%@DzS-p)2io! zJvcG?4@GkVa$93`bdas_Y{P8_gfHls5}k=rw}r zBLG<#yQS?U*M9Yr()ymXc7mlfmFYT%^m)F5{2@A1mr;MkkwV~EKZu87<#3T3%HXrN zDk4zBl&;DKz+}^?!ek|vi;4LQdO4l4~q5Z2Fp*Xt`C1OZ;?@5&{+Q~OyW!vya~bgz~8(F#Cp=qC^HGri&Zrs@-m0T1kgFc zbj)5mQOA8V3)|fJLW)gk2w6Nip(YD~7^;&yzTyE-m?rul__Go$2dAmE*E!F*s%k==!>70-BQ(u-sn`b>9`npg{F4*}aTBh$39t zF$B@_T1pOK_bD`BVI{5$VGMEEB`b;`u9gIC!90`Teeo)oboE!Fremyct z; zj}x8A>oXBuRnTesT<7_aF6J%`9@RK%&{jj$fBZ0sK+?4(i*(am6@V5 zq2@7S!bFDY;yHRFsH%_9exdxBr!yQp4Z-HiOFYPn3y$c@M(1MLln9E#X;Ke9|Ha;L zfbN85=j{=XPqX^uvQH+C>NzikPic2(toR-a|L48T_y}KKLAalc?loba#jwycsbXa6 zPMabwBTpfVBfFlYI|HWFSOS14zuq?bQ?dk_cOBS<(HqOYN0Ef8O1=PL!}E3HSfR8h z;tj2O0`CY}7sKj{?bb^2J#$AB`UkI14OnRSc4L+LI-tNKoT>DRo_XqNZdPlf48j{? zwHK#PsD|VF@gcy#%_gas2Xd)R(knenMaj;1 zA|!n}d zXf}`oOGJkP0FcKpA+P{|Qdszi46lPFe&Y>n(F%c)gkYJ-^V+kMPx**CflZU4Z|=4U zeALq@u+?arHB6xZ-UyqNgg2s$mjdx?ifpetCOF`z7iRaf4||s!_jhJEG;%&$q|(Cz z7>D90B)zn7IIlWR#zmP_5>te^tQmMk#E2>4x|yTHt?gq%dH!ZRQw$a6LWb3PX?PS0 zZR2=Ps(*(f=Y>rU9h<;?b|9sn!Zb@7XnyLt;Sp!u%;1(ON#3=>{3HDcH z>P})_=mcIm?}P6?a{_5TsQ$!ioUc*jDP0$nzh_0Qh%W^%OAlCXVIFZb%xC*VUtbW; zxTX$z7YyLnl(x6!ulH^d);oW57FiJb{g1Csu9_Q&E!%GDt8;{InGavs+Mi-I4sCk* zcxWV1Oy~M@%QL0v);!j(UP1l$B*{$EGGL>`|2QQmgDiruD^p0P0oO_7ts0$W=~XL6 zB=lGpa$lct$a&7x;)B)K->wHPIpAiXV~Aj3H;BG}!^b}?e*mq8>ccDgYQ+6XKRKaX zl*d5n!BcxkvhbuxTXfqdbpxII44mqsW?zqpNV3cBuT7o662O?K`Es@1 zmpk<6d;(nV(opJm6f8gQFFXzPmJD*|k=F)DE*9P$0^p--{PpGzu!fkQMqmzJp=1?zBmTl=HFZa*X&;s(L9i5Pkp1>F0Xj8hr7~8FXhkzZI-Mke zBBDXaGL~{7Ka9qnFO-mTM%9(7dFN?+t&JBr@}Z0c zxRZa>Q|wh<;ny`fB)}fNbxGAItmDBr&!ko&T1=mi$@mB-l_{!+uufE2W?7-EiU0Yi z|Ni@L*8t(g^k0bS8$Y!4@aRe5ea~*|yAcO3Rx`L~t}UULmY4J?@>9!fh-y8L{O31l zUnrlSSmRr`-Z;mzAL50#?a>itO;rQ^l_}zq1AKKFnDylf(RhXYt(X#ljIr`NXc_y1 zpJuhW#!JZR_ZL^*(rCXkEOln+;iY94B~qe}9ym04|2@C_(T&_wk3zO6RGRZ8!r}f5 z>h3k=d-hsK3Fv2}t|~a4zdecKB5!k!YIoxD#?wec(WM&QdGw@yW%PM2uhm%_PJ;W0 zwuT73mxI-vWqVrmxk!>>1&MIAFK;A=AoJ9V@l8D8gp(g^s&hy!Biv@Or`G-2m1~fZ zQkUKIPYNK2&Y2{l)BV8!djd;SS9Qz!H0{R~&hSGPO(Rj+u&6n{#`FaC_S~(Blugdd zxYqB$14~4Q0s$AP!F#A48sfv*!fc3r9l=6L94&L^`0_YarkqTP&A}%U;HTCuXsot1 zzYMe67AWxio$1v;kG)Dl#rl$3QYW}4BXJuq(OoBIEFEwo>*KZ2499YUJNqN!d>-WS zus`^b#lKyX1&I$!E&^oK=ruk_a)7LIsN;@I(8@P z?zU?NF^{ty@=93yR`42(SjFxIT3k3?^>X1VJhwkf$QDvJXgr@;w7ZL?IW%X{4Xdf8 z!v$1=(crGddX@B52KHv#%@S!tK0g5%^K8<&<{0sFEAR6k#j6F!N00M(=!=B0uE^&DTdLprHDUw`L5 zE~mt?>H&C6Q%q$v#|P!TZdsYU_}dGbN(OVX^{pa&xz+)Ek29=NG%HdqU4uTT`Pm>U z+!~7QMUL9Q{R5C#jTTn7@V41p4OD}>v%+><*$!!|+WUc}D?xZKsHdCBoT5Lr78kwp zzON71<<;jg<}@lJb>|`_%ADWS3>{dA{jkb(=+ZB8Ueg( z*jQ|S^8(W>zQw0e=NfKXh9U1&k|8@!vS>sPB*ETEO|X?!L$2h*6XaxC%L$a_hG9DJ zt4mljmyFt@Va$4n->G^yhK752v;g|7;P*7gMPExd?!?hK1?~w2SxRka$v&tYsU+P8 z30G-1olF>Z&7(lzS-Ez!u20Is$kdZnZ_SMeKL~)kfsjgU5g!9pPV`1+4DTi`IRI?+ zxI4EvYWj21e3Q=7Yqt{UX;4ZwH;8k`Xo*J%bqg$lzHEQYF|GtMrNBEjnd{e^2Uaa~FV)iwc-!|ry;3usP` z+?}AvIb>m~hjp>#wut4Knl_0seKY@t%#3!w8ZVw4#Dl z=@^uXhp7wK!24PiHMbS~H=u8yD4upbB!LaoM9H$$-&(d@m1z19<~L=AIncn_1$m0e zqChny4nn0rU2acl2LWvGIM6#$131h#iSd1K#KGhWfZ#-{BL#WcO-tI7IE2bi8>mdU zmW|Qk>*CV#Swv~zuS$r#h9A7b(!g9r(o%^)O7tlO@~3`-oml56=9B9VQ4-L%i17LJ zye?ev1F;E)q>`iTcrL7KY*n3Fi|J2{AG^jbf(jr|=R#MjI|@U6dG@Qk1hU*MGoovW#zcqFgus;xp>dBT z+>-5;xGBj49MPg21EALR-9=>!Mt97N@)D!0rU+A-7~b0GkF`6-_|?5r1;M?Ii<`z| z&pJ}h@P#iS7x}K;T$nWAM}vb_9}eRvji-naPdM)0_307f!+g4qXikUPLqI1Ir1IA@ z^=G?dV=m2hnx#|pmmWh*0h%TDHDY=TH6okhZWMyaKmPTz?Vv;Fb>kZ7j$U#`zpJPc zrYZo^U|ZqNQ6&kJLg$vl?YvC04grloMRJYmULI$ufN!D^KO zTI6gAP#JVr)T&#KZ{F0C$6?35r~=A@QKED($z}+G-r9*dV)qYswU#@Seh-&MaffR% z7wOJ}wp$~w9`QRomgzAfssw7}WzC!pqg1ivn}v3a={eWX0b=H!g)nIRNb%^FJiKWD zGgkEAL0Pe#qXk%yp#ZELlV*RZ*Ak7{j`7(@gxaWOdk5j8Q$RKN9ep31c$VNf&`s34 zzyWb3x_4O~dHR~zp5mY(Xiv9_F-VRDg=9!+Qw+F>y@yaGw8ioEi|mq@tD&4A26M6m zC-ePDX1VVn$^;4)WMVryOKPgr-F`b_OMep$4c5QWjge8@;E4~xP8&r2vwXf=LWm5@ z3rPCJlf;X( zWl~3G9Fr|g>hQ0nU~vEu@ZmtTBiK?^V#FKfv1g=2ce(tNWpg|y*f_M&VWZCMBCgQm zUdAZHGwlcZq_C7hy@;+HdlG0DVxCSOUFK{))+_#ns~U1%MHM&i3Nge2a@TY0i@h^y z%@_xkXaU8W=s!{A{G@J?uVUQ|szjJ8e>JyCeN^A24k?%L!Hi;0t~spM?y*@XQyz;1 ziuBNkoa* zWgSJRT+?UAO{4AkecdFifi%-oNkF~73qKHHo@R&qQnLN@fYs9Oq}mC1fb+nCf9TK3 zHsr(l?q-#V(=vX~)jAX>0y1K+Nmh*t_1!59$1L(Ua`^aDDswbG4e!Q6diU|;_JYIb z=D@!|%{v|L9_eqP4=KU6`A2E%0;E(9_=5^#RrZCv%D3fYcaHv|Mw^!srKS9TFGgkm z_)WtVPSE(hR@m*MsIgm;X4aWzqJBGnbi^Jgxf)Ri?VR^r@B%+9_z!Lsh1>bvB{^s} zq*1TGmj6zY;nRg;po3IgSBKZbxSJST;Zx<T?@#1j~Dg_-hNQ&OT;NGaDGD+ld##JU9Gw0P2{he@}6O+cUPB;z(D!*vcsfwK{_p%H0*02Rb$6nwk{knTnR@EpJN zo;vt#@KMYBz{Z?U?)ggZc$S%vh3?J=>A|)E!3Z{}* zwxy3p2}{lpo2mDD^o;RmG^ow^Y^IPP-_}&}mL`1=w&+^x13v}{uZ&!w57(?xu(?#Z zxY=m3QRp{!FtyTWU|A`Yi}d#mL>-FMtVMb*iz`6Lu9Ypt@uXDc2%Hc@bio_VG{v2~ z52oZ-uplNa5$yp&4ZZSB3b4x>Y@f4u*!sG_vYN{9TgYkFF|`YxqscvCNVpcvdJ_YQ zZ^!fo7|o!yq?BVtx6M+3icOpapSFia!6hl==2Q8)n|A?mwl{FwScy$Dqo+hl&2k*M zwBe=Z?YJHWy)im?y}J9S>S_AXN{#b&;Vwl=T~(K&KD9z*Jb>#blOefg_i3bKqlj2$ zKf0Y%LW9}c5*OdH4V$m(NYoLEtUsC+gg4v@oJI zk!UxXw=2xHbr4^0%Dz`1LP;{F$Y9K)e|qwz1zbwdw@gAr{uIk0Xp2(8Ul`e6x2!6b zEJes_H#9m#@zK$!YiQ$rvzYZRA^gJt{e(6`EOAdJ;ExQcvKrmONA+rWY_y)DAty-7db34+pY9{j5 z@&U`UBmoV-?Ui9TEDROJjy)XA+B!MyPT6=2k1R z=0D6;I;ifgel+Lv(-_|&va3Hkzx=0E|5~IYDt<%dYJ@nfoM0p;U{#@NPk4CZM zsW4$lOix?x#36!OID zEeL}{v@7;bQLeT0yXZoj>$0WW`fT~Lz+~E1okio@Bic!wOvFM0Plhz`kne0bQV$YsLZHTo49A2y4b=F+A3s$%ZE}84AYlO8K zR$h6aX6uU?S|#eu?snEy+b_D%JEg#}FNkKiq{G$lO8?%i_SEa`*VRe1C^1wXcZE zyPz-f&CfW~xoz=bh{1>zmO3S1zN(DjTo2iH9KE$jZUXS{OwzMy$G(X!obIiZrZ z7=V^k-vOfQGdbq-Z~UF?#M$hyi~SM4fJK7DXbxFkUCjf)E1;wsQ+M7jqaV{h)6~8E zn5|OxZ%GSa@ZBA_^NP}sMTn602c zxfziz*H@zCn2LcEzh?R&1{2XTvFYTx*e!x4?S+uDw{hUXna$GhA#%HzZ$kZ3BAr7E z`;9=rQJghlCyPI|-RKHS(meC`yweb~sN^S%x2ceAI|Em0;7iSP zUGe-!ZZ=o$Oe;E>0^xT$Z!0r-IuRrQ4A06jGxR!3ye&$?6qmPPNx9>-wr2~* z1QyXj*<{;5R3Tu1;|O>-Eyti)d9=RviN?>+D#BZD^d`bAepHS}1KBf78~_<6IK5^- zhG$$Y2NwYC1h#wMs1{J>u>h&M%Lj6=_W`ybYlif;LyPHy3FVIk#XG2wF9dufk_2s{IR z{n-&#L2EKg0|k?Dh_T*ZL$YSg0h(1?MdWjifwTt?LOh?A&w#0B3h<_$3BN!g&N`Sp z6u~1*bUj?I0L2`;Wt=)bo3fimKwnp3|+N zz-kbLKlJ?(v9<=mx35&)fLotq%8m=OfhCL2jm6@ECl|j@*@KIySv(_;iM3veu1BIN z4ZL+fTLVgK_IdIMBc;JsNxEKqglzro%}YVE)J-BHds88^H2YIB>;yH??LYi0pV_TO1Xe7 zzWxfFTD>{GZot{PY+KG@C=v^Fa%RDIQYa6B|0jxh+>GBcpDV6`Z{0Ezy#Npl57?sS zpDnHFzm#kcVH`;TH3A=EvF`K>#V0bx1?un}hKrg^-+z4{;*>3!F;x&=c)Ak|Ww_z& zHFB)QDv8X(Jqt;=-G$S!#wmHM@T4c8ej+sW%z)OneS>~5KpsVk!|=z{_w>_Vj`|x& zV+Uz7xBOdQ5D63)yH|pq+66kyl(}ko)BnN#zhWXKgh?^-UohP6rqd|KQ@qP_+ENRn zK}LSBD)OhB$sfoqLkUXtK-gdiu^dg`lDfa2tgTfF1f{$iReFL&gdRAp_74YRLW_^R z!|L+!cEi{JDN)DW1hv$Sf?6^h(r-4(H>RU#Sb84Pw$6{rMa5@Ut4c@2I@{k(Uv51G z>P^|ErKpt6Gz?(Q)Bt$Se;UTheSjXcno(iM^L|&hI!(LKEn@BZ?Wyu# z3lg2djsZ2IBi?-+)FK-|329WfSWla9Aog>fS~jZOAXj8c`eInc_U`B%1qqK{iWT8Z#lgGe&ZJDQ_pje!aKQ zv4WCZJtLAJguKbFP@Ao0v5A1SurpDt0gWtudqPFci_FT2i&E&@+A=gDcPHotsU(!9 z6@Ln)^9=ta$QJtBE~VvT?x*+|^QlF_UKp+@m?LQ|%W5e=!7(B@^F}TM6yRjjGV8E! zdI7j`H56qP(NH1nzazf^TFmg^F$9J z?s#!iv|1q8%)D7tnnXPZ?7D~v$K1}9;lnGrnzz>*FD)1X=4h4MO<1jbOFdFVLwe&0 zhuYMD4dy@Gb!2-!)J->uD;H6`bUTv4DzZpA0ye7#&&<$RQUGu405moZSw=Nux(7dK ziY;^2Mbm+RsX5z^mn6^4_RH~@Of-Ay-5*voM;1|mZ(iRkwW7Yjub+W*=n7;uhV|g$ zHi803pd2@ZMa{c|H+>>lkMsIU00O+_^?Ok|($Y_plY6_f0MgN|W?trs_X`I2BK=^Ff( zUHC*N?@C3=S;}4?;b3QW5BwaT0uK2mc%NT-AO19Xv0cZq-jqLT1B90e&*k;~mgQG! zpT5)hhd$7L+5uj#eml|th8n=rPNCl+;QqPB6AnQ7`0`@^ee@Iy0IVM`^se$h>mB%b zc~8C}KK|R@(uevh^s;xx*UT^Cyzfx`+$!X_7DFaFqVBr_O-^^la zU574)(N}Zd{>wrv3Exp1r9!ltgPx4GQewng%CWd?!<9hV>fF1*Al_`XoF=R@Gvvl7 z_?LoV_Y)i!h7}ii;{u*XKIxhSlm8uZ@m{qnpZbAIUTd1}%Y{{|(lviil8Nu6I&anW%6e zsr%<&xvXfWI=m4OWtbWF@-sG*H=e>a$;fcO`)#aVXRJjZpwms{v{`x0BqMe3koA9f zunq#Q7N2Xq7Kp5$sz%d6BQ4$jyzQ#p~iSlr&ld{lXi;y z38HA^%Um3|iR#TbRbB)4Ffq7??DXG)CWiQS=f8>hh97uLX_HLNeKSsK_SWxZtFw)< zgl|D4;jg5oh>W1phM-mn-mPvENA+_hJj`s4DNi!Z@6Hduc&@J8hwu6 zF6A5AMoMw|avA9Nk1qUbY2ZA&ZAj)Fku9*k#mNA#xOT2nlS+17w!K5f>j|3x@f;MAsk-1jcN zTS)nGEO1XgMvtiQCy6YC zh)Zs(Y|En`y_=N86fX@LM17mgpfwuVWs`OTPt`oio`(}|G#R~AcI|W_Gc06HCg2d= ztd@j#Q~VQq=!jJZGodE;XYn)b9TZmTq3i;OoJ+KRG@XOjh2ey~Jt2-D?t8=|fGwF9 z8J3h|ZgOyDH_Dm78AlEouQywQ$M_d(h&kiq+Jf+lvpW#C5R6`7+JZ4kMqM^_y$+%g5+*`$yjHMt4v;MW6Hz# zNSQ^GA1`ttO7e55hpOOanFV#8_TE8W>9)T+hUQPj=}bi^3-h?5GnRZ)Ehx4@An${B zr{72dXbItGgLjK#!S!iY2L0Q+P0se+^8tOvZ=7-{KY07<2Uf>*vbGiiEcqq1zH?be z2tBC+L`a1^=1+laFvP-Ep%})c@R9p5h30HgIzt!!Uy2)bKq`Y>E(}X6+FTpU$JZ`~ z(~6HR!K~SDf@tPmB!;_=O}nLZ@XHN2Ad?E=KsG~qqn)^JzHMl=-)cs51h0G}Dy||) zBIBQ*ES#w0lWGu59atp4U}Vv=H@TY7Gx-&9krZx|hnH{UrTj18pyXh4x7fRubRlH^ z(;a3JgQxSYezqP0{~DV;I$GEd>UC7&yggu@=jH&m7I`!UH2uqd)2=JFW5JFW{x!sO zGb1r(Qw5ya{#jL{o2m@mL6+sP;tiC-Z3XYv1N1KDqmQDA#Rve(Lh~M9m^XE;>xR(}c2fSw>d7RO)^9eG78>e;fl`U?D>8zoz_66Y6hUgBCFk2a`2 z&>N&-G>jT9D1&c!{P`TDUf`8WNuM)Ms7DTRaMAwVQ_6||ZZ5u~j`U*6JR`eq`}|V4 zxe-(V7a#*<>?3kJ097cwMs|e{-@va~%AZ{{&X0zC5MJAp6X*@QlV;w45r+hKO}QuNu{$*X4^Q3`%FoxV&EU$M3!d#A>z#aOd;{8k;Uqp#{XzpVF@xKWYiMbK+$_@B}(pvu3Bmm^a!*@8X8 zpuc^9C%4+n`=xHA&%yxV+G1(UWb-zT%4=Xa7PaBpM?NwX8$@t{y3o=9Z+IX}{DpQM z>r9(%!uNNS*vT@#$O1<|y9(ou&Xq}H8iaMvGra@JVS=%Vc&^-2p9RKuOF&u4cv#xh zX_Y517>o<0yhDHP6_?OV)XeqK>a($w2{L`<_&=?;nY=DOMuyBJHMQGE9MbnBcCrow zK*lVF24BvDE|Rg4iJe;JVbOKkYdhyU^!uG~jwLTq>rzv~Z6liFf&Y27U`%z)43hst zoZ%f)TMc=#RFgoYj9~f43cH&3Lf$D_H@7djYW6aAz6mT@9|i--Uwl^ zY8kVz?1BVSPm66r;pfazi#_1tt0+Yqep^-Y7ZqOvg91p{c>A6WJ5K%+;VLm!IrG(( zD@26Uf0&cOi&V0M93y!q8Ux0;m#yPKi}d(Nl%6q<1c9$8Gft(a75!pK-m%qL!V0^yZT69}M5w_RDIS^nkR zYSo~2PkArivT_tse03UIoPXZx|1+6-za!!FA-FR)V>v)rT@0p|U)fix2;Q2KgXv`MTCjYRdWd0?LPtqAIM8Nw%myuKa2^r=J{wv;AEeZ9L4r64j()qtFGkvX8I4 zsP2F-^#lGcr4an>u1RDh`h)gcZ~lQv`n=Gk+@%tcagmw4Y>%NX_pu4^F8N=avwe2? zN!c7rxDBhgZ$d4?&U;wCcJZ|hcQou*jF+;5bS?kgDohsy^UQe56AG(5-V$Z8jp!i% z$|OtmWlnRI{_-&VgO)$eY4o|;W)5*HU z%zrE~5=Bd9>%aZYHqbg=ZJ4BN4dX(@n(=$|4$NJ>i79MSS`?^AE2?2+SD$p(g+7T;H-bbj+zDglVvGOtx z+1*RQJdOlAZwTe#AGrS^!OQQpUP&<}(b3$_jo<&F&NP6SEa3VL=;o zASf@4Xj$}s>;+T0gswDM(F0?PVK~|BjUw9&%lp%eg~`bJz58VwALta<59|d7hqDk$ z;l}F+od4kLYwvXbGKE{%Z7bSsnli5MX485Kk{O9I);M71i<)}V=XKyLmpz;Vd(SiG z;l{%?IsL)ePfo6g%}eF4%XN}9HQu1Cv5{gM4!5uM)3xFMD#}O5u*`|vb>N7afK_)Bx{^_F0N(hUg5)&lEW!W$I=VUjrRO%3DH&B`gEBt4*mQ7-c zBVDx7S|+X&YJg=_m$oo=NQJB3Oo64(6660OKvuY&Cz!8a(F47rYrxXDnN&-+zj~vO z^T%~_I*E7Pk&rkgNPqXrj9UQ35o0=q%N>c7vbFK)ak=0T|KGI8^r`6oPP?XgcSuM4 z|1VYbzcc9{<=SQZe+ZBNOM+FjD4of zXL;@$KCnYYS}LTo(4lvMTbEL6>O5PUWXchEq9JT0aDQ^TT;y|L@+*_w_^amAz~X^s zB6hkC5qHw-4UFDra(lszQ-$e_~HYm|x&pUN~5>EK0fY&L5zjO)uD{Iru0dMDI{ zTj9}!AoLN+dX@+X8Ey@NLsVs!gkLPV`eF77`h9E`!()opjEQM4d!xhPtX{Gm>kAaY zS~4vXXHg*9d<8J|L->TEfE=&^6o+jTM(kfnR5+&;0f&y#(QkPsr)et)cz3}(*9P6g zh&iAXV=?0RG#iboiwY_#q_Z)0Wp6WM^O7R4c#R2}PvQk=AD$+M$Oq1ovK9-HDnvfk zHQtvb^&>ZC6`x=c3Z{yaI0kMvGs()mfWcn(u7xt%YBABa>)Ob6;eVYAkthJJZ>>C; zQVA?k0dCD9zmKHUWY7v?-7DFh6Sh97`%B5QYRI=zu;I`rHyn9vVYDr<^%{MP=M1#u zueT>++PL^vch)XtYL6c=P)UxR$xo=rRv(!EaC%}Im4)HKxz6;`M3h{IKk%s~<(izT zW2*D{;oCcI7|G@z^ec?R?#HdL3^(apx#}13Y@1Y8lZt~W4OXrI-qQ!$k7;WG3^UR;N z849Ln52%wJXT~+drOH2z`amGawK%_b;LsHbiNf>6oMGr7p3Q!Gx3VnMq^9(*l#!L> zk`w;OS5`h!Vnl1!^HB+I5iC6M_DG}X=zu$Z>?PGk>gc~!0!#atCh)nNq>8X%`<4cB z-Gs+;T*j>+M?0SkkepgPv$2%Tg9Z{65q6Jlcd?FzBf~26dFoHhkc=)Dn5kFFw}3)w zoykmJt+NAKDqBgh=|y_#4gCAe&uA11*^h-CU=d61xXhxj-|8`0ly3S9@ospQ`N5ew zFTUK5<+lfvDb(6=WMG7TVbL1awwsT@<6Vc`mtU41kwm75%u4pRLUOQgy)Rl%pn~WEAGTKJ8=ZM&S!)$?MK^Sx+PQ-$OsRm zQz7RI;XJ$us4jYfB|!)O>$yGq1qO4^9d$aF-R2l-zd~>x!Wg}rjG;AIFn>l|B7~(j z%5rOHS+RG`PbV}1mvaVS^O`FEwktK)#0d&lY(iT*PXU`WjI2!HiOZdJlrOoM}7BDv0UezqYDw$FGl211SOFxP&nnp-1`$650uAV z;dA1@!O)2BoG2h%P(?$8yVJVvKT}pdL$rs#Kz`MHOV#R5WRLjmW&jam@_7cv_SjK` zqOuO|L)fPx?CQKjpePMTW#Hw6x2Lgz4fN^7k8I~1HgDW4GDp%))MFe2&O2ijnJXYw zNn3gS_0(#19ByOH{lG4P-X|NCJo-h_u6HkuU=EN2ZT~P`*KX|*l75wxD5q{~mvl4| zW{*|VHn$9;VZUpBM(;#dBXSKA%!^csuiZ0;tk5G-UIuo}?Am%S@ubR-pl0{*P%PNR zz~kl$SP&$`w`U?qA$b4V4*K5$98_sI#=%ee1pRz zwM0eoz{(0pjlbk2&Jo?{2X7)Az>*+0bU6ywB^UC5Ec)~m!BvS4217kSK5=@CN4#PH zz#((h4?JhfZ6}w1V~!69-S}7vrU|`d$@Ko6w!#EIM!W32B<{48(}YpRT5-23XSvBu z%asg&wxTrb1B1fT2h!MnH4H0UAeXIZ45T4Gj2w_bWKvD&uB~m*xJv8(ST!NAl9f6= zhS(5E#xJRz9vLQyq7+=6IOhpU2;M_Jwe6QMayiC4hlF<8^PJG+QU{2j?P6NE{-%4p z{7pHXhmAY$yYT^|{YK%ItW^7q`mkVuj9-p&b7J|>GK`lIS zx!WOo!anUgDNXl+2rt z`{L1xDtxhHF{*Y{2mHDiibhy>)Yy`*drB7$yD>IT613|KkDJ*63+%h#iT(-5`vwkL zLAJU?sGJN%sSqE{{D9I)x1J3ltoDp<^^pEuM0B~R-wLK>zEMVmabJ2bN6KkD zXWGkTtL`G1JK=Foqt2ZYM#I|&>=8^O#`)~Yu=5a@m;pBL2&q8i%8Md=g@ft^2jg*K z*%$w_=xVpL*fAUXrD*!a`$vel&H5X`3F!4(4Ho${Jh#*qM?u<;1jHkJ*Z&U@2a?tF zaL_vZ2!qn!kI*=@_&@8v3zE~FWLyL9F^Kyd=PdO=Z60L6z*<6)bR3))er;|)f5jWx zREa`s=-4&DDO<=C9IyKxHl}sD2k%r8)7zFqh3=O&oYV7aDHEc9(rpnEx`}kT>p32*0LWNySxBBLz8g{)-i5U52G0Tl(bb z#k2(0K~`Ix9Q~`i?$nc%j~bZ!HF!HmEz@HkrQf;z&L+p~cm641@sl;?pV;#bNG^8==(VxW`1XOnJo)}K26fI`_$4p0_r5)d678LhCMx<_zTl2*=fd%`9Uu7c%-JLLcylNIbv~xe| z4dqMN*)Etsp-SgHcn_%E_I>nR9{HozVp%y38FyY;Q3c)^`i_mgA;*(bTcXZ8>KM9( z9p4K6x+Q_W0iiOu(tAh7riHJ7Lb2Q-KeoBAh8&bB3ime8FH^e8;0DDRNdvecPCUqZX}O_ynNy)o=qifj4in5Jh4Bp!kfiJc5TB^UU)vGhg09l0oc2{ zbK)>+CNtw@8pE~n)u_jbN92P+bdOZgO|ZuE$ZmgkueUs?h{_X-5A#k(1LjL&jIMeF z*6IWMY={~G1akh$FLJoAC0s1%-x0rXEikg6XHAzOO4^L{^TQkY#m@`x!V)mmY%?Ww zJ;kgMn0w?nU<1)XE|p0#hO}a#644;bT2~V(xgmhsaC;-YyK#A{x$*{7C~zylPD}JO z9TJ(oR?Og68gfiyQzKf$G`~Y{vEg~#Li>x8T#J6%nYe#I!2bNHFDL!AFU~2LtAo~Y zuCi@~Owf5rFgQ2`_BC#Mb$t&BQUhTtComvWt$C51OF@8tYUN~vri2Arwd|}z^NoI& zx2Xct*>0usvA6j%=-stELm}x@rx`?6jI>$+?H(p=kD+$KfS^=r9W!o(3gi9qw}m zzCii6^ET}?SH>Q~FPW?cy#UMy%&mO+seN>f_Bv=bTTy@oW#v~Gk`CBGw%l8Gu=oX(R(~PITA|#K# zb2=87ZWkK9u7{ALuU1#!AjmJOJJCqenV^q5EZHvRNCrV*7#tzU(pQuOKfc~lZ9Str zm^Qb}lrh601S~u-b}FZv9Mgnwizmg7#~DLk$t_FCNBWb11J4q%4>airltj1p8Fx0& zJ(*il@-u;Ka;CU0HQ8-D2m<2PSbt%v@O8CBV?YjIb-*N7!cXX8E4#dd2E#%pA zDJ@1PKFk!p0MO&l`NO)@ldVw|(*&w*)_U8!osm` zW7BZ_CITwi7js9q2W$A3w<8WzvGE$@4Z@qY{1oFE?PWTs+Br0G@{rX5zhk4QQeZF% zu{naI<9BNS|4N^~wV}r#)k&(oOM%rcu(610ZRRyxX<^G?$qW?xWFkfl6PnM+N(CVP zv#87j4uR>)vslVFCvJU!st-%u?J#ctT6qc+MqB3BAoXIsh!JfkGnVcGh6CE8k~{|eM|KMJhWHR7o>)WtARsPiqQ zA=oBxT4PT#`50dc-52@M4zZ!uxxE0^O16)Qn6h)-2Ik^jobbFqJR3eMC!42bRq7;0 zObuU_aHLfb-L+|nmZf3Qib?WDfjonLxlY7wM(gHXpyPPkj-@9dsw&zz)7eceaBTG7 zk7w+`O@Vf}5IlHassd5GGqhI3E#hE;z3GmfTFW55Oh-+>jqyaho?T`Qh{78LlP!wY zgj6Ut6P8|dAM_mCzJJh%6b)Q~alUiED$aLujxjsQ&y-k7<%<(R*lq%wq(Fz>rSQs1 zagY!8uG^`#aQTj9j473v)(B3#A^YNoQJvC}ETuNf&TS0cLq*hQIIbAz75XXH;yaQv z2Y;gxP6LJfJ8y1AqU`+~{;V94Nv==YF0=U#cM%GTfp$PzBf^bEw+9T+Q1caO4W%ke z2=}T#Po=yQ7W&p@tpk@@MI0d>j*S+n0Wvv2p|$I$7lrTs5Cl7Y@sa)|@5c4_s)7>! zsodLW?^O`vkT9kkkO;Z%E=xuT>vX-e;&ZLg)cAtFvUWWHaMT`~cRvd_!iTmhsSM}r zkVxJh750mvA9NI@0JWJ66OE(-XmBAJ!|g>;ii5<-Dfc(^9fG_LR##T7pG@{b`jbc6 z=fo1!-b!nRhqxL4bl#Iky`r$XP4@W)w85Yle~mV;4`#Cx=9YCKF*WF;0Sv6EJS{imgm} zNTE)+aMI2?%E}k{kP(t6X@s<9hIq~p!#5$AbzBO!l776@=GNy>O_DbgapT035bvfk z${)urinS@35#4>oz6Ou#U|PWteb}Yo}_eE3B}Hm9)SIE#Ve@_rju}mQ6)el8isC{5T?^f#8)Ln#lS1`+ijpXOA{XX zlmnw$bt#bqUZaL4-8YXfT(oRE}ClUR<#2M#VKzkN%g# z$Tu$hM<@rYAAJwdZWZ77mo8M7pFP(O#jwDK`iU#gd?W-#--^C2uEr3@rB0nm!ve$z zh`O<%_sfmV6k~=H(_L?ClfTkv52mVQMJHDDr7Kc-j1*Bn_O{dC-Q6t_ccgip0A5ZC z*!Y95nM58y#h+mp%^2Y-V*@Hz@t1pN&sI-@j7D$;_q^)HLXopCpht4kJ|Gxlmqab4 z0+$n{NqP*=0VpFHy(69#)a%UAeKhL)$EtI%Znc6w5uT{kwC$^2dXWn*D?Q1=Zl+dD znQh2V{^IR1i3afvLIU<2kYoiP7%mYwlfqK+I}DqMOj(NSY8wax%wNOR2LmVE7F_Q& z=@?^3M7R2VfqD{~OiIj7a+f9-*d;neaRg`cqOQL^My(j^58$aQGa^r$6yVb1EsPK< zsWS=q&)vV7Brl->?DrK^^UPq6IvK5;Q8=l;G`{q0T|`_G+AEEu`YO{VziS;Ot@i5daOts;RyU^(m^=Jb$#-kU zQPfM;v+{{?`t@rq!~Q15iX#X&iu9xkurU(Ndj*Py6q^CpJ4H2+?YeJ;mg}B(Cvi${ zu7hs*ypU3v!xdVprFb60<`;_jJxvpk_}R&$Uuw?DD>uxPzv<}?zp3mrQ}>!dWT{ej zde6Da57j*iTcTX)a~vspV}?VmpG{Il!rxyX8NKa1x56YA1>{6^w->kZWwA=7 zGxX>u%h34T+m%Uwk)6Fp-HMHiF)1?kDl5`v#b(BV1++v3m=fG-wU0Jib26||h$xGY zC94`I6FJd$d?Zw-(R(I`dOzk2&oky~8dS7>f#S}`O->b9pJbDrZ+25GDU2km)^RU6 zPsK`aC+OQ$IR8%YV8z_rT%3KcXI6<8ISO;RGbb|BBKfY^CVFMs8vi(?2tDfg9uMq2 zLf~ybFlCIFK62R*_{$z>Klc1C%W)5~s(NbRXkxLziaH5_T`}K)(k6`(>wndDjKLl$ zmmt^lw>+J|n=sB?0TbIAVARBtefOv=YF2-J2lCw(TYR4-59G^uLNwT;4DZNEd9PR z1|pga>6&Q#TbWR;6LH<#4RLJXLC?oPC%OvN%jfBa zUh3w|oEC50%zYGDPhXg!`0L*W+V%?w?$Z>d3xqA~4%vNkb9*DP%j;;s@=KP?H_pka zgB)c_PBJTt!~6wgWxX1IqyO%br>JroI4UJw;ZEN9Q?BH8471>)tW?^TELdDQaOdU@ z`95pBw37b#AnWSu-Zu4Kj18|bGqg{@`|QwX{Xm!UX2^CjAr`sy^c0*`GHnL3Z&P4g zQMkiAs1vgG!?nAn?Ox(Pe_=n!CV$26exuj7cYEZ^)f@p$z`A|k`5r%nrP@K%!HMCG zO8c!~g>tsTk+P2aegbm#TMooDzg=ndyaUGTeB?AUr1w|bT*xgC(tyZ>*FAzrBnERc zZ5?af&enY4)_i)kzSusBb&j-KBqSf1WlvV~y z4>q9G?#Db3#EcKY(uez^`AF8ZWqGiQ>ySe_?p$RbYRFY2b;wNsMO+(@>FDl2axgP} zP*h!2Kz`5`iiF@dp&q4nFjS<>>1VQ>4Y10szh)GW8Wk#SKP}cPyexmX7CAv4hYTbV z_xm6NY#`GwK1uGun@Blp^OM>fAOnFYui=Z~1!+RU(MV5g*7Uz2fjvd`lF*R_PgK}l zgiG!)UyF+-m(+sDr_8x38)@#tEN{+S%9@<4n_axe`%%LPzt4<8e6ND zHesWLqv_l;aeMGRtlV}zJ|+Z^a;@1~G;1)h+WC?bKyZi3vpiA`WbFaA8}L-BVkqs) z#w6`OXwI=N63!<^u!mznto^uD8Ap{+jSb&Yn8WAEL<;>6r%rK^8Q3wPn#LD(yq^W6 zBQ>uNr(vpY{|F@N>=THP_^|U!RmR1@S5xXN5Y3Xr!vo0-9kfDQy9I%;j1a4G@db&$ zFNWI-%ds>XrInD86=i9S@p)gz2|A~b|WSXBW(_V7+bUPJ_#uTgX;KM zuYYCzv;U&Vm+}F8Bbu0bqz3MiE>IlYChkqI*sQ=sBsI*JvFFB-lJ=}bF>2nsJG*W~ z)JMA0l&!V$TywQXSv(zYaJin>Uzn@OTfE^H&Ti9R9WW`eHLnzWTd?2H_Cn?DI5+mj zlbV07hB1F%SGUD{G2)2w>OaGow5k5hlJ`WGATZcm#B^tz*3pOAePmVR3$L2gA;aS#SePi# zsiy^`{a$7Dw&I-LDTMdBYkHT*e`}co=6lke@c>ox9-gWy`kQ)5#uiGGzSEfZcx4a1 zwJnHecv>a1%rU!F%#O(C&=OYTd@K<4s$#jV9_otX?;J7S%mh>vB1wVIp#C!}LT}I+ z@Ehc%NwMVb2cnM#lJ+ARFX*jRo{?vKmu{&)2jSVBBCnIb(jPIoo&k{kR+>>}=7v*J z{qwgMQY{*y4n!ogFi63JHt7BsTY1;7*|f zb)&(&bM5)3c%%x_pk?(kgk{$Np_lsPcJ5<}D0{$q(w|@RKsrm8DG&Kc1u>)EI0X8q z0}H4HGS6F>@V_nU$dj~yutPVNS&O%wCvogvQJQnBw2zb`%1%V;v>H8_ox09*kQ%ao z$YL2M;3iYH7uA?V!zKfZ?1d;TeZ)s{iSY?Y;5>@Hx9=c2CXs)6Rt}2%n~d;@@iuBN zOEk9rV>K-U$k5%H*6NTk&YUKM=2x^5I1skoBRf>G;4tUK+=sW)gj4_ElB|R$%eG45 zvW%a>kaw3ZvcjgxtKlMkA`KdHr_WNN=`pye zGXb(&Bf97Z6Wp#%LFvvJgsP<%^C+`w@B_j2C$Z+tq6eyK+}_u7nl3V>EA10^kI0VA zAshl;imN&JEUn~UK?I{_N!mLctWAohWf4z;A$Vw@)!*R(sGJ=4?)c5xbdU;#F%~WO z@0_u#T>jsC0ZOt)1SoaX09Bk^XCL5+X(c)>eewMtR#1cQ)n!mT*tt!QA1X+bd1 zX_8=_=+;o%$ajE%7^$gr^B5FOWDT&7A!Bsy(4Sqs>W_ZNS~;9K$Ta-i`Pxre#fV`& zbV!cqrD^VuBa38t=NY2HNP{^yX1N0$R#XW8voCU4RL(iNRq<+H3GpD|SnlC6}>IRZIOimcaRHbqU8OeuB zd&OK08`oDOtfszBMK;AzZTNy30xV`E^orr~=$g+BHPky? z!(sUKT36KG#9Nt!AubAvJ`KhoHz`3*_^=qhjcGqb)Q4?|cG&z`yTG%#>>?x`9q;AK zyJ#Kml>n)`xU?^^kzXJJP-^MidzF?z1@^{a^Q7HVr;~B#`XWZ0h#)>R_GFkYni?>r zaDP5P4C$*?r(ekA`bysUG@1Ys!k| zq#Z7+2d1n3_0UN*8|?OLJ29p$Ne*Z@H@MU5fi%m+r(hzu0Pt_B6I1twrW6Vb2^4}# zyr4K2G@P9$Ff(>TGlzsaQ;luinwCn?hhLzaOh{^p{n$Zhsv z8GWbJYu?)n=hA0P-y~6cnwWM6Y0&^%QB|S6XOcA4m&Qd(sz4u>#EtS$a&$ljXQ!CYPT9k>^lyS=^Z|1!4=21fHHo-*-HqP%YZTjIZ>Yj(=nKlc z{TDThEWEV+V*dmWrH;05G3}EZ`pYqUmUe#0)j|_A@iu3QM5Pp9a6h?UDLN_+2N^kc zLjz^ZAhb;R?*G&P2 zpn4u0OAISH<;%v+D%OGR!6+pI5EHSUjk#bcUIA*hYg+p;mJ{C46|ht(mx+pG>s3rN zo+z~rZZkl*`b^+c^9EZ!c^9c#31&_mp+uR}_GNK$kCf_&65_w+S7P7W>2~K3n`4-YRf*K|;&= zWXLYVPcPl$@Zw@Hf2Djye*MLf`g;0$JzbF&^zt{>CzG7|L{re@WvmO(Yoa zY=<>kMt_l7>_%gj4Q*fOS17n0##vuWyF5o~Po}BGZxb$iP+|!}fH-6vIkfV)!up&b z@{@s3Z)$;g%MUAxsm>AQ zLBHc=Qkg?<>6s^{X&1YZ(t=e>%fD;%Hr0omWjU$dP4od6aA@RjJjG@qv_kKKmKyPy z@el_W<&UDF_nX}mThoid2237U8U|i_ERljNZK-f0i+^YI?Ik}@4SY!Pybb#YSVYR# zrZv9#-^tpUJ(@Vsiw9V$YNGy3ndygMV+eianZ@-q;f=8Nq)pc4P?T$$F7wQVjiPKk0aLTQ?rhIxZ0 zw0Ch-ki}NUV1)S)1Rh6J-nVo2+~VV+neqC|tXAnFxt7Ou7k9~$$4S>Me?@oP(adX9 zsm*W8L4)9)#ZV${2#gLqBig}Q;d`v}HyD*RO6y8qb?gZu9Dtwb4m*$2N>x?J_xg+& z+4nqj`jNvzKw`h1njR+r|7NiMkZt_{g-)rc0oQS{1Iv|qou>(`Ye+~Q($k94IhpES zUl-8!WrXvVDo>9gu?%n%pbH734}dG$5T9?cc;Mkd&WYBC%Lvy%g{-QReh`BV>aFJx z#`FMrp@15q-2ECypGob zZ?YqZiCd@Oq6qz{omh;T@d(_g_-`~oCl?L@!Uywonm?t;7+cu2Snuzg)eG|I#)nv( zg$G>A_GXpJW?)df1-J&&`>!j&tKop20h*084u9s;SdAx}k4_;-j|0-=7dD$_ND<7Y zvv4VSLSpow=VTL=heyP2g8sgCUZl*UE>dbJ=`pjg1p2ev$>WGk!d%7%%*{|O7M(rU1Mp{lmZ!wlLemx zIQ7Pkj*c-0UwaOekSw56(q0K-+AvvabeL`SfUn&jg;blbM;RnDl$TRd@ThMSD$s_a z9v*>P<2oob{!PW;5VKh33ATmlMdqi&HPTmM^egLy_pUo`2gHdxWf&2su;R55EV3gCsI{%30k#=WwsRs5Y$fbbD3(DtQPM?38I0mfO&F*e-c_M^7TKdR~T>EfD7AxsFlJzj7oWuhP~_(KhTJszS28m`(8k&Oxev2GnZANp2c z=^1omuch)~WYtG9DA7OrcVA9`FBO}!E3qTL($h4M0>O~+_S;d#{K_w$mns=jQq1`g z*-t&mJ#W*@G3B#9GLcD8O`;|wOJx`e23X~?<(9Toe8B<|4bQ*Ky zZg!A)^zkhx3&P(M(?|>d`}vIJ-7Su*R(yA7h&oJB%_cVWeVyr2ruc8d3f>HC?f1H? zw{hV3L=TdBf~US+ZJYPOVDQ;hA{5J>y(6&W2=Hl(Yjq@|hwFnk-3z3FSo`nOVZt<9 zW5xE0io9u`l&T&Rdi78cn_*D!qh6IsStyLIiL}d2%2s}}BNXdN>l{`FdDzExR`079 zS5Y}_46x3(Hk~>*=PH=W^)7fhy(pVN48(&Ae^RSH;1xr-{kngB8rc(!u8BR21| zslBMgXFOX>ce}!PWXGIhbQu56lXLAP)z4KRDT&rWhy$y3$HkW0g!QV;|LA!z(N{tS z0s@f&*4+jILZ{7bM~pj_^l>T<2PQjd(j1@7(U2~PsD5MObjTim$ z2{c1BCo)lNyQAAi1#1&BD*jxaB(rVej8dvP_ByeJr+wGjC6%0h_)N(J$r9#?sgaBD zLxI3oKobU1y26@p=~<7DM8&H&wA(+DGSBX!xIgmfe7O?t$RQ&OX#`wi}6M1{2N-KkuKKQ zZ}Cy=T0%N*tVoZNE5d>Y7g*LEJiyBio@)T_D6?;TI-=MjaWft$Rzixfs<9XL}z)NhTp;CX*-uz-m4E*&RuF2(JC< zl|6q4?PzoAm7tH&mO%7Juy4G^6)2ddAB;vH481@_xSJofWUFv zVg%WcAV1~)Hh`SrUerm|FJP5b?=>?TEKq&b%Ul%eQI^RP%e)1tRf9fBjywcN|kFCkP3?= zAJAR{G&Ig;PM?dtk@Fc0;%_2T*fd=p%hcyQBD z@dPOGvD=!1>QP_r=EsTQ4ah}ZQXxCCO&uB0cD-1ZPXq)1c%8KwzEOjCWYFu{YV2*z zjan#R*v2{!CP}9{y9^1G3?9M!Lhb-86AJ=34RH1_HsMBdD0N)v;qr#@A#1=4TP6>} zvnmv`&|FoC-ND4ff&^M?f>Q|&wnQj^=MQNe1_WxW_<;2NURBJ{qn2u%sbO7Dr?7iL@lU zwjhV@ZS3*3Z4%FDsIFBo)D0Z9=w7GACMnb7+-;bE(=0nuyAx7+^#Sa-YcK)Q07ITc2d*ufwRVjJW$O;t2#O_<9AIPOxdMQceL zxy+}&Y|#MmJ`Fb}GDty@T7{$oTj^hRRvxi%9nM#iH34oO8KTUXBsyKV1u{>)vJglh zv#F2clY){vi8tE|JJbS56y-jZ(X$MY3+Kr0vVHoyBRlPC^6r*qE4~_z7R0^lNgE+9 z=*w|*3@#@br93bj_@?lbdE={ONWw+FsR?kBpTaEt0A6HX_5F5g+RpUg5<3kT*7T4D~-P4zn65eG3 ziue>&{JjX^Eh3x=T7aRvui#zv)hxP4aI~e%miSnH*W!Zx17rWK{K#(3{}H+;McB*m znbTE>jS!{Q;dd~7VA$Q`lT&Up22mEmK$ zCBPiW`YMKEs4W-K93S*oMfzh6j>YCdR{pmGe|j7or3*Lg_+%)CH}B z({~q=+dK!uFlvQ`18{)1%J&g4jer=dfsdkP-K^Lwkg;e+CcgNl3L4YYU^J{r9|Ug( z3q{mNBt@PZ=YV-QM) ze+=+KPzzYei4ZwndTtdL<>H%G#9~hAU>LfFE2=a|73}#OHwtHC5P}K;fCdnbjvez* z7{Nh;8rkUv*AzSJE6>y`21$pOFAC0mFkAq3$bbM{++HEw6{mkwP7P{i2DXbFVI6E^ z!AB(EsBMWF^_us01_3&G6*%{Ib{}doD!r_@$5}cF)j-n6PMGr`%5P=dM$ccJE|cwk z^k-#SlXm!$wW?mMLEHW(QtRUNp@T}O^f$WW(c8dYRZB)nTSnoK5+mlV%$C@$TQ9GB zFs1Ch!H_hz$#dBHFptkB(6LQ$UJ{Rw=btN3L(rC|9Q-C^Hku2Cd@aH!4jij=nTSiu zYLLq~;JXSRyKIoO4$)P*6sM-Ce|M;}ZQCU=JU7j46!*GPT5P^TjDRYLyN#GoMBH+k zP97|)-;=hIqaXqNW7vy#S_vW9Z!W2@@}+?7JI`>Uipq|ar4@QssuL5GAx-^5PCEJQ zSQil~FmD|a_J}S~%&Dz<1w(W#G794&y)w z`MhD^)(6aBRl*@@G&qNX6tGF$8g+$MwG8BFq`SxaFhsjA#^av!xv~K=w+Yqt$~d*J z;cQh7Hb)Pg(a(R;OKem|mFa#6~^aNY0bf)wpQ#Sr)!S17b zX35dQM-AghFb^CX{1_fgh5K}x7;b-yw179ErLK`gk4Wgm&K61`YLr5n;4ekW?-!=1 zcP?Quzf}>ghJ?^tO1&$wKr4OvevB}dMa{cI^iSJ7Aw0LtGjzdtsY=k4aUq3#F<>`2 ze&6`UQABPnmE{o;;r7#B^mP(1{`VMwQ=5O+X-ftwxE&q$xng72@_u4XyJ zq^KTswh5f}{k$cb{gCZWxce86Wm@V8+fX)U=M!xE11LmZRF+K@LNOT;s|Y&}f7Uk; zpNM^=D<mwliDeIad`w6=G;AGt;L0W4Y^ zwlO;aB)K2}sJ$mb0`MD=gLr3tp&76M0uFW~08uzl%{;ZR1NLE_mqrA*^S`_~q3qnZ zJ$*OUizbkWvA;1iGgPCkQ)L-C13pfcSL4c3X4#;{3WMq(c?)7Xx~OgJ@v?s-XBiBq zc2*fFD=CNspE({ZN>p{c{i&caS|6uYf1*3eD_nUBc)vZ>>11MnBJdd4EgWRxAJ82$cSKP&uO2wW#y?f>w2OkN;=eWu+}X!mbW$Z;2XcsHQo<(7+Qk^> z=AO2*?!)AXT@RoSx?qSFe4nFBfo+v+Q;74@U#FiiR12o!D}>4JmgV0en%RIsFBg2wV$P419-LarWdTuiZZ_oAW~GkzPtF=Ase~30H}?Kigd14@n71&^^W}#~ zG6HV2KPohS_e`Hz`w~BVh*-g1mVMUHmp))&RJmb&o0`t>)NYn&ax#Y%a)3j`nD)M8 zRg2h%vH&YAB4K=%i(I5hNn?IkT5Ul6cTN?uyB~C}Wzn zI%N-8Ueo23T%%G)ZoaB?L&b~rm7^smd{M%RB~{W+Qoh;*!1prX`mKmh zvq1n@k)k2OJh)vIOVb^!p{P#kPRAFuJqaKep zhQ$it5Y?XYj0KU?RBYg{=UE$&r93G+5FzNE)d-0LXd4sGn*uLi#)r`PW0}n9BStAz zPa=AT77{G6V`YD{G$KVYZy-S=0PkL4i@2Pd*VzmvF@z2E=~fv{NWocrYI`3xwfcgj zq<@=ghOwccDR@5S3Eb33es8aGA3JBBg;|t2V1D)5cbm3xBu5f$aMz}5j;F=QpB8PK zhi?tfMP(Zgpw-vCGErG^Yv!IFx%UkkeXFrAdk9ed&b!h>i|lC(+gXYzLyjc{n22C|&9(wrqA>4P_P?ez zUV}Ph1>kd0h@f)OssPxov$z8(Kp~XALNG!+uKBEI4~!qiIfPBpzFhmMTpD+X`HgD( zl!r!hQkR|Tx#r90ALdbtx~U#H?}Gz~2OpB*kHhw6iNq^O$uY{J=Nc)?K{j1ip1pjR z7+u~yI+fZ-3RYgc1E)bSbsW%#m_r~i|Avy7zX48ayH~W%pT`df zSf`omZ~z)Nby5bn1dEXNcN`WMo1OrvS}u0kn7&{7H>!w9f8EfT;@h8R~*8l>la4U%a z&MNcam)qLu^!jYh>{QqSxj%sVD_|9^o@-AJJNQnj5MoX-(EJKB+n@XAT{WsL8#P>t z8C4HBj`(6VbF7%reygk6dpDXmCr)AC(Q>9UJm)h*xNI=Y&33`e56;76>Sm@hmqdTs zEY|9&m6pMQ1>2?K3yO9X&ZQy_)8EpD;rod<8Rh7!$cMn;55p86@$8I;;Z|4~s@5f5 z+`d^OJ*^h7_!>0rIKT7~O{|Cw`@#+rJJd=P(q)x_x{Jke^aHQ{a}0cgerJ-<$Zbr? zEJDOU*cjfzv)X5$HFbk6a#~BFIN2z-WU*aU@C|`@%d&wE z(pP`^Ri3u1U~l%-NbCmKFK{Hy$?tYHD`c^Qn7#B?{AUZ~)U_Xp1WBGtiL2i_F!4y^ z*_ji!u#ePEzIj-9bR!_;z~ZkKYBDqrtVtXfED9S2cNqRWIP<3hnz;u@A2_X#5Cgdm z@+=J@w@39*-mdaO!RfnL6)EKtBaH8Hzz5+id|94oS9sf#n6?Z5X%b9KnwX=mh1(K{ z02BcF#*L;Wf`F-VUKcfMBY3%~xPQryi~d6c)40$Cw8j#rREvn=t&Kj{^l8+vDuSOs zYwPN~Q5z^ro`G7%wHZgD5nh;5<0_u&+N4aDARUx=x!ML;l2KX@+VY2}&dA|M8uuL1 zWa!BM(Ak*A8IU`b9jSgFUP5#dVv9V1pxNGZWr3wPb$>6s;LLr^hL1%5v0Hp7qc_}s zyA5H5d-9o7>IBV7*1S-?cQ_hp6+mWop=}^>yP5+Plbm6rw5Bf-3`@?Y(L_(Hv6+RR zkBef6kf2DB-39m!yJXZIXA9z86^V_t_{QzVrhTy9e4cd5W5s@rKZ#-g;WxXgqmYiK z)K6kuoRycsr^%wByE#B=NyO8Wc*8H4pP)%W06{@Yz@aBcIPf+=Oj9PI*!t{fTPr5n z9Z%k1sOWWoYg25g4A&?i8$5G1HW>Dd)FxGOj5(VV1jI>-ZKn(R3(0J|{cYnkHK}?d zGp$11TL3H@ae{a*wL0~023AP7sch8hx7aBi<@sNrCvfv&2-%J=b6^xgN?$$QNf20HK;U00VXAg|zeB3@s@{7de;E{idRBU;B?5hh3wYjY z5YhfK^1?*sRKI}E*568ZC=RkrgYbE_8L4@YRe2Fq8y``!%Jgrvfg=C~r(nCvri1gI{)j&#c98eyhw+e&!AnjvYsMzXjUs+HUI%vRfe45xg~sJogn5lr*8 zlHueiGN(KFX(Wh-jyLPGO&Q{0i6k-gY26sXgip0I36Wdc#%}JeBX(q~6uT5AMlTJx zXh+A8a4G*)$h8^%DGxlpXz?TKo0TR*Tu^_>j-R1!!NQO{5^?J7`6+f}0IFu=d&cu< z;IkP+M@C@gah45cl?&8h`u1%nzet|Bk6&a1LFA zL>+N!i>oxEG+64DNVNw$iZU6{LUzN8sQFB<=iFuIK|``%VGjJ9*cAK0t6SZ6%MwSi zD&9pf$6YOrRr?X#8NI_Wu?2T&pP;;_oc8wAu&zX-YZWR5rl0fvV)R0PX?B)&xspTn zo4GID%({?J*d@Ii9(Gz-k`?A{Z?-NYAzps%wPh=PcT|2TvNKerDs?_N^h41aum67S zWB5)v3v5%i$gSqUCJ$3>Ms{Nv`ppgk*;oh`BMukX7!*ZY+)Wm}m!*qMR zKOL*RayJ??Q0eZ5UTkE#f7+n^zyJUMOamH@O=J`VNjZdo9Rk^X{__9;J9b+9#jCeH znk}Z$(p*r3>dJ825daNc?Qjk{4X6T_U>KEB0eD+{86B((yZ~);ZlQH(v11=Oy^Kx} zAA#%Si7WnWLHkz$AhA^Wc5d{kQpS`+?K^vTv;c_so-kUlwiZF0;EP%CoZ?z}zY~D>b+ZyG#(dobQ^HFOF zSCYQ&ZySy{Q;9rW>$)tV6up7u+Hw+UNo;`1{8R%Nlxh2=t^8s>l!ff#ji3Ybw*Dj3 z88SRrQX9=Vw^Pd z@6H84Q}ZDG`-2ao>JXB||L7K^0OI`*Syc^A9NM=KCXZxn z6kzB;5}lm@%|*xiWk@yFtHZTv+*<1;LQ%IWwjFT%Xd;=&H55gKK(*! z$jK7*#En^kZZ9}H_AU;XGj(FE&3-&dSp6C)c);{r{Ko-T{KPP#(97^-lmJo?S`2BU zGTA)&1rRO7#!}h`F-I!yjf66Fzq!v=P8uswf0$`hBe-?NcBZ6AV9W_!_a~QOsZzhj z?^-jo-r!RW{NrVzGksiN{iUh;YVL49jA(CSm8G5-jCjp(yWns4Sj}wnRQ8J-2g3-{ z)Mxmqur(VzJzMy;#n0Ife)Je)9+uEeuhZ3wP}IdQauWV7Rp$R;LAS3Fxt2F&P3@ol zI6p*YNLB&&tCrQr^0E{IxsaiiP0nBp;1s(o% zaP)c4P4C53uAoThBfa#s?JZS_vwTpG%A7URyQovqeqce)g<^nMGPm{tw0*C7(!h6A z)&1hL#?!uYlNkNfsV~`bMdh27lQ|UmvNWT0=~#p9Dh^NVvwG%a0@Vd$cE|Jf z)P$`n)bFFy1}n4yaI2_kHZK0(bBvSPd_S!8>gbYP^azDtlA`|O)p_uz7$6Cy2u|Nx zuTi+TUOZ_+`Z7lT@wo;~OE=(avmLGJ=qEy<{J{zDmrTw^yy8i#Bg&boXqsH^41h^i z8w0>5+8v-KQa(e3>W2dd zG4)+i;hV+kMKMW0x9?vXPCrwZUo2ub)_hnZrz8AMTY{|%oWZJU&yoSitOLX9y0!;6 zXQGElcM;yf!6b2)1a5Njh(1j6bj-GTNKylybbfGt#37XE$eeOnUatd%k{ks`pO4#O zsDVUk3b{Yq;a^F-2l+#O*Z6_%MnYumI`3ZJ!&e?F+MyF!h`7>t`h&%42GFQ8G7i#qp+yU3h!(Y%^tva!;yC z#C+UUX6NlQtSMR^DiIEW0049p-OKar8*eonUq=D(2q@)bjc}q=IA+e^fX@v@!_bjE zFA6>{=tH_`p+D0cQQf`hF!4QBc23nZ`>?MTB z1=KpUr60A72BAVY>aJJAYqDosUH8(MY5fkvw%*Xoihfw3ny zc;{>)GNC}WII%>>eU&QL9|j&As`0~cVirfb?D}y80-3qoItR-C9 zt+3i%o>93D@-4V)n_ItI%#MufIx<3ep_`tcElNLm98dyJ6eu5)8%f}C1RYy%q16H% z|E%&!JY>gjxD&=i%n}f>;nc`ri8Cw$Rm|3&-+F^#{rOcfz$i6h;xh}!hlhJ$GL*GjCKKUu?T=4zGT=SI8S?|i$jsTlwg&Z0l0*&rZ>`f(1b-# zJTRbNBg`IDNk|7uXY*u}d=5mbt#rm|!9{AYk9#qr|9&8f%=IA3Gl8&y@|c< zNRKd=d_9dn(8S|M_L;QHsG?H1AWX7g=JDbLPThtU{Bd`|!Zjqx+6Q4p-BeLZWr-+1 z<;OkYf`VDvgGUtu;XB{-Ep@}_#*k{}R_1H{OauaI?c*&OnxuM!B|&Bwi?!A~13aj$ z-l_EKlXi;Pl(*6ldx#7~QuuAw%!B3|dR}ZFA7q ze@p4Ff$5U6_x7$BGuVcp%`x=-Hkf}D@YQ+>k}f)vI43QrwoIEzcO-s#fl6_V8XaZ5 zqfB&V5o;s*Y1m-oMF+e@6&)Hh-hc8v1b!s={M0-(m!dvha!F}c#`t3(O$VAXkLa{N zMn<>J+r71%?!*pTK*F!#SS zHyh`rF&FDg2o2q$O!kua&bI1#1MZQS^sjIw4n^ox%9VXbpiWF>hRaqhEa~6sLf< zvvlQK_gPQd%~XvCmzYCYa11v81VV+i0{#NLe58NfqCBM7`bAzP`V4Od#TeMCc&PtT zkLou!sR^@NPxpz0xSB&d-O}~_>10%S-bdy*6O1#|t?HhUUDyZdPzI!;V3S|9aQljW z4PMl*_4$#vYRM3_HzsFWFnjCu@2?q?@oM<1brW74n?hmc`3%9L&6 z$gc&BJk!ddapDgXYS4!B#sY}y_(2`Ji;As;`J}~o!{bJPy1j~xo6AFiendP@P*e*# z3BhFIKswHaaR%}{i$B8@BNylCICB-r5(Nmgv%rAD$pCbbp9(FOZ#nKNJQ&SWk&*xa zuDXk!_rQ0f91Mcfd5u%*sL*^2ZI|wzO|)ZWB?ubfS>?Tw0TSDk>csDb&0q4gYtB4l zCpvo|t#kzyE9MP$YTwVKtW=q=L~}p!RCQDz;F0R<*g0ZutLXR4zHdc-;bLU69~-w-vo@8UCsCEmbEf0sDkdKP9WPz8t<;^&cf`U_k>wisp3eW`J-=_l zla20}*Zk)($$z=zT%GY@5M^*Ih`^`e$o5Y9yg@o?d zH3#NAh12R2vOFXT&98ru+aVx_Z3vu4c7BUVE5)6PfTQa0sBGk5bbNjT32)fU#$(XI z6fl#=ESZ_!n64H8jAZ}Qje{#6U_4~wI!n0GH|u~y#QD&4)Yoe7_>6vVx%l}H}upF%tO9@yJ_)35^*NnzXh#_h@2OPt)S4moEsO`9@0 zAGADgtlZq}Fi-Li(f#t3@~U_J|1Kw~cIXePyKJ)QdF13@^ZxUElkbpO04pTEa5(a6 z6NsH3a}GOG1varrt-WTwMtYZ0MK2e( zI~1BZA%HOq2nh!cVW|VVeL1MXt+T9+FjB|oYukjHxko_}7fcOONWV|~ag&zA#(?m2l)R+}qobMn(4`^031D-oX;7ib6zJ>iC+fu-)L4+=$(-I6~h z)@8QMiQH58Qn#IJ$AeDZtqs~qMDcuU+G}|H7P0X%V8*Or!h9oMOb)aMDg|`$;FPpw zGi(}dV&lrlfUy2)e&n?tgO6$xP$@oIEIPF#^-1`F1WvWEC+Tm)qb9*&-w%~eLQV5d zg>c)$LpxYNw?%t{$8Va@0Y$LY1c-o(wOGb~eYj*F$gunPDzld=*;Zk zTX%Y$Eqct=l-Dkuj36}X6~vm#N6#=0g1Ji6k@#Zz16Yy`rU%(i$n{-WfB+l30014m z)yu(j@OWn(UJ3^y7cJ{=ce6u`nhp|wm?g`#2)v>{B=PywAOL4UECu0IURWE^2ZOQw zzgIm7IKXu#obCGQx85@!<6py12M~=C=)7wO8a*b*&_0QaULIO>#aCLd)x!8m9z^#c z_!XCjby+gAH7o`0pBDMJ+Fu~j}aHj$uG?&*EJ*STm|=E0l(&SP3PYX7iY+# z+`{1G;np-h>_`lxS+aj~MOPcys*$9bgoU%z$+u1149=77{UccV*T3ePbJ^sD`~Uz0 ft7hY20000000000000000000000000000007&W=$ literal 27744 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 teu}Lo+xw9)_+h Date: Fri, 19 Jul 2024 14:47:46 -0700 Subject: [PATCH 17/26] docs: inclusive language --- .../vm-management/environment-setup.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/docs-content/vm-management/environment-setup.md b/docs/docs-content/vm-management/environment-setup.md index 94c8c922c7..c52d4d865f 100644 --- a/docs/docs-content/vm-management/environment-setup.md +++ b/docs/docs-content/vm-management/environment-setup.md @@ -24,7 +24,7 @@ cluster. | **Storage Adapters** | 2 x 16 Gbps FC | 2 x 16 Gbps FC | | | **Disks** | Local disk for the OS boot (SAN boot is supported) | Local disk for the OS boot | Boot from SAN requires special consideration due to the multipath configuration. | -Typically, the cluster control plane nodes do not run any VMO workloads. As a result, they can have lighter hardware +Typically, the cluster control plane nodes do not operate any VMO workloads. As a result, they can have lighter hardware specifications. For example, a server with 4 cores and 8 GB RAM is sufficient for a minimum-specification control plane node. @@ -88,8 +88,8 @@ fits with our recommended VMO network configuration. | **bond_data.20** | VLAN | bond_data | 20 | 10.20.30.0/16 | 10.20.30.1 | | **br0** | Bridge | bond_data | Native | | | -The **br0** bridge interface is used as a master interface by Multus to automatically create VLAN interfaces for VMs. In -this scenario, the master interface must be a bridge, as no other type will work. +The **br0** bridge interface is used as a primary interface by Multus to automatically create VLAN interfaces for VMs. +In this scenario, the primary interface must be a bridge, as no other type will work. This setup also assumes that the physical servers (the worker nodes) have four physical network interfaces that are connected to the switch, as described in the following table. @@ -106,9 +106,9 @@ ensure a successful PXE boot on a tagged network, we recommend setting the nativ the switch port (in our example, this would be 5), so that the PXE boot can work with untagged traffic. Alternatively, if the server supports UEFI PXE boot and allows you to set the VLAN ID for PXE boot directly, you can -also use this option. In this case, you need to adjust the configuration for **bond_mgmt** to run the `192.168.0.0/22` -on a **bond_mgmt.5** subinterface. However, because it is difficult to achieve PXE boot on a tagged VLAN, we recommend -using a native or untagged VLAN for PXE. +also use this option. In this case, you need to adjust the configuration for **bond_mgmt** to operate the +`192.168.0.0/22` CIDR on a **bond_mgmt.5** subinterface. However, because it is difficult to achieve PXE boot on a +tagged VLAN, we recommend using a native or untagged VLAN for PXE. The **bond_data.20** subinterface provides outbound connectivity, as it has the default gateway. This is the primary way to publish services from container workloads to the end users. If there are any specific data-center networks that you @@ -144,7 +144,7 @@ following table. | **NIC 1, Port 2** | enp2s0 | Management network
Data network | Trunk (allowing 0, 10, 20-100) | In this configuration, VLANs 10 (mgmt) and 20 (data) are not available for use by VMs on the **br0** interface because -the VLAN subinterfaces on the bridge master interface and VLAN subinterfaces on the bridge are mutually exclusive. +the VLAN subinterfaces on the bridge primary interface and VLAN subinterfaces on the bridge are mutually exclusive. If you need to run VMs on the same VLAN as either the mgmt (10) or the data (20) VLAN, you can facilitate this by changing the network configuration as follows. From 3f695d03457dcfc641f0b871bb083ec68b769115 Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Fri, 19 Jul 2024 15:01:30 -0700 Subject: [PATCH 18/26] docs: fix ablism terms --- .../vm-management/environment-setup.md | 63 ++++++++++--------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/docs/docs-content/vm-management/environment-setup.md b/docs/docs-content/vm-management/environment-setup.md index c52d4d865f..211fe50c15 100644 --- a/docs/docs-content/vm-management/environment-setup.md +++ b/docs/docs-content/vm-management/environment-setup.md @@ -15,14 +15,14 @@ resources. Refer to the following table for the minimum and recommended hardware specifications for the worker nodes of the cluster. -| Component | Minimum | Recommended | Comments | -| -------------------- | -------------------------------------------------- | -------------------------------------------- | -------------------------------------------------------------------------------- | -| **Server** | 2U Rackmount Chassis | 2U Rackmount Chassis | Needs to fit FC adapters and have sufficient NICs. | -| **CPU** | Intel or AMD x64 CPU with 8 cores | Intel or AMD x64 CPU with 8 cores | | -| **RAM** | 24 GB | 256 GB or more | Assumes the deployment of 20 VMs per node multiplied by the median RAM per VM. | -| **Network Adapters** | 2 x 10 Gbps
(data + mgmt) | 2 x 10 Gbps (data)
2 x 10 Gbps (mgmt) | Pod overlay runs on the mgmt network. | -| **Storage Adapters** | 2 x 16 Gbps FC | 2 x 16 Gbps FC | | -| **Disks** | Local disk for the OS boot (SAN boot is supported) | Local disk for the OS boot | Boot from SAN requires special consideration due to the multipath configuration. | +| Component | Minimum | Recommended | Comments | +| -------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------------------------------------- | +| **Server** | 2U Rackmount Chassis | 2U Rackmount Chassis | Needs to fit FC adapters and have sufficient NICs. | +| **CPU** | Intel or AMD x64 CPU with 8 cores | Intel or AMD x64 CPU with 8 cores | | +| **RAM** | 24 GB | 256 GB or more | Assumes the deployment of 20 VMs per node multiplied by the median RAM per VM. | +| **Network Adapters** | 2 x 10 Gbps
(data + management) | 2 x 10 Gbps (data)
2 x 10 Gbps (management) | Pod overlay operates on the management network. | +| **Storage Adapters** | 2 x 16 Gbps FC | 2 x 16 Gbps FC | | +| **Disks** | Local disk for the OS boot (SAN boot is supported) | Local disk for the OS boot | Boot from SAN requires special consideration due to the multipath configuration. | Typically, the cluster control plane nodes do not operate any VMO workloads. As a result, they can have lighter hardware specifications. For example, a server with 4 cores and 8 GB RAM is sufficient for a minimum-specification control plane @@ -51,14 +51,14 @@ network targets for the VMs. Refer to the following table for an example of network configuration. -| Network | VLAN ID | Network CIDR | Gateway | -| --------------------------- | ------------- | -------------- | ---------- | -| **Bare Metal Deployment** | 0 (native) | 192.168.0.0/22 | | -| **Kubernetes Hosts (mgmt)** | 10 | 172.16.0.0/22 | | -| **End-user Access (data)** | 20 | 10.20.30.0/16 | 10.20.30.1 | -| **Pod Overlay** | N/A (virtual) | 100.64.0.0/18 | | -| **Cluster Services** | N/A (virtual) | 100.64.64.0/18 | | -| **Existing VM VLANs** | 21 – 100 | | | +| Network | VLAN ID | Network CIDR | Gateway | +| --------------------------------- | ------------- | -------------- | ---------- | +| **Bare Metal Deployment** | 0 (native) | 192.168.0.0/22 | | +| **Kubernetes Hosts (management)** | 10 | 172.16.0.0/22 | | +| **End-user Access (data)** | 20 | 10.20.30.0/16 | 10.20.30.1 | +| **Pod Overlay** | N/A (virtual) | 100.64.0.0/18 | | +| **Cluster Services** | N/A (virtual) | 100.64.64.0/18 | | +| **Existing VM VLANs** | 21 – 100 | | | MetalLB can use the **End-user Access** network to publish non-virtualized apps in the following ways: @@ -80,13 +80,13 @@ We recommend using a dedicated VLAN for end-user access and not sharing it with Refer to the following table for an example of a host network configuration, which uses a total of 4 NICs in 2 bonds and fits with our recommended VMO network configuration. -| Interface | Type | Contents | VLAN | CIDR | Gateway | -| ---------------- | ------ | -------------------- | ------ | -------------- | ---------- | -| **bond_mgmt** | Bond | enp1s0
enp2s0 | Native | 192.168.0.0/22 | | -| **bond_mgmt.10** | VLAN | bond_mgmt | 10 | 172.16.0.0/22 | | -| **bond_data** | Bond | enp1s1
enp2s1 | Native | | | -| **bond_data.20** | VLAN | bond_data | 20 | 10.20.30.0/16 | 10.20.30.1 | -| **br0** | Bridge | bond_data | Native | | | +| Interface | Type | Contents | VLAN | CIDR | Gateway | +| ---------------------- | ------ | -------------------- | ------ | -------------- | ---------- | +| **bond_management** | Bond | enp1s0
enp2s0 | Native | 192.168.0.0/22 | | +| **bond_management.10** | VLAN | bond_management | 10 | 172.16.0.0/22 | | +| **bond_data** | Bond | enp1s1
enp2s1 | Native | | | +| **bond_data.20** | VLAN | bond_data | 20 | 10.20.30.0/16 | 10.20.30.1 | +| **br0** | Bridge | bond_data | Native | | | The **br0** bridge interface is used as a primary interface by Multus to automatically create VLAN interfaces for VMs. In this scenario, the primary interface must be a bridge, as no other type will work. @@ -106,13 +106,13 @@ ensure a successful PXE boot on a tagged network, we recommend setting the nativ the switch port (in our example, this would be 5), so that the PXE boot can work with untagged traffic. Alternatively, if the server supports UEFI PXE boot and allows you to set the VLAN ID for PXE boot directly, you can -also use this option. In this case, you need to adjust the configuration for **bond_mgmt** to operate the -`192.168.0.0/22` CIDR on a **bond_mgmt.5** subinterface. However, because it is difficult to achieve PXE boot on a +also use this option. In this case, you need to adjust the configuration for **bond_management** to operate the +`192.168.0.0/22` CIDR on a **bond_management.5** subinterface. However, because it is difficult to achieve PXE boot on a tagged VLAN, we recommend using a native or untagged VLAN for PXE. The **bond_data.20** subinterface provides outbound connectivity, as it has the default gateway. This is the primary way to publish services from container workloads to the end users. If there are any specific data-center networks that you -want to reach over the **bond_mgmt.10** subinterface instead, you can configure them through static routes on the +want to reach over the **bond_management.10** subinterface instead, you can configure them through static routes on the `172.16.0.0/22` subnet in Canonical MAAS. Those routes will be automatically applied by MAAS upon server installation. For publishing workloads from VMs, you have the following ways: @@ -143,11 +143,12 @@ following table. | **NIC 1, Port 1** | enp1s0 | PXE boot for OS deployment
Management network
Data network | Trunk (allowing 0, 10, 20-100) | | **NIC 1, Port 2** | enp2s0 | Management network
Data network | Trunk (allowing 0, 10, 20-100) | -In this configuration, VLANs 10 (mgmt) and 20 (data) are not available for use by VMs on the **br0** interface because -the VLAN subinterfaces on the bridge primary interface and VLAN subinterfaces on the bridge are mutually exclusive. +In this configuration, VLANs 10 (management) and 20 (data) are not available for use by VMs on the **br0** interface +because the VLAN subinterfaces on the bridge primary interface and VLAN subinterfaces on the bridge are mutually +exclusive. -If you need to run VMs on the same VLAN as either the mgmt (10) or the data (20) VLAN, you can facilitate this by -changing the network configuration as follows. +If you need to operate VMs on the same VLAN as either the management (10) or the data (20) VLAN, you can facilitate this +by changing the network configuration as follows. | Interface | Type | Contents | VLAN | CIDR | Gateway | | ------------ | ------ | -------------------- | ------ | -------------- | ---------- | @@ -157,4 +158,4 @@ changing the network configuration as follows. | **br0.20** | VLAN | br0 | 20 | 10.20.30.0/16 | 10.20.30.1 | In this example, VLAN 20 is defined as a subinterface of **br0** instead of on **bond0**. This configuration allows -virtual machines to also run on VLAN 20 without conflicts. +virtual machines to also operate on VLAN 20 without conflicts. From 97746359d0e5725168f4fd7fb9877b6d51ca5b4e Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Mon, 22 Jul 2024 11:42:57 -0700 Subject: [PATCH 19/26] docs: address review comments --- .../vm-management/environment-setup.md | 31 +++++++++++++------ .../rbac/add-roles-and-role-bindings.md | 4 +-- docs/docs-content/vm-management/rbac/rbac.md | 4 +++ .../vm-management/vm-management.md | 2 +- 4 files changed, 28 insertions(+), 13 deletions(-) diff --git a/docs/docs-content/vm-management/environment-setup.md b/docs/docs-content/vm-management/environment-setup.md index 211fe50c15..f6934f2d4c 100644 --- a/docs/docs-content/vm-management/environment-setup.md +++ b/docs/docs-content/vm-management/environment-setup.md @@ -12,25 +12,36 @@ resources. ## Hardware Resources +The following sections list the hardware requirements for worker nodes and control plane nodes in a VMO cluster. + +### Worker Nodes + Refer to the following table for the minimum and recommended hardware specifications for the worker nodes of the cluster. -| Component | Minimum | Recommended | Comments | -| -------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------------------------------------- | -| **Server** | 2U Rackmount Chassis | 2U Rackmount Chassis | Needs to fit FC adapters and have sufficient NICs. | -| **CPU** | Intel or AMD x64 CPU with 8 cores | Intel or AMD x64 CPU with 8 cores | | -| **RAM** | 24 GB | 256 GB or more | Assumes the deployment of 20 VMs per node multiplied by the median RAM per VM. | -| **Network Adapters** | 2 x 10 Gbps
(data + management) | 2 x 10 Gbps (data)
2 x 10 Gbps (management) | Pod overlay operates on the management network. | -| **Storage Adapters** | 2 x 16 Gbps FC | 2 x 16 Gbps FC | | -| **Disks** | Local disk for the OS boot (SAN boot is supported) | Local disk for the OS boot | Boot from SAN requires special consideration due to the multipath configuration. | +| Component | Minimum | Recommended | Comments | +| -------------------- | -------------------------------------------------- | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| **Server** | 2U Rackmount Chassis | 2U Rackmount Chassis | Needs to fit Fiber Channel (FC) adapters and have sufficient Network Interface Cards (NIC). | +| **CPU** | Intel or AMD x64 CPU with 8 cores | Intel or AMD x64 CPU with 8 cores | | +| **RAM** | 24 GB | 256 GB or more | Assumes the deployment of 20 VMs per node multiplied by the median RAM per VM. | +| **Network Adapters** | 2 x 10 Gbps
(data + management) | 2 x 10 Gbps (data)
2 x 10 Gbps (management) | Pod overlay operates on the management network. | +| **Storage Adapters** | 2 x 16 Gbps FC | 2 x 16 Gbps FC | Storage adapters must support the FC protocol, a high-speed network protocol used for data transfer. | +| **Disks** | Local disk for the OS boot (SAN boot is supported) | Local disk for the OS boot | Boot from SAN requires special consideration due to the multi-path configuration. | + +### Control Plane Nodes Typically, the cluster control plane nodes do not operate any VMO workloads. As a result, they can have lighter hardware specifications. For example, a server with 4 cores and 8 GB RAM is sufficient for a minimum-specification control plane node. You can increase the hardware specifications based on the total number of control plane and worker nodes you want in the -cluster. Refer to the following table for guidance on control plane node sizing. Note that these recommendations assume -that each cluster has at least three control plane nodes. +cluster. Refer to the following table for guidance on control plane node sizing. + +::: warning + +These recommendations assume that each cluster has at least three control plane nodes. + +::: | Worker Nodes | Namespaces | CPU Cores | Memory (GB) | | ------------ | ---------- | --------- | ----------- | diff --git a/docs/docs-content/vm-management/rbac/add-roles-and-role-bindings.md b/docs/docs-content/vm-management/rbac/add-roles-and-role-bindings.md index 34d5ade512..89f0fb4d0a 100644 --- a/docs/docs-content/vm-management/rbac/add-roles-and-role-bindings.md +++ b/docs/docs-content/vm-management/rbac/add-roles-and-role-bindings.md @@ -14,8 +14,8 @@ You must configure permissions for actions that users can perform on Virtual Mac Virtual Machine Orchestrator (VMO), such as cloning, updating, and migrating VMs. You can do this by creating roles and cluster role bindings to determine access permissions. Refer to [VM User Roles and Permissions](./vm-roles-permissions.md) for a list of Cluster Roles and equivalent Palette Roles. To -learn more about Cluster RBAC in Palette, review the -[RBAC and NS Support](../../clusters/cluster-management/cluster-rbac.md) guide. +learn more about role-based access control (RBAC) in Palette, review the +[RBAC and Namespace Support](../../clusters/cluster-management/cluster-rbac.md) guide. ## Prerequisites diff --git a/docs/docs-content/vm-management/rbac/rbac.md b/docs/docs-content/vm-management/rbac/rbac.md index 7e656aa522..e21aaac168 100644 --- a/docs/docs-content/vm-management/rbac/rbac.md +++ b/docs/docs-content/vm-management/rbac/rbac.md @@ -11,6 +11,10 @@ tags: ["vmo"] Access to the Virtual Machines (VM) is governed by Role-Based Access Control (RBAC). You must create roles and role bindings and role bindings and assign them to users before they are allowed to create or manage VMs. +To get started, review [VM Roles and Permissions](./vm-roles-permissions.md) and learn about the default roles and the +available permissions. Then, refer to [Add Roles and Role Bindings](./add-roles-and-role-bindings.md) to learn how to +assign roles and role bindings to users. + ## Resources - [Add Roles and Role Bindings](./add-roles-and-role-bindings.md) diff --git a/docs/docs-content/vm-management/vm-management.md b/docs/docs-content/vm-management/vm-management.md index 8246b94c90..9e7d783ecd 100644 --- a/docs/docs-content/vm-management/vm-management.md +++ b/docs/docs-content/vm-management/vm-management.md @@ -41,7 +41,7 @@ section for information on deploying VMs from existing Palette templates and per Alternatively, review the [Advanced Topics](./create-manage-vm/advanced-topics/advanced-topics.md) section to understand how you can create VM and disk templates, manage the VM resources, and perform other advanced operations. -Finally, refer to the [Role-based access control (RBAC)](./rbac/rbac.md) section for information on configuring roles +Finally, refer to the [Role-based Access Control (RBAC)](./rbac/rbac.md) section for information on configuring roles and permissions for your VMs. ## Resources From aaecdc3ae8320ac25da9a722d275d2128c8155b1 Mon Sep 17 00:00:00 2001 From: Lenny Chen <55669665+lennessyy@users.noreply.github.com> Date: Mon, 22 Jul 2024 11:43:42 -0700 Subject: [PATCH 20/26] Apply suggestions from code review Co-authored-by: Karl Cardenas <29551334+karl-cardenas-coding@users.noreply.github.com> --- .../vm-management/create-manage-vm/deploy-vm-from-template.md | 2 +- docs/docs-content/vm-management/environment-setup.md | 2 +- docs/docs-content/vm-management/vm-management.md | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md b/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md index 55a6d55200..1acb61afff 100644 --- a/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md +++ b/docs/docs-content/vm-management/create-manage-vm/deploy-vm-from-template.md @@ -15,7 +15,7 @@ organization's administrator provides. - An active cluster with the Virtual Machine Orchestrator (VMO) pack. Review [Create a VMO Profile](../create-vmo-profile.md) to configure the dashboard. - - If this is an Edge cluster with VMs as Edge hosts, such as a VM in VMWare vCenter, the VM Edge host must support + - If this is an Edge cluster with VMs as Edge hosts, such as a VM in VMware vCenter, the VM Edge host must support hardware-assisted virtualization to the guest Operating System (OS). - Outbound internet connectivity for port 443 is allowed so that you and your applications can connect with the Spectro diff --git a/docs/docs-content/vm-management/environment-setup.md b/docs/docs-content/vm-management/environment-setup.md index f6934f2d4c..7d5900423d 100644 --- a/docs/docs-content/vm-management/environment-setup.md +++ b/docs/docs-content/vm-management/environment-setup.md @@ -122,7 +122,7 @@ also use this option. In this case, you need to adjust the configuration for **b tagged VLAN, we recommend using a native or untagged VLAN for PXE. The **bond_data.20** subinterface provides outbound connectivity, as it has the default gateway. This is the primary way -to publish services from container workloads to the end users. If there are any specific data-center networks that you +to publish services from container workloads to the end users. If there are any specific data center networks that you want to reach over the **bond_management.10** subinterface instead, you can configure them through static routes on the `172.16.0.0/22` subnet in Canonical MAAS. Those routes will be automatically applied by MAAS upon server installation. diff --git a/docs/docs-content/vm-management/vm-management.md b/docs/docs-content/vm-management/vm-management.md index 9e7d783ecd..d19fa9070d 100644 --- a/docs/docs-content/vm-management/vm-management.md +++ b/docs/docs-content/vm-management/vm-management.md @@ -22,7 +22,7 @@ Palette VMO simplifies infrastructure management, improves resource utilization, You will benefit from Palette VMO in the following cases: -- You are planning to shift from VMs to containers gradually and want to continue running both during the transition. +- You are planning to gradually shift from VMs to containers and want to continue using both during the transition. - Your established infrastructure combines containers and VMs, and you want to manage them more effectively. @@ -36,7 +36,7 @@ To get started with Palette VMO, review the [Architecture](./architecture.md) pa involved in enabling VMO for your infrastructure. Then, review the [Create a VMO Profile](./create-vmo-profile.md) guide to prepare everything you need to deploy your first VMO cluster. -Once your VMO cluster is up and running, refer to the [Create and Manage VMs](./create-manage-vm/create-manage-vm.md) +Once your VMO cluster is up and healthy, refer to the [Create and Manage VMs](./create-manage-vm/create-manage-vm.md) section for information on deploying VMs from existing Palette templates and performing standard VM operations. Alternatively, review the [Advanced Topics](./create-manage-vm/advanced-topics/advanced-topics.md) section to understand how you can create VM and disk templates, manage the VM resources, and perform other advanced operations. From 5d4202df544bd3477ccdd3c713fb6e088fa9cd53 Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Mon, 22 Jul 2024 16:40:59 -0700 Subject: [PATCH 21/26] docs: clarify cpu specifications --- .../vm-management/architecture.md | 3 ++ .../update-vm-configuration.md | 2 +- .../vm-management/environment-setup.md | 32 +++++++++++------- .../rbac/add-roles-and-role-bindings.md | 2 +- ...nagement_architecture_vmo-architecture.png | Bin 0 -> 567933 bytes ...agement_architecture_vmo-architecture.webp | Bin 52892 -> 0 bytes 6 files changed, 25 insertions(+), 14 deletions(-) create mode 100644 static/assets/docs/images/vm-management_architecture_vmo-architecture.png delete mode 100644 static/assets/docs/images/vm-management_architecture_vmo-architecture.webp diff --git a/docs/docs-content/vm-management/architecture.md b/docs/docs-content/vm-management/architecture.md index 09e897334b..bd04b1d96c 100644 --- a/docs/docs-content/vm-management/architecture.md +++ b/docs/docs-content/vm-management/architecture.md @@ -14,6 +14,9 @@ on top of an existing data center or edge cluster. ![Diagram that explains the architecture behind Palette VMO.](/vm-management_architecture_vmo-architecture.webp) +For more detailed information about the technical architecture of VMO, refer to +[Palette VMO Reference Architecture](https://www.spectrocloud.com/resources/whitepaper/vmo-architecture-pdf). + ## Palette VMO Components By default, Palette VMO includes the following components: diff --git a/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md index b4caa7805c..0a47fa383d 100644 --- a/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md +++ b/docs/docs-content/vm-management/create-manage-vm/update-vm-configuration.md @@ -12,7 +12,7 @@ You can add storage and additional network interfaces to your virtual machines ( ## Add Disk Storage -KubeVirt allows hot plugging additional storage into a running VM. Both block and file system volume types are +KubeVirt allows hot plugging additional storage into an active VM. Both block and file system volume types are supported. Disks are "hot plugged" into your VMs, meaning that you do not need to power off the VM in order to add disks. diff --git a/docs/docs-content/vm-management/environment-setup.md b/docs/docs-content/vm-management/environment-setup.md index 7d5900423d..3541cd9baa 100644 --- a/docs/docs-content/vm-management/environment-setup.md +++ b/docs/docs-content/vm-management/environment-setup.md @@ -19,20 +19,28 @@ The following sections list the hardware requirements for worker nodes and contr Refer to the following table for the minimum and recommended hardware specifications for the worker nodes of the cluster. -| Component | Minimum | Recommended | Comments | -| -------------------- | -------------------------------------------------- | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| **Server** | 2U Rackmount Chassis | 2U Rackmount Chassis | Needs to fit Fiber Channel (FC) adapters and have sufficient Network Interface Cards (NIC). | -| **CPU** | Intel or AMD x64 CPU with 8 cores | Intel or AMD x64 CPU with 8 cores | | -| **RAM** | 24 GB | 256 GB or more | Assumes the deployment of 20 VMs per node multiplied by the median RAM per VM. | -| **Network Adapters** | 2 x 10 Gbps
(data + management) | 2 x 10 Gbps (data)
2 x 10 Gbps (management) | Pod overlay operates on the management network. | -| **Storage Adapters** | 2 x 16 Gbps FC | 2 x 16 Gbps FC | Storage adapters must support the FC protocol, a high-speed network protocol used for data transfer. | -| **Disks** | Local disk for the OS boot (SAN boot is supported) | Local disk for the OS boot | Boot from SAN requires special consideration due to the multi-path configuration. | +| Component | Minimum | Recommended | Comments | +| -------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| **Form Factor** | The server must fit Fiber Channel (FC) adapters and have sufficient Network Interface Cards (NIC). | 2U Rackmount Chassis | | +| **CPU** | Intel or AMD x64 CPU with 8 cores | Intel or AMD x64 CPU with 8 cores | | +| **RAM** | 24 GB | 256 GB or more | Assumes the deployment of 20 VMs per node multiplied by the median RAM per VM. | +| **Network Adapters** | 2 x 10 Gbps
(data + management) | 2 x 10 Gbps (data)
2 x 10 Gbps (management) | Pod overlay operates on the management network. | +| **Storage Adapters** | 2 x 16 Gbps FC | 2 x 16 Gbps FC | Storage adapters must support the FC protocol, a high-speed network protocol used for data transfer. | +| **Disks** | Local disk for the OS boot (SAN boot is supported) | Local disk for the OS boot | Boot from SAN requires special consideration due to the multi-path configuration. | ### Control Plane Nodes Typically, the cluster control plane nodes do not operate any VMO workloads. As a result, they can have lighter hardware -specifications. For example, a server with 4 cores and 8 GB RAM is sufficient for a minimum-specification control plane -node. +specifications in terms of CPU and RAM. For example, a server with 4 cores and 8 GB RAM is sufficient for a +minimum-specification control plane node. The rest of the hardware requirements for control plane nodes remain the same +as worker nodes. + +| Component | Minimum | Recommended | Comments | +| -------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| **Form Factor** | The server must fit Fiber Channel (FC) adapters and have sufficient Network Interface Cards (NIC). | 2U Rackmount Chassis | | +| **Network Adapters** | 2 x 10 Gbps
(data + management) | 2 x 10 Gbps (data)
2 x 10 Gbps (management) | Pod overlay operates on the management network. | +| **Storage Adapters** | 2 x 16 Gbps FC | 2 x 16 Gbps FC | Storage adapters must support the FC protocol, a high-speed network protocol used for data transfer. | +| **Disks** | Local disk for the OS boot (SAN boot is supported) | Local disk for the OS boot | Boot from SAN requires special consideration due to the multi-path configuration. | You can increase the hardware specifications based on the total number of control plane and worker nodes you want in the cluster. Refer to the following table for guidance on control plane node sizing. @@ -128,8 +136,8 @@ want to reach over the **bond_management.10** subinterface instead, you can conf For publishing workloads from VMs, you have the following ways: -- Running the VM on the pod network like containers and publishing the individual VM ports as Kubernetes services on the - **bond_data.20** network. In this case, you can use MetalLB to assign IP addresses. +- Operating the VM on the pod network like containers and publishing the individual VM ports as Kubernetes services on + the **bond_data.20** network. In this case, you can use MetalLB to assign IP addresses. - Placing the entire VM on a VLAN and using Multus to assign the VM to a VLAN on top of the **br0** interface. In this case, it's the responsibility of the VM (for static IPs) or the network (for DHCP) to assign IP addresses. diff --git a/docs/docs-content/vm-management/rbac/add-roles-and-role-bindings.md b/docs/docs-content/vm-management/rbac/add-roles-and-role-bindings.md index 89f0fb4d0a..e8e0a064ea 100644 --- a/docs/docs-content/vm-management/rbac/add-roles-and-role-bindings.md +++ b/docs/docs-content/vm-management/rbac/add-roles-and-role-bindings.md @@ -14,7 +14,7 @@ You must configure permissions for actions that users can perform on Virtual Mac Virtual Machine Orchestrator (VMO), such as cloning, updating, and migrating VMs. You can do this by creating roles and cluster role bindings to determine access permissions. Refer to [VM User Roles and Permissions](./vm-roles-permissions.md) for a list of Cluster Roles and equivalent Palette Roles. To -learn more about role-based access control (RBAC) in Palette, review the +learn more about role-based Access Control (RBAC) in Palette, review the [RBAC and Namespace Support](../../clusters/cluster-management/cluster-rbac.md) guide. ## Prerequisites diff --git a/static/assets/docs/images/vm-management_architecture_vmo-architecture.png b/static/assets/docs/images/vm-management_architecture_vmo-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..9be35d99774a13a3b2b732885de9fdf2faa45bc4 GIT binary patch literal 567933 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

k<95jGi^(uto;Ci)O8T>&_ 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

=SmYP#@DVqBI`o$)CrE2mfT@b-7sQao>qLIMC=C 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
*wYvdLZ6xZNAV>!3eYh{IbmTG~_+qh-IWP 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
i6NE#M%+vfuF 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 From 267b797c8e2e3b8b65b07fc35a536575d174ab39 Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Mon, 22 Jul 2024 16:41:19 -0700 Subject: [PATCH 22/26] docs: webp conversion --- ...m-management_architecture_vmo-architecture.webp} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename static/assets/docs/images/{vm-management_architecture_vmo-architecture.png => vm-management_architecture_vmo-architecture.webp} (100%) diff --git a/static/assets/docs/images/vm-management_architecture_vmo-architecture.png b/static/assets/docs/images/vm-management_architecture_vmo-architecture.webp similarity index 100% rename from static/assets/docs/images/vm-management_architecture_vmo-architecture.png rename to static/assets/docs/images/vm-management_architecture_vmo-architecture.webp From b66269ffd64be63d018d8f88bf7075edf90b006c Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Mon, 22 Jul 2024 16:46:02 -0700 Subject: [PATCH 23/26] docs: minor edit --- docs/docs-content/vm-management/environment-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs-content/vm-management/environment-setup.md b/docs/docs-content/vm-management/environment-setup.md index 3541cd9baa..199565f1bb 100644 --- a/docs/docs-content/vm-management/environment-setup.md +++ b/docs/docs-content/vm-management/environment-setup.md @@ -42,7 +42,7 @@ as worker nodes. | **Storage Adapters** | 2 x 16 Gbps FC | 2 x 16 Gbps FC | Storage adapters must support the FC protocol, a high-speed network protocol used for data transfer. | | **Disks** | Local disk for the OS boot (SAN boot is supported) | Local disk for the OS boot | Boot from SAN requires special consideration due to the multi-path configuration. | -You can increase the hardware specifications based on the total number of control plane and worker nodes you want in the +The CPU and RAM requirements for control plane nodes increase with the number of worker nodes and namespaces in the cluster. Refer to the following table for guidance on control plane node sizing. ::: warning From 1a5a632eeea9f6537fa86f6aa012bbe1ade07b39 Mon Sep 17 00:00:00 2001 From: "vault-token-factory-spectrocloud[bot]" <133815545+vault-token-factory-spectrocloud[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 23:50:56 +0000 Subject: [PATCH 24/26] Optimised images with calibre/image-actions --- ...agement_architecture_vmo-architecture.webp | Bin 567933 -> 123250 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/static/assets/docs/images/vm-management_architecture_vmo-architecture.webp b/static/assets/docs/images/vm-management_architecture_vmo-architecture.webp index 9be35d99774a13a3b2b732885de9fdf2faa45bc4..d97c7ed0b4e65eadfee5b7231390c48d68c13ea9 100644 GIT binary patch literal 123250 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 JKEnUY`X4SzYDxeA literal 567933 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

k<95jGi^(uto;Ci)O8T>&_ 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

=SmYP#@DVqBI`o$)CrE2mfT@b-7sQao>qLIMC=C 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
*wYvdLZ6xZNAV>!3eYh{IbmTG~_+qh-IWP z;(x2wI2h=Kr>?K7Q83nNszt+n&TPtfSL}%4593G+)--LPV)FGW9ILJKPS~MJ2F+K; zeQnIpYNt{&c|q?9+gYZ20 zh{C1Ws_bz~IXKpBUk|;zON@eGt=N49j@oU-sxYiOrFb|$#(Dm|_*|%Q4yimZk~ZV> zd;RJS)*)C!A?0I?FU5qz0_A&~e%en;4C3DR7e%g)L|8}}F=7ihhe!{fENPP$)Xt6z zMr?0Uy2rxIVnZ}N%Na;1AB{0kbWQ=@B<^Zsa+hJU8?UpIcQx-Cnmv6AQKxIJ0lYV zTTFbiud(Uc&uW2og(1cM!weuH1oUQkufpAyAKa!Vu`HWg>%Nud{q43WCu!32{%?wG zl2B=jTL4D*va4+PsV~*gDa%iua)C(HDS9+&&z#64oXfJvE?*2_h>TE?JF6=E`?J~)|ZA`&V z=5w~93sPSHgm^y^a$oR=PBMy(@R7gkbIs4$*;1mop;SM(OOzg2>L%g49ZEy=wflY=tLCo2@gVVZ`2XRnotqGH6$Hg89G}djF<*U zax+qp{c#ky8yG(8SD9G2$er|SHVmrvf`w8t%q z%Q1OO1cY#EEVe!MRXYdQoMg@cFZ}UXYCFUkjt`4YT{#P{W-=kN7uGnEF^%XMm9dtD6Af-^F`OzE| zgAfO0uHa}jyC8^gj2Z_H;B*#+^`4^Ml{_@cST%R$M28~X zyMnT=>X7C1Bxh8-wcs3!K~4v!3lWBruZ0$w2g(tSTz_x+ZE=&x(kJT)dMg=$8XD*; zf5XXQHhE0+fxhP5(p^Q08pn)^c3LnaS-wsVY27>Mb0p}K(Zy+~G>ej<0%`OadPhd5 zrXK6ix*}Y>emo8?O+sd>(>>p!DvMFZI&)m_a`K+M553a-MebfgkV&dkAu&v`wG@np zsPTx+qwi`feqcuwPA^%u+DZMKjmXvu1i)r99>h`fnMkmXU>Q=l={vLLJ0C_$AB;&0 zQ97D*vX^6i4n(2!;I?~kFoBX&NxKP9#t97`N1NDlp4VQ6V{iD)hBfCldWpx#+O=Dx zE8}d%cv2<`|axH|wuc>Nay5 z+4$54KiFHSUUit+>x^m_W&hU3d$?dJBM!@^mQU3T*DL*O-53*{19M>4rj?VEzaEy43I2=9Xa=+u8?xAvH?SdHY8POOYF^~UAFK0p z5BZ9%G0!N=bGyVc*rj=GGhb09%ZfZhf@<$iQa}5|MU^Te#eo3RjwJQYoW(K|_kg2D z`a538<>7a?ul|G>-aIoFBMhd%k9$tLTTdC7D=vC^dU29@XuK)t0iT1JbH=bygBjT*$rb4J(GI7}i90D`UOt1!7%+HGO|k@RPB++=zJHo z--^vBWVgT(?+fr(K;ga};}9oUy@2jDVYsJNU5WgXbH8qcKQpfe!!l&+D}y;;$>>A6 zX+xq6`+nHM%pGtme8Oh8#NQ3)-NNmN$WveiY3{ggn|)R6kZx~pbAbIzF_(0Jvi{mb z;$J^xHblCUMv~O^6UL4gL6(Pr3|I*fcjpHm3CcfB+Z;)lPk0IJ&4v1$1C_ z+j%jvg*oUiAdcet#!*SA*nJDMugdbro92n99J7p($fL63N|7M7=&U3W@<#)IBG}|loiQJ($C_6r^SKEkm0#~rB7(8xNboc&2{BZ)WY>x zXXDjqtMkT;N>s?iU`m!Of6f>?NirCw18Apw%_)~xv)44Y&;G5)(&u(v_CcXjHhxm$ zP+_nn0nV5MkUi&}2o@Ih2CY%sDc=J5mL0xLuLhY!JCh&&njfE?_#6`{&2crZf5!n` z`fw8Y^PjRFWw_q5>1gen1FkR4J)y-WvxL#`N}ET~@c8MqQMCf@wmzkNn({shPX+Do6;8I`yYjgD(cx<0WHmA9!B1rSVB>l0mDSxcoW-;82G-X%Ue zx%kTUQHpE=+sX6gYr$zK z?>xoqYuqY2>^6GRP{RAc8j`yoiNZUb<}TL(R7gu|5YtYZ!+qzsncrAt5!Sp41^4B} z1EXp2C#fy&#Np=&t_yly81bE7uc5;VovM&s;`L7hqiV1K&vmnE#DEa0>0th17;ESB zQceum7;YgKuf(o)5W)^Uv>7CaQ|l!B=)aBOfpmJwY4g>rU%S?>oRu_ur>3z)PjUWx zjVc2XY+*UiV)n}u0H(J4>Re3SZfF)8+5l{h9aG+q&W3nA0dB}$llV&8mtVjn==Pe;Fbfn%dg(tQI|a4!ELs~J2vpNV+mg@T2(3N;Bn1%! zgJPuYa-#uX_O-5OaAn?v-)8$$zNB=Y6jHWUyB#ip2C>&6bR+UFg23k|*cZQhOY8~6x;-nJWKQ2(rAFm~QH zz6khrpnUMB4$j=rStx9m0V<``H%VQWeGd-_YCzhI@o{K79Ms=^oK%9^cS&TDIU59; zyZ(JC?Qy;irv9leV3;PKjdqe^!@K+b8~@{WSb6m`&v`9#PnkU}YRb#$hn~(d+}=Vq z$mK)6(jp!sKU)F>wN_Uf!rrWRBogE?sTdLoYNKPilRp0KR#Ta2pwgz+c9J^xQ&i0B z!dN(C{MhzBd*J>ECvJv`H^UZUM#?P`ANSK^r)z)NB7XD8EH_h8Il0Vb_68%j&5{P5 z4>1?X;Mx3&q>lnr=@L|=?}(X+J4X_q5i>qcUYGZQiOHj>PvYjV|3-ycF zvCtJPX9gVoZPU!NkEsS`5FmPX7o9Xqi;(?;1)C3k7<3fM@kShwXG8Gve*aogHI_84 zmsRQUn9iwyf8EmOj4Fj3(&GvZ^VG$$k9WarG(IMbo5K2%$Ok`xlK-8fW|v00qV!(x z8|NKvJYQbcV><+Y>cb;BRF!>O8Ap@`l@t$43Dk|+%VeRgrH%%vBc(_fXusk4jdD`Z zBQy6arjN1sd+k}Ow+lK>Qx)hL#%UHuht8iszCw=usLT8nI`|gfu$NR$G9gI2=4&yd z{m8P6v2A>Dal08-^0}U>n%bwm!EMA;bH;+q&KN!A&oLg_bc2S#T@wn$NPa8bu@BDT zU2IGGYzbb{jB`?w$Ynq9h1)~pSSuzb| zyX4gOZlUP0`UpAEP5J~Vmht#Bh8Oa0oaqM*hI$SWU`HY9(;NRM(31j#NlbWb7fQa) zc2}mUA!X%$7*PIUOgvD^al-Z_hBtiD^@S{(!HWbX z1A#!s!@0g`2A*eNK2CUSA(~)sLM{gv2JkM(y2Np=UyWN3GLZjX>Gt+dDOzM@qLinQlebk zjT;{88MXDj+L;~bLvQ+m&;#fFfD4;hE?Tdk-nLF){Mqi6tV@-~V387A*n$7-#ynvsaun)88KF^`&&K1{!C28!@I$ z)jV?BFHqm&Rz=Y-zupB#&O>YT`jM62)&aC`J&Mx!_gCW3UcZCOv7q^r<1ApPJTS&U zUPm0oK;G#~BaJfK_aY|@Ul1?Jt@j`f6;!g63X^ z3sA4lP?2q@7mtb<2fgqle@~ui{UZ}2{Bm-3`Yp4^L1tbSnU9h9`vXTXwhm;&;_6m*zTov^&Tcx*RbDwji& zP6LVxR&*OX%~$+V{Po9gPw5E~Kz}BdH@`KXfhf5hGQ>3@1_gSgh84eq*j@$-pLOrs zKH|qQfyxOg85%z(v7uRA9mMKkZoEhmA3bK~x=2=H z%S2|M8)uzBUt$8-Nq>_M+x&C?{d|iRyP~dRk{5r5$^K4#3-}FyoUL0$SV))sY$Y;4 z*FMdUNS*{95W&?I7?fO6>2^4+SlWssA6hxGDVHDq8dlVURt2M1zqj+Q`(mSb9iHWo z^!P??f<7%J0Ls947!3OMYHf`)tl z$R8?$r4+5sn}&nI63w*yqSIze`{zh2uyA*`oT=`>N1cFMD|Ur1l^^4vyzK>)@Tl4% z^{eAkre=o%8@B}NT~tf20UEZ`p*c$-IM! z;rPqoK^uF?NH+!?XI!YmAeQDgh)GNExl>XocHl ze_aFM1kHJ&+O`j?if!{04Bq;5u>MKS{5wj5Hy@C$=e$~}PF!|`xcHg_q|J+4PNy)O zjp+bf00VDSh&J80@6l7YWV)PtPb1+`1CI~iD95t7;n>87)Bk5{#)y?tfv#OyRzp(Uh z-KY-StFx-hNw=xQ0&PbfOxN2AkPzJ{vXngC#-mn=mta&`icYl7c~fg^vN?w`Wc%=Z z>9oB-TXtm0>7q};EgjEhTXmp3it}tHnS%f+@1vMtW0TrK`~8}R z(Xi{af^g?y(eu9*0=^U91~UQ1srpsLj-4ZJ_FkU=n;^!cpe40%aKLdMioh=lDdJ&+&(7 z6}u67$id2`FffP31URoRRyJ(_a0mCO@d!8Q-Amu2uA-GSoez;_c`@)sO)FGbyBv@E z9luB^s$`x*9@aLHt~0WjR*_99!DPdaCK*&n97*5O>d=ZjHhM?^mOv=d2=q6=P;90k zuro4$x#80pTmBgJO^1D~dW*b7keLQqq8e zW`r_3fHLisO|?UCGn}x29x&rWLii$EN%S*HW~^<Yo$j0m%Q6ed--Aq9-|BI z@wwMX%#@3wxTmyY^82^n&oW!1#4aY5M;2QAu(Gloa_xWsG#Fr=PnJU~QtEU#BAr6} z*!ex2+SQ}V#NUn7ANu=MWkSE-8_Eg&D1=ultf!*SuM9?I#`=4o z-#a)oUoIi$HqRe>8^J(QS8IPD_NmkMxj{S~^?>uj%rWN4*E1$yz2x_)Wbgs;w2N}K z)9?4s&ithq5a*Jw8Is1#4Sa}#dv^v3HVTX9NJDzhnc{VtX!W^^?g+k$XC>|@u)_O` zz{RHkj9ol-muE#u`D}oY?Z1$3!6!nD_h;+#D8)JS4t8VHvg;2zh8w}qgru8!^OBBB zHXR+$(+p2Na61&Io#wVO<74IW!mSc52ox;A9yHF@H3)ZMCGMHp=OiI_kwcE3dm?pW z;MAS&C`e66ya@*p63j-{1zKSu!=J`p*lbH=rs{{oZvn#qCyhO%5>FL}K29p{Ye(${ zB_8)%og;L+d9;RsGl;vawDN@TfU0ZGLgR)9$s=5y8D@C^Z&+1J@13pS_P5JPojT`d z#fDA6QTMn%Gt6~%RLUc5qyxGa6ts2$5JTkrLPF~dXs(v3r+p%?s1(T%CCvM~{%Y-w zw2Du(Fpx4*edg3NB4&=Q(E2A-FRHijVVDqlvd%n0`PkI}_?xoYUy~|KN~xr_H@+Vd zNWzou^m<{_?pe<_>PXJ_`+pXn-~EL=P=TCT-*BY|6y8an955o-PsWV}UTAXnBwK~# zw+tlPUh7NQn-S!8Y>ahLiUK2<#!?k7>PD5{mcb{_`-i^yd;8rH;4D$}DT?La$t7LZ zV-VPvm0l@IH4XvB`{lJ-j+UqtwGG2iZH^JOXK~mZV8HuB_ccdCJDTU+%NjX7s7hBy zX#Z4O4er)<;GH<_xX*>p38G^)(+AU&-*Md0sUm$O({a7$=pbWkxd!W_BWZFsXf8;(LCQW zP!7_0TY>SYFGOFW{DIZxkQ*Gnm^6l6BiY=28%!DFCyKXs3TF zF&KWKsV%yTqfMS-t-XSQ^hjqVUf%mv?sx<4eCG~KulK?c_cvpCL!>`iZMI&!aZ!YG zYDg{fX9KDWf|HiCp>I4QM10@=3fb~oH`HBGGlWVI=27kw5^{8zO@Umgt=XNkNp@VQ zH)}sDX@>UAW}u6zTJ$Gjp@N?SnyKOQkcJzf8^X$us%@3z0^$-k5MXAgVReQm0ngAT0M4VlH84))YgdW9jnh{feT%520H>IiRWz{9 za**_0h4hKdmYZ_4k7Gq1bIlNgr;<1S`y}^U-umoF7j^nITRHfL#n&VOVlb)5M| zbW9t;F2z5rsZ*C}jPsL@6yLZ3;fBxIQN}o}`${K54SIpDWGRgOdC0F9bGfleZ}dFv zfkPSQJTNIZcllWHUt9omsa4++an;FhQ|_pTm%|^-fs@odCpDM3IZPENOrjj(fQ2N* zyMoF}e>=(j{}wOc(aorNLf?S?)sOjnIi7FaVY$&;G{lzv;ARxdp|B^h6)(>{Lv>ea&p?xaaD3f3oEhKZKy z&+;x=WxWEImFTo1L~3NIijozi`VI=0vr@y__x>>p`8bXFQAwokII-YQ3{=01-_9jj zw!~*4Sq>GJ;dH|AnW@DAtg7BQd25s2x_>f-3F+61UG=PKf7*ho6A*xG#(Xlsi;ZpE z=R8p2Z{!dfWkuy}8Fk=?A|#4)IZEu?hN#z{jw*!z6&N)pN&!yYZ&OY(%9^p5<%DcP zdBfBSPVRu_s2B+xIXO8MJv~62upVRQ+`_%q=&N+UeE)JPz2icx?WpEZZin~AMC0wy z*=y`hF_Ca5mas!x?R?`(6P}<_iwuANN}_Pv0`}eAU{hDu=UL@`FTcK0*4+j&k*wY> z5Efb2$t;5b@-RH~$h<Tz1d{)vFJlMv1*JiU%aQ5Ju~@V zSv{7>MCchl_8-ATztbc#W+jneMx`p#ad~z!L5=X%y+KJNSva*!HiR(JK3-|#i)Aq{n;LR9 z^sVtA>`t-5hRl;EyvSM6+9VtlZ&k$k(CE?1?Cs8$uQ?4mH5KICmm7u#XTKkN3+bzB ziyJcnaFe;iV6lTgskg8+M_T9y(%0HDN7;~Z+-UeBN)kizZGO85)?d@KYHXfVPlruG z?LVo*KZs-OvZDTxQPY}mdIO_@;aQ;K644NI>2Xo=Sow8sa|DAqvnxcK1Xl@;G4 z1iCD;G4U&Gt-JXLUdp@`v+`8yv~Wvyk?nF~e%zcv9I!(J$m7jaz7a0cF)%IB*$9)` z2vgz6dQA+^>NE=SAcXtL(Ft(Jns6Krf?2pY?{v!rVwqLR$uvUuA0N>QZ7j`Vu#+8| z0E~|MgNeFtzKf5&>n2ro`SGh5PiqEFVFm`;`oV4mWLafp4>UDNu`xBwok#AY(1jTs z-H4BJ262-e;G5>8x#H$5^iIY;{?U5mAYF4Dy28mKhc_5qXkyM>9w{L}1eY%V^`f}; zV9icm4f-z8i#ye?#`ln@c$%uCZWH}Fpl_=yqAOl>2z{%B>dB836}AHDHEZvE9Fd{n&w8qBOcHXlTY2!;ZcmEdt| zLE5{wfW+i_$Hs#B4+{?q3r4Yct@^T(+Rvk(Zq^e>;C!U81;MRV#KRAxuJGs(H(I)7 zn{mTwFHSEHf>epZMbE>m!I2?(CV_p@j1w6jpkPJ;Wvszlf(E8UtF ztKpONzN*ZR*KBt7*0Cx9MN^=&?Q9KJL_(09tKE2OYc@Y8G~V|e-LXm`{HgMu=C3~_JBPHh3cEy5-?Ru|Dz-=fx#7cM}~W$Ia;2O=H?mxh@k{_ znO)lA8^~VVW+d5e%HIS(W5{#i=TH#eYUo$QL)51-41lgKgTS3#L?6_B8%vQ?KotF4 znP30JgUgupX7Zn2>+?vQN(iIoO@TRmkYwXZZh>(X*(G^a#ter~Ly zq8#CpQK!#AA9z?gRGYBvPR#@qr`;R@dI(mhXS+kG%t=r22NS)UcZQ1S8%X5c_Vx>E zzSipNlX)rxsJbp!MWp&Ty+B#gWQ2i4M#{>JjPj+>m65pd05JXt@9DX?>mjfgt(Ib& z0n*QJ?-F3Av_|py5rmW&bwn9?v+`~vJY*jjuObjX2~BUQYSpRst|1DJXWY0oN#lyRZ@^`#SIFo#PMz7u3a`B0+g7Ztunx?!fc902 zU+xB!jDX;VCXg&A7MDE?E^!!i%1%pO5SpJ6>7TRtAjexEc+7t#roU2Ml;4)1Ij-!K z+IMmD-2q1kBG~oDZ{@uA3^`Tfa_mahr5qYDvz1x2G%ehSM*Mj6Cg|j_-|uk~RV}=F zRv3?+sx`!o9eRBQqDseZZ9eKP_^G2Ep4HhuHx_!Q6kx0NXj!B7CXQBKN6gTM6Nbyn z%l|}{;;oNzyn6D%FEC9FN{06;t?sjI%JRdxoxiFk6U?iNy1bo%)4FI~RTi$&hiKP7 zSzLX?8A!YFA`-WaKKf9VrEgkGou!Xj|Hz;nvn)YHq~(@7@wX-p&1VepVCfVjYE$=AxSo51-1&Ic2uHXBv?^2iF0<055+Hk z;ib@?VQy0iA)G)Fz3a5Cm&niFE_Nbexgn=OlEaF0;|DokJV2yVMPLJy#;oc(YEDjE z2(Z8W+Sr3VfqPYQxE`KDWdcXNX!$gx#7eYG!YzE$s|02;?!=3G3BK97x#hVb(I)ui+&ZGRD8zl6pdq5l|gK z5>S0T6KAjO8b2RC`Spo5*}sO1z%GDYL(_76oPyBER7t5L2E@!f?8aRPiNAv~K)Q6$ zc7?ttfn!n?pKQBA{YD>-pzK`?}_XX+nW^2ox)@89MLYXVtK2E=v@1p4@cZu~zL z5GG2*o?DKy;kws1;qpZ@t>N(y_~M)en*c4iXtLkLsyMG*EIdXZ$SB^bs*o}d7v zt!$$HDHtFSF(pQ3-_WM7jb_~swD_~Czp^@>f3!1+4qLRC+$#gtVNOo#9MOBsqZ+YQ zcOy?)Evpu=0?9hXgTQk>Aw-QLT z04HH3qe+_Suz_+(az#K^(7yr<<782l`#rzdW7Sq9 zclRa)Qfhr(6yxOOi%EKjC1O^=`T1>FTeJ!Hul&~nZxKX*o^1JT?Ze%eT?*UtZ zS=sdlqrgB3H+d~i;$o+E5r9)r1H_g)EnP3iid8ta!IKFIcY&kGXuNkR%DJ-jU1{)8 zgHj6V$tF4Omre(D_bL;-dHFx$Vm9tEZ+CF)3#RLZ^o@L~DRnLW%enghj;K#?0_}h| zep;PlDf(afvA}jrbTArVq6PMES}_-M+@u(b&l?Wz1Yyc72>d<%g6I9}4V^*vx`+Z} znK6|KQu0XBA|Hz+(WQ(x9#;0Z0ipGyv0;oZ){s>^ut#63ELe1MR0N%BB$cwx$0z4j z;NmLL(M*pn<)GV1Prb12z)ag3yXAH1v{LGwqvzk?Li|;pUE@$vffd0-0wiZDJl2ep zrBpy7;PX`h?r(;0je65Vq6-f&TVr+(q^D|Ur(^gV-`TA-kB1Hrbwx8i zoB3ukBPN6hPH)>?{6SdLv1=x3^!+~6@x#Yk%MW{&7ltSwzi~ZQS7a54U0W@9Y3TQY zjSU05{6gT3>BdW)uJ&BaPR^Q77>hjb#)2Oo}yrF1^CH z)nIWq(FG1D!_(K7%42J~V^Sun6`wYHrZzM|f++0zT)aM4EzF+%!DQLM>?p9udT*-H zM>#K|M;viSpOJiW?C$`@_UnJTwjXGK?X%V0 z?g{~bz}|(NE@a|yn!nw6+K{nY@@!EG604EYqPbY@&6qyB5N%Z89 zVNK3y_WD5(Fe_ex)VvALmuz&8AlLk_W^VciBSm^a5Aiu$t~|t>g+rCU2p~8irIFGN zhE_HRI7&~8tY)mEHP>6D-r)sXx4hHeAxG0%>-BjL;^-FUuYV4u6bVyWn_+e6>v z^!^W7UjY?m+jaejsDzS33ew#nARyq-B}fhpLrHg+AP5ZI4IY z8FaY8OJ)$6ZZSnIz#voRA5IyF_^ABYu=Wn1&C{PX`afWSX35@GRhv;V|A} z-N!8h5&IQNBrokAb}L{Ma;QS#Kv0&4%fcdG>*DjcFYG{7$<9=(GCI_>UXk_n>lvv| zB||T=8^d+E4EehO!<9*`+8`JM_P`2mUo{|de^W(@4Ow09cbNSL2)SQf^3&rh zn3_)h=ZvL3LI6HFJt-|qQIIS3g-jGSA+S-jf^p`~;}sgz3&y2bXp}q63jifIVxewfVTWQw76t%_vCJww`EH_F3X40>n4jnNK&DJSOf4xJ@fr4yk8pJZI z?DKuAEp)t=2Vn<8_2sWnyUrM6L+(Wd<#-yqpwldPl8W8!pm2ECs*M9l z{rB##pxr*R%h_uW@j4?ILcGo@mHS_?jTCu!>!AK(>7xa~z9V<7I|R0VzMjVFzuxy= z5AKv6U7Y-CS=eZN)V%RDA>j;ep-dHjvMx4cnV_Nss|1L>nVoq|Nu?-s9s2k)px$g3 za(Gjh802G+3u>q+%SP#@!;6S8^z?kpyEEH&`y%y=V7&LMn9^72lQ zx?%z*V6>dKm1<3dv&0qY3tm{q`*UG$cc1?JO2Ox!1XJmDN$#$vKGHwZ(Z1)#xwECt zI8TvO(`mxatKnc=JSsGsnUNeZ=v@loyFgA3jBW1%iXLNOA%<)(Wd8GUO8!;k%ZYh_RN5IQKA{B_i7Z9gg(|K*gOfuMkbmOmbw{5=NGfx@th;Q?X zP#BY^OytNF-!9;#R0E3L(^D84wgfNpWCZ(<)T(*n3|CiZtGMG$z49~Bvk2=GFH;sL zK`@%WF0k9t!43L{{^4$%LSkt8TM zJ8R-hUtZZBjTX1EjOtF7dz%k%K=a4ZH32txa=US+S^k8E=(PK zu4D%XYQ9#-OVg7N1qlFeFQ;Y%b&#jUd-Q&>maH-2prfPq@auDyt91!mlBa1UeXg!o zXjMGphBs}CC|U-M9!nr#+=%g{t>sfp8_h6*lPp`s?vyZN2>Yz^H4bQ$7%pWrT7G4`oztr8%ftuXpcuh(vT%Jr6aQa!se zvPq@lWuBgo8U;&Cn3EfewZ0g z`hT@E;NNzU{5N`HzyD9tBXOQJuN$5-Tg}D3KSSgP-kX`UDCNG7H1BDLa-U#ZQj>Uo zOprae1NXrUGfJKG10AmVuX6qR1`mdfF6ti&HWspOR7%IHrCMb|Xh}&v4-WHSRv#Ss zpvdF_2@sKw^M0N(&)Ho3d`89VLOd8p4rC0U32(aG$^)!qM-S?BWe?ihCHzpT3;5{Q zOlmLb;k8*gL;^L%5?7bzBz&$UEqwbFma->wYu#730hM*@R)h6$wG6*n3EqMe6Tt=s zX{+-xbnUZ~K@9NkeG!Z`ga?eh>}B@P%qt+rv`Zd8y7Ne+C>XG4CL>u_7ioa6mz`)Eq(HDzNBA+gB5kUb4+)m#p+PEUFMzp zu;nJn{JB30f~}Do4ChN|o#g!wn6?%J3l8~Cre%Sb&=+8A+=+{^C!1ae5_`q1F;bRD zfiVwIEc7PdAQ@?@pT_DFnVD|K=*s_qPxm_shGFP%l_5vin0GFe78W}k!+;7F*v5J< z(Bzsv)ObJv>JHL#IT0Tp%Od>>r~!qK@eaxxDZgBBLi#xbX zFP-ieXpMjrEuNMdVf5`7Z*~xv4ihgTkw_*0_~>)xQj22Ry>BCckEbY?r#lggfP3e_O#qtc znEtdd0ck$DFO)9QCTe2$AQ#so$@;Y8XCq}UBvt*AB=ujPFQrcmcy)#Qx-fYLP#y|w zbcNN|#>)nU65muM7i5_QE;){knN3+mEtRGW@+#eZd~)@xN%w2#1?W<5l=bt`7)t?S zF(oCoHmT44VvNsv9_@8Q?^-sF$D@JU8bSIophnQ6Sfw~X7aImtPO$;`QNf|Xfx{P6 zU zZ?%%pV6owa$T2H%{AW}!h{+d>9sHz447~TV^3~<_XS78d$sCAwFj(@p}TW43lAb>Ebu$U778NI+|mB71;7nje6lnWU={@%XG_T#{m#W>@~U$I z{zz@=%0!l$=l-fPJ?ly=^k;$;BYxX>1v3p!UR?7gTp} zX9P4C0tH?+1~ME2{~VPF2M#@V)CBuXdF^ALD;r|NNc?EU&9n)E&#Jd9Ylz*&3)8=k z>(&xqh~1tTZ_3??0c5ih>{0*x_;se1+{bd*=JPqr_2yz3T09P=VOhGSdg+cR_gj(` zRXv7&6W3{2PQCAi#=8m)!^;bh|GA(2J{l!ka2%=n_{pjlwUdFXp<_q|`I^tVvx^GLgZu;$X4@7G(i z_U{T?id&dKwC)n&oez}q1T05 zo-*$R_f5*$Ztvu`_xH)?m#}_af2K{;ENrG}$0`P`eCLUdK%^@%lZ2@hD}TuB)RTUQ zp9wS*6qhsM%R=o4+dgX3lL$e<+z}^ItVq-Y8F>xucxy1goUhD*}sKqk*;MP_iB-F-ZSJQA zi}wGtDz#ct-g?*u>E9lx-sKxVXm%G{gu{Ciw#A;kpvx3he7_ak?Kk@DQEI&d8dnzK0wN*ZxmTbBhgFzuhV8ojYX@LGj!` zgz$M>Uwmy}?lVp8l&MyRF`NQ`)+M)3 zk|7a}18B$(jkHYj)B6_;rQ}!Uz$l9*)xKXP<}xh@MAq0DYRo5^%r&aOTtlFdq7fL! zrwyNogNYjWQ$Y8sgP|NGjx{W;Sx?n7E2}ju4OvJV#GCoZ84&kc^mMN5129jvCkaWN za%n&w*zvJJDx0E7C|&j}G4u5QC_cX0xQQ&_y%3+XX8_$8`UB8=Hex!ie>>7zlpw$v zz!?BS0;}L(aD0c17S`%>?qlmu{Kzn5%Tt(&pkeFgZ(mHmVVe;7`W~F@ z^%1bGtI9L<=aPSWEx03~7+dSMj}xx9(elO_fLzTC)njGMUrm~oP{noaV?(nShB?W4 zWV|Aa<}+k0#{L2H#L!mY)6IJtW7#wdVrkHR4|ZF*wV8LwIM|W5RiE;iir*amdnPcB zGzeiAI>M*P1;n;V%D~;I+`kI=#a)EesPdTM|Mnn%p}9St?4pZY#Z-?j5(9i3K=RRI z(@mYC3t!pjq9%Ast)W2QZwR%emUit4HK{yzHFkA>v>f&P$o25Xa7VB;rSP2nTIsEC z{IEEK;_*WwBu;VT;7@+AQ@9Y8;)joq?Z~xw{3=K+A3R8c!Tewgt(cEQAKaVtsM>tv zKYZ-*x?SErCS@kd<9n6Yz`<@Owdv)+PAd6AnT>hZIj=Nr=$zLXb=QvOhJ$gDGVHS+ zpC5VwgOCM^7_gd2(|+rhl6NrTbpavP4f7Qa7>*UP6^t;GYKntt6?~3NHctrIiYTZ} z^2Vi$j@g3RNj&sdWG;27mlAwknTH#)ckG7HCaO81o`j$vO0)$1wcAgh*!HG9tr=Mm z1he)V`aDMcTHb_@gLCSR)ab?fcX@g)pypW;%e=mm>adoOYc9P(THXTd`TKK^dKTy6 zm;D;ePTf2qfy6&xf05uqPRSNt-PB8V4Z942Wq3Q^&0;}avf8MWKNt{W-D60 zG%SsjN1cd<5s*0?yuFg5R>QMfMzUtrQY&N++LE_eC}aLP9bX2l?#w@9^3GXk0v;5>z8a z;AGkVFthKybH>dmK|tkz5_7fEGL%9IHu-M~OiqYWJmrX2#G`}$L5X`@F%L}WE=-8J z_iL_ZyCL|+#ufu&A)`{}=_JELRay6Kx}uQ*{=46L_Z}5Oz&#ktpa_6&5IF=`%85uJ zHoOHN?Ikkw*&L|9|BI!dr+pKTC)Z?8L*A|?90EV}jBVjhEnGlrj&w2y3P7TG6wHpj>zD?7d zXorIqvMWuayanL35HOOtYDpRcDncet&i}VaFXahEMEV5tAl=dt3B-aS- ze}?Zzz10816!+ZSU5P)4Ju^MAvVHfDf$|8 z#9B?gSbN=RYFoVH_Ez1&0rfczer-USmO^p`DHEm=UHTH?QakD-X4dJ5{ZMjUoU!@f2 zl>er4B$9v#c_jHdbHcq#n<5YkaGc{$H<*)MV^F20%-IQ6w00L5OPTrEHCp48r*pp;O8gb$|rZ(gpmspWfFuM^hg$$5{`!hAHMc`!>r3gO#un_ zbGrMHKWT>ukS&x5I|7%CYX$8^=(||8O_qBTc{a>6_a3beh0HUPCP^7q2NccWV~(Z^ z`0EDd=VKW&6OA8#f#Nzds&2g2_THnU+MgJP^~MFEOg$~2$*Hy4jzXJbER%6b=3>gRJBCryN96~8T0?UT*e5?Qjn};SGD|pKfeoE6sz|0BH zAAbqdmt}4JHOkq$)s(2XIqtN0mk#+dO95FUz94tJ+;7=ZKM|PS-SLYr^6x9r3P!pH zjPbfeS?HVEZ0eEv4}}FAa&f3js!0$+>FT;)JaeMGx4+=OD5C;MZ))O8E|1U<-c(D- z)F0(q(;=yry!I@3mN`e&sJpWeIY$QAX9o=dH6o&e-x@BvUexB_1vYh5V5Gj@&JZVF}} z|CxWDwk#558bk`=u9b#nka*#lYB@3Eq|RYFi>IS(oGZ1dn;+@x(Z`=xt8I4WccnUFMWkH~ihNEZ>=`twns;)|cf zo0VUb0tlzi=WQ@S;m6?t1&RRWmMY zu-Lni#^Hj?%p@D6#Q@T4O!BiLh&X*O_8mfjmk>;!T~Jo`dOH~LsZ58l<|@W2zcQkT zj|A$WCqs*Wo5 zJzxLjt?S{+{q6KckN^PCNKr}MN|uF|TiLJ%=dnJk2p`9LY;Hz*BBlEIfjS-r|06{LrA;5d+NHT)gj#nE>x?enOh;q365H}(d8#I>g>P}<%|1+( z1o>vgy#@&_(d2wgC4hL#5aso+=LTZgR!87%GIq|`u$&HDs9g!+ftYHY_T~i) zS&I>FQ4Lr;EP^-WF8}-j1>BJ-{Jvq`odJ3Saoi?>5XL|3TKT)y(kxyI99URQ30H_a z>AL)v=ajhUuUs~+Qzj~IK2TjjP?{)7Aq914eV^uamJdF?K4TX@8y}x*+G-o0f(kv) z)C@bRpg=X(IsM;p01z+$s5B7c7$y3ebPjd$dzeTX6!3|7{q<;(&4aonjt%c`@37cu zqBMh2!jTQ8H&_8zh}A&%xJWnwDS8XF3rcppa!o?7&WY5wj-cYCRLGszWKr4+eBz#@ zWa^9yqoJ?PlBM8h=A*V##^@Q4_E&8DwMZq^E9K(d4-!%zrt7+PgPRh`W)RSVF5FN^ z?(+1=<=Yh7Ub4&Y4yG>2fdCZKmE^Z_dwWRwsJ^NxrO?q_iw~>Eal=fsP6YNxJ)O-; zeqPc|&0_jC1?_X>zh>WSR>1KmwumJ^>MSB@)>mNuZ6Cj(BN0%>;01hmbXk9F9EL2W z1Rp%yjA%w^)cv57UuEbtaT{SpsPCgtgE(34rOMoyB2Z-aMb~I_4#TZpf)k*k6 z$Gz60QgU7fJ#Tu>^4wxsE)&AUaQxq*H1-t0JyZs}_e=hEWZcPhZs*H&GFRQ6{q2JjZT^V7r=noSD0s@b4Z1 zH|eSj`I=YyUr9tKx|-MofQVJ%L_yS$u$ht$^tjo)l798OJpm0%~3D zZ(M0H#+mU;x!QW{(iq!@KiL@WHzn4TnnMC894 zhrPasn@dxCj`-zY>-knq_!$CiwHK6ob7fqb>l6k<1eT^DGA$P7&a90o7v9i$8@i z(P=_$X~y}`m)c7}*0k}7ueS@C~E;j5Q*&6BWrTEyFa$)F*%n=(CY_sS!b&A!TXpD@F@y5T!k<8vS|1PaI%-kNjdxJkb{p-m zr=wX=`W6Fgf4LNZqK%M>g@ob>{fh?kCiyQ7TyvgJrfV$KNY3Z;(h;H&Ro?|l^sa<8 zIWaTJG-y){*LrNOl4ITjI3kD&p#jMVX+4Q2cpb= zp6U-I2%&XIsD!lSoeNIFsdyR)z(q*s$KeFbW_Zv(DWZGWfJ{-eUT@A{7JouRUXKf7 zAxPH=m%+zoDdQ8=LrLbL50%Nee?UOvt^^BE)FvOfKJwj$mPXnI1Tpz*H?b&!;bTso z(nHI`U6fueCV0Af=R?g_y-^PZ0JEUYdpeH8rxd3r^BdvMpU%!cW+C(B{`lOM zqt!eU0#F%1JAj?H8VW*_=51DcMY@M%CIpk^_`f~t>>;=CD&?LL_~$H6&a94i2KxiC8np*AA3t zXhB?=kRx#A{ohtAQUg#meA6U33{RzHWjg{w&Tkr+eXdc&{3Vl>-V4Xnj*~sp{p;u1 z{R7eH>yb2_uJo2j|3k+;D~f)6f)xE3 zxLVxuiK$>>{8GYSuY?m`mBD}2ch=yk=NbP*deAT8|3qB>7s&OA?@{1~=z$L%Xt8C# zPd^Z$xSmY8aQNPXG9wmGhtt6PgDMKb(o^k@@Z*8=xmeSARZ^JAGdL5#`U*ROcA3V; z7(u*D+6dc%Qt0g|a&rVMs4$F89%ix!*>zoOH?G z@(u3*d5&YpkI8rT#QM5)IR*v!)0t%1<9N-7bl$On00cEA?Xy zVfEE1pJXpyT?56n#HiZM_V+rvUoH=MD9(?+$yG59t1N$t3IUo+?yk)e=r&O^=d??( z_8MCMNymvt1C-?=$RZI8phw7+1LDQ_u2g$Z#>Ik4y=w6t= z&|s{g1CfF2x1bhp(OS}|@f!oulxcKybFdY?3SUlI4G3vVUT@fTuIqKh%~7v+`B2RzXC z+u`*Jj}XpSg%3A{J(FmV^mz2qZ?jI!xq+_DRtCrqeu5zPQH?N>Bm!=sQF6fd?NEhN zt|%aQtV!y--2=f`B#Z0cNzvge!ByqukB_QL)!wLEJpqbq-y}f_^(;yxUVQ$YF`o7D zN}Sn|{Krka^9BNtBd+fPeqgvRbW;K86}Xia|0c3{6K{GyxM_7=Mr#-4uV$8E{<(zo zlr^eev`Rt0iRG%92X8I>fB8KC4;8->?7@# zsS23(T4tW+_31&ElPAOdfN4+)dPS~DFLwNSFMb{-89q}+tMgp=f*D1pke}4MoLE;e z{Sx)V`z&C@e_kuG6uAc$@M{3P@H%e_^+-YPp5Fjk%$}W$jI#pZd`$$Tzfa}$KYk7T zyB2`XIj6#DUjCbg55iOvE)0g}!%yBvVMSbX13CEMBIG~5$5)^FmWNi({A1YhIFWSt zS_aoL%e@b@pT8WRzUbnX$U4uO=3{V!3^V9N2kFEF+C9xevBxX3@Uq@;X^3Ne7H)Ec zPF4T$?8Xpa48W{v<{;Q;z(Q)Wk|hBQlY)h+!=klr%i+i3!J9_%0H~~wC}#Uto$oVY&%WwYwAM9X(0&KCoBS-8`p9uplYE0!iJ3+E%?5d z%+!7F@g6NFS&fO+9ckWc((W^duP9H@MZYR7D^{pzfEc2KX6hU+nleU4QuxYk zF#FSFyK-a+Y&X;xp@xgtPYEK1jeDpBXJ%{$W%(V@BqK;Vzs5*f&6f`DZs!IC2Y+vj z;L1~&=+djTea66`{^p~|D>3oz3G=WBwoh))Y)Hkuy2GDU!E5c$IQIi3$x9Ulad2Rn zuEE3gtGvqeJPkbKec3rV6l>q4scF(`gwtOHgoZvA!w&_ks66h8FY?Es=|x^@;dK-} z=FlG>O2I-!sB!D9bw;N$jg2xL)#u?^NWW6U@j5Er;GY}k17hbH>i)Zey+3v18n;}x zLi!)CgB+LQEHA?_m#58$ek*wV>{Pa9^B2Vd_ETku0>g)MC3+tJ zzOq*ZpRJ+45?O016ExSN<7`iV30Jt$g=zZj?n0|sK+LnKX}hcn1{ z3r=j!oEX(R=J`a6dOp@|*>?M6BW~V5Y*Q`^b68S&NuM@f&kU)ew8rH29}up~(_f#s zqp6i?hq4LjtvS@4KiLsIF+I=He|6=f=ef}N#`Am+2bhrde&G3b-HA81)gC*edO>OZ zQ3%1nV!*Y+s}Z*9Osc$(nnzQ$?#rC`EjKmY?j4d%zJ;UPRZc!GW7L<2i@f1*=oYZU z4eHT+wiB|0ectL6Y2LeXjF!p6LOcXt zvhsrL)%O)lH@uRQo$0VB(Twkn-j(>6i%D~HEdlM{rea|@H)V#?V||c%*Km35lTkDY z@hl)Wu)Dc$g+*L=-4U5g0hzEH%`JjduO-tk<>%m{7eLJ2mvlM0RA*FW>F}=*n$ba< z1DZ-r%|JQPp|CNk0*6^c7xvq6h}Ne{V{u#Pe{q@w$nOF1K>iQsfb<%G5>tQzRw6Io z$WoEVkbgYpL`eIHv0FSKQ=_Au{tb0YDdz}(LoS{c1t=jnNHQr1Y;H{7oIwPnXkx%% z1;F=xIF40)Bn`H!XJMFu7=qy()*1$}z$Wl10$^T)ZF@1$tJg~JD}sVhvQi5|fM8+i zjr)8)0Z@(&Ur`^!u1$4gbirvu?m}QgqBR_?@(q0r3A`K0XL}~}0hyd*<1-C%wEO3B z?X?91J?GAz3on52^_;s8O!n|@4d~r}4CuFa6aAnd5ti(-20p#8Nny9@p`T3jz6xB} z_DHr!Ha!fwH_>34msN)KW_9jBSKKCGF2nyCZgVGjLm@ z%Y1@jk@NkC=f^v<0Z|?4<5e}k9BpDA4d%`F!mj#C`@FEDWUh`w_a-Vm0$1F{CG9c- z!;@jPd{V>SWf_v%|?vE!>$f&oG6`9s^6|C+&< z$=@Q|^_|EjMgAQHrNH$HKz3a?Rg#Jfef7egGZGwGM27I#wUk=Of<-Y|j)Qa3hzc@0 z=={Rs#4puGm0qFoKp<4A;qbIhZM>-TYQOJuwS3bqW)$idGV*RuI z?8`R~rR%)$pgKeT+6`A_^5Hm4>b1B}*5_Jy!1cN)_tdATjO#-vq`_E1P*Qc+&LRJR?DdttZqOLzJT%giZY z0rpYlt4zKUoCgdBTb89s+tZGViz6s}gpO=JzHqs&3Y*_k4zxX-5DL0TVY2~<2qu`h z>Ut))&Kw1G?<#JKfGrKt*3m%ff$I?#UUAd9UhrMg@?>Em_&(N^7*w|aCr+_Y>;Z^P z4L@KJ_hsU*I_2i=V2X(s`d9%AB(`5>C{dAv-X$v*)8aPt6uQgw18St+wXOJ`TFLcs zT6$Mjgv_XWx zYu&^6Yu%4322`LnPl?W^xJR=WbbM}t?XsHk?iamUpQxkL6drpu*2kPV0h`iBZ?ao_ z*cD2mA5@Z!1m);2m5POr< z-?K;lAtPr1%Aw}^^&g_mSB{2!7#JZ#hi{szpHe_r#j@=uiT}e>E7bYN!JeQxtAI&a zM09N$dcM|6{ICuB8=BG@zn31Uz9)m#M%q$N-Y?VU>infhaEZfzu^-*E74x{5pdo;c zm5lItR0NR-v`q^LURk~HUFS2np(k5FppEpX9|zz&E-51c=u{~ux(%{g!siXkfiDxQ zZkVi$96nnfQ$KV27}D(yUeakXAo9MPCrIW|YFK%RWpA(220>iA2S6z@tKEEJr+yR#c~GTKod2k+HN&n%A_eof0HRvWbP2a;nUCU`Prc45m{S_((-yxXlVOwka|91w>ep< z{KnpAH?!u~R8z(jw&~QxZ|PfWs4)jOq}siY{}BbAhXt5%`$|7sp0&StMV2<+e2Tv^ z|K#N%FCDX(nXj=Z4ktSL_ZY=t%IyfH-JYkAp8DK!6X-ec!f;9AKhOb00xaD zN6r-hH7f!$mueIVnKOE_lo4Y9nUVitlg$Uk;#kF*wXfH2Z4;DDuvB&G9Wg3bFeHa3 zaqD3qq_x)O7)A1St`bOuBD0cyLWwuJ&*o{y%25b)tVl~O8&ei2fhKKA-)HSJ*6OhxOMAb;}Z{*8FA z$^N0a&4!L_ogZd=6RI6uH8;n}RGE;Y;}H!gLz@4?1G3i@If52ew>e8Gsjk@eOu89j z8@wmVBCzPw;%zKTJvOWX zoUYKY`;mxhlj#}2_yPVfL~*7@hd^-ut;bSt!aO_youJ>~Z1}MK~Lh&sRO!6%T@h?wgZ8;A5v7058Hf}g+)>* zlTv~nX{KNVcim|9Z0#Of{mqF%MAKtZjt8UWBgd{UX_krASUoWHN-jDVo04{ztAoee zCO82A&U#aGL_?$XRaxFOe(X3-sn`jF>H^4(C<_wrmYw`2!T?;pZ7G^CZwF{vpn&QD z4hka@m|6G6%ieZmiG^LG@U{DVhNKy*i?9;@tIg(**GQX`)s>2?4j0UdO zPXYUxX7AhSamp@L+axeI2dgVBZ?zA53PV9}|7a^>PKfQZ zo+%hUMaRH5{~1gj?<|wa$2X9AyDTSBlAO>VYQ_sxLzHZMzt3$G35J`fB=aXzfSCIB zz%2~)I>QWpK~Q|3!-qAO6a+N;D}52s!OKyKwS2?F)<0*?xF$S)utiK2sTKt4&VKM{ zELEj%c016MOC2Ly?aw$)qyl)cPgx6%w11(SIS*ErQ33StG$aaid3+gF;{&9Mh;*@# z5P6Znnk()TQcm04;+nn|udoQUmK@h`$}k8@t;_}XeSYB=e;w_Zm#$&_TI06vspO=X z(a}wRZc2DeI`cD;leGp#qFL}!U8lm$`CD*nl3-Sg`cL)jhkAAHUsp-y{1#=>6!~zOIo=*4>Dp|K5hj&7b z^dg=)J&bLeYf7TzaRTo_GsIsD~+5zg`t=t0^ zL`G`7rr8oX-&}8zy>!PA35nmg5wV*eyg)bkxp8D+#3szEPe}aS+T^s-WLYHYHFGwU zDf#oEE}-!lX_fRPR24a4yu3OLYHc?E9&KBk$2#8pN6(fBboeg^`4{S2z}6vLj2)x^ z$0pJ3OC4E_Diw^VxlwnUe&2_co*A*4-k!-zH9>ZNV%9O1kBPXg%?st>t_p+RU_2z1 zm$|d5sUQbWiv~C3iBXLrvpFE!T`|@H+b*6!t;WMp5mS5*WZ9U+p=J>Po4Q=3@dzNv zRgrks_r@8zG~vrNB8|Ojb8d-? z8ZYB3u}2)MFoiipxK2yYxkAQiu>7^7m1e-g(L8H+f*xB`SW~4tRh35-FPcQxgsy^u zLPr6YpJN|Ux+bq=w;;*!&w0SboQe3*;VKqIIp zEn_nR2()c&v7)!;8+^KlRqcs14oQWf9PQvVGw18MRDfwRSTAm?FzdqbQiz|sY?*Iv zuNXb+K%RAHyoqbQFQUX()DBUKhV?GDVLsjondA?oCnLWPK5G zjX67y+PCd7(`k8xV`_exhzYLp-yC3mfpM8*mUOmE`@)fB>(#L`tgcZ1&0Z4$E-x>Y`$QUP3|A2cW-&iHm?y`qdejwq@}>%c zDk^SLqbT?zAW8_KWu`0>y_;6O{&P7K*Z2Z|zglX~$tnOB2Hk&(-q_QrG!GD3gu*K{ zo3oY5Ji5|jfHP`&;lKd{$sf8s18yjGSyM2hs>M0U#n*LAD~9^gt*;ofd#AWJaZT~* z>EYOA$B4}L7e-|kaf5M2+7yB<0yc3An2u}Mu=}dhh08mOi>hQ_j)fhUKq^JsNv}7j zq}iVy%aBdh(p?|Kvb^9Y)B=hk-TiffHORA}6#N4kJ`Wb&SQIH!Jf;-aD9~U4{mv)9 z{kO$d1W64Tnq&FgfEHk^5}6`JuyC=I_O3e^CVWmc^$SNRCeYv-DE&&&g=4E2q-V#j zb?K>g0t}F3HFxXfEWy9Vo?G;&iyX{Wqi5;@66^rtWyyq0)I{~}PPB8;c9w?0qMmU+ zPaU9ae6U*{%vW@)E~q%XC`Cnt4}9Mubwg)%_DMrUXe^@1WeAae&y`1)g5OfLNg+Un zXhi9&4}$5~q0~*N|E4b4B7kX+L7xd&X$?2XgcnkF)IG8fYii3_rUa>PrpzcF4QO%C zz45H$bkP?ftJ7YnuS_Z6-JQxdHL}l>GGS2zs$$>aXPyq{I1qAVHdv%#*HX#_EK_FwoKM5;L3C^+faM*Y0zA z7<=9TNrwQsgd6n@V_LyQ6Rw5OyoVrT?2()dXon_4AYg5$k-5R;Q~ZtKb+M%aU^3nV zq2f7c>3&gI_V}zxp)JnV@o8&`ndmS3B?n$|Y}rV?u{*Z zH?(L%!Og9*fhF1U4FnUf-whhiE%2UxM?aP_!|!ozKA9eXyv{m^@$@;Ki%KQkNm2Ed zmQP!(^uE}1!&6?#mV2VcqD`m>(wk}Y5;Ci@n#ZyJP?}eoW}og~+`xm|OG`#O6h6xG zo>@>@ogJZ;^_;I6us&qmOZ^kT)5}LFlH^Yb{V543I*Q`i8Y+-w8|Bh$f?}8IDcBtr zDZ&eB&vcxi==_d}j$M8l_w+uM0FM{6#)Fb;!~28 zm}zb$xW19`K~SkFRE5~t@@0-exqHGN@n@ZMQk1|~DFO%=bA28H+S#B?k?;MxU5I;5VS6bPVY%oqaD6Ht{b;PMO+ zU_IBk9ra^<>J9Z`IMMmD{neP8I?qJ~i`}o9d4iKUSL7olvm>h}_}+Y|w_$ZwM09b1 zIK6I#{X_5B{Sw3UVHzfbAC)oKI15)#Rm7lM<#q~RsmFZ>UV|rxRgIr-LrkYipV@?`6515N51^AyIsC?vaL2a-(B$GWocYEuf76sJE#t z@Uq*!G?Q$(NU0LtP-|A+2q&2i;hl4T!*enMXTrjdAJ|KdR-CzPu5lfa&vr>$8c0il z|F~Z#ChV|p`s}i54p$k2Cr}QY$rnh%{aG669{ERcdi=HW1U4O&;@l%c(m{CT30cKn zO#oo(M?uXCkKXG3n#YqiUGfbmNfmdm)5k5YW1Q=H9C#97+xM%l4E6iO)P^a zZgql}XL-GQLxB#)SLa7$u!bG8()tf0x3R_UwVy`CHLxTZ`DDhUrJKave?erl2B4P{ zpU)l)6f4y1d>D&x5=$5CxzYJVq=@A><8(+X28QGHB`9j=wZK~r@TFVLq2;^`kdRPI zXC2Bl$cUjTFcRkfkFsxtIhp$7ItGx|z%6jcQ|RM{_(+Y>4Hk;0$TX;fESsJ-gDvsF zm9aF%M|C3uXY^LxLK&6XC#x&g(**da!Dar?AxYN^O6eNcC|hm|tcY5|gJwV8!GvfA zgfH!O-5jEq7yfqCAlo#1{`LCtrKg*>clJQ=6$hL=VBwqa|0C-^;HiH9|8cyeBFWxF z_7<`;viIIQL{_plDY6OKdnMZ`dn+d-4$9ugUdP_+e;w-eeSd!c+fCh~$MqQZ z$Nm1eFX*7Bkk}E9O z@|HRNX-mdYd!fXLd+YJwpDJ5k={DJE6AB^Q-pA`gwcpjEaI*PnXl~tl|CD(=_CsiQ zg7zhE46NCQlFaXDgj1WTP&@jpu&TVl$EfaG`ts>7;z9E|w+$|13YtsO4T!|FgyzQ` zom<7q%LB8~6r$#{!ErAnK1F~z^z5;vdyAXnyzqAmI}QoUgZ8LJT7|{6^Fq5aX0T>a z^35vyNjxRenghKI*{+POAI`FZ-rxFRMvNj}K9rw&Nm)~^R%_$YFtjcm`k1)y&H}70 z3WBhP$%}8d$52uOX2NiNyyW(jq zY?N2(1J)5F0;-O)S3L?>m?+C}5f>O`RkKtkrWkP`s?f;iPv3m}^B7F$G;#RlK`9j; zUtzB%w`1S;8T|x{GIwUe)FBOC~h-#gjos!Hv;h~*VDP%BpZ#A|WX}YdMBN%nvw?xYMXsYHfaN zm5f>R@Y(1;!Y`IU94e~NYHPix_*O})eCk!ACUCEZ6kl34#5A*t zR3nW0vTl&F9Xg*a;hDd>H|{(#qVrDNbthQ=5!uCiT3*TXWF~k zwAWiXMn|?&T-wdvYhI<)SI1|Eo%bA$ukg@jlmv@+_~4c{f_mLqxFg5xIK?kLlz2Tu z(D1Tsartci2Gmod%mn(OKiy(;u&AGSQmCb5#D6~UVXenX$z0Q;TUI%`{R2fj{>MG) zCDSvC+%806HRs28Qzn8?PL-f9gWEov+eN!!4-j0Q#e@|7s~1tg@WdVC!>YE|f9Lx4 zvLOyybtn_}N%(wXf_2OHGhU9N35^0i(V`TRJQn_jBO8gcr7DtBP}my0IzDG}bN|N$ z0LaB&T>e7^jAu?iD}w;YHDIU>5KjedJ2Cc{2iXwcW=j$f##M&AJGZ(%tL?In+X`Kd zy+=1U*-0vW)%1f@r@|diabmn=v>Tg3jYxlUDa`>RHgQN${-tHK!nd@FNts zQ@#-A|CA}nUIPY_Sf7dd7n10VMQuKLM6$+9KaT5^pJ%8PO|7T%^2-4KO5KJUEoyk4 zhFofV#+vuXFM;{T^Dw%JUQ~FN@QqvI1tGf4<;G8Kre}q+S&0wRMwy^2QRh+SOiR8w z*2FpwBJagxN&EN>(+0w!H9%&=pnAMJ_iHEtw`l`o+=Sytpjiv-kt*KfQhwFEx~uUx zs6+vnsaRe2azH6}%!m%{R}1}FHU$P^WO-|JdZo|`!SZM+0XAmM@LF)r(4DN{5mtOwPmJEIySb*FqC<7Tiq z86T>(GMS4%WA30a=Qz_h9px%dn;>!gW$+2)eA>Ze4m5qEnlH~`VtX?mg}`su6tO$H0fP~B(g-+Oy0I}&#qNFzuT8>FRInc5oyOEM0pQd z)Ty`v!Wn)<8lWfNc*B=nt2lbk!}Vy55qm|khzPxk#&{zxIkM?b;okaI>cINerjy3;nIaTwHW;!-U)r zp&$nLJ;`rSWwqEE-PN%rE!JXmBl6)%F5=>tFkYd+fi}KioDNrlxm6JYI=F|H`N`3xLjnz)j{%B9OE`JNugONs4g@T*+5T zw>VyZNngF*a&sHjtZ#`9&G`hd-^!Wi|0CE&9#Tb+$3AySxvS1N6cI)tM`eXuQ9!_8 zJ>K~2*%0)xHr8r9b3gtEa+llIbDy(yTr3z%-JuQB* zF$N5#Vx}pGOj8Bb6@ve!sep$4J&kT&Z^R%Mp9E+`OHy&4=Uw7ud>bL~Z6YLVc4m;t`6>oXjM=`ayro_r4J+{q?ik%kBDbhSr{Es{k2VRoiFDa| z8+Gj4qa3rNYT55<_?%wI
i6NE#M%+vfuF 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 Date: Mon, 22 Jul 2024 23:55:37 +0000 Subject: [PATCH 25/26] Optimised images with calibre/image-actions --- ...agement_architecture_vmo-architecture.webp | Bin 123250 -> 120760 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/static/assets/docs/images/vm-management_architecture_vmo-architecture.webp b/static/assets/docs/images/vm-management_architecture_vmo-architecture.webp index d97c7ed0b4e65eadfee5b7231390c48d68c13ea9..4fb722e1b0cded6069dcdffe5047689776c00039 100644 GIT binary patch literal 120760 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 G*8c!p*BmPV literal 123250 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 JKEnUY`X4SzYDxeA From a099e2d4169920c3486d3ed1dcef6f827bb39481 Mon Sep 17 00:00:00 2001 From: Lenny Chen Date: Tue, 23 Jul 2024 09:08:58 -0700 Subject: [PATCH 26/26] docs: fix broken admonition --- docs/docs-content/vm-management/environment-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs-content/vm-management/environment-setup.md b/docs/docs-content/vm-management/environment-setup.md index 199565f1bb..c524d76da3 100644 --- a/docs/docs-content/vm-management/environment-setup.md +++ b/docs/docs-content/vm-management/environment-setup.md @@ -45,7 +45,7 @@ as worker nodes. The CPU and RAM requirements for control plane nodes increase with the number of worker nodes and namespaces in the cluster. Refer to the following table for guidance on control plane node sizing. -::: warning +:::warning These recommendations assume that each cluster has at least three control plane nodes.

M1gJBP7)@ZEy&waiymg2XA`D=w-u$W?)D4^LDJ- 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 From 9916867bb7d7041dce3513ff10ff54976f7f4595 Mon Sep 17 00:00:00 2001 From: "vault-token-factory-spectrocloud[bot]" <133815545+vault-token-factory-spectrocloud[bot]@users.noreply.github.com> Date: Fri, 19 Jul 2024 21:20:31 +0000 Subject: [PATCH 14/26] Optimised images with calibre/image-actions --- ...agement_architecture_vmo-architecture.webp | Bin 210411 -> 54206 bytes .../docs/images/vm-mangement_vmo-diagram.webp | Bin 191833 -> 27744 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/static/assets/docs/images/vm-management_architecture_vmo-architecture.webp b/static/assets/docs/images/vm-management_architecture_vmo-architecture.webp index e30915ec7fd1f041dc547631f8b2793d0ac91175..15392e2e18f97aa7dec315a744aecde6a31eb591 100644 GIT binary patch literal 54206 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

lTbVS~oFVh!m?gPo)UeIHjh*P} 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 z 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